[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 3/6] Qemu-Xen-vTPM: Xen frontend driver infra
From: |
Xu, Quan |
Subject: |
Re: [Qemu-devel] [PATCH v6 3/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure |
Date: |
Mon, 11 May 2015 12:56:29 +0000 |
> -----Original Message-----
> From: Stefan Berger [mailto:address@hidden
> Sent: Monday, May 04, 2015 11:36 PM
> To: Xu, Quan; address@hidden; address@hidden
> Cc: address@hidden; address@hidden; address@hidden;
> address@hidden
> Subject: Re: [PATCH v6 3/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure
>
> On 05/04/2015 03:22 AM, Quan Xu wrote:
> > This patch adds infrastructure for xen front drivers living in qemu,
> > so drivers don't need to implement common stuff on their own. It's
> > mostly xenbus management stuff: some functions to access XenStore,
> > setting up XenStore watches, callbacks on device discovery and state
> > changes, and handle event channel between the virtual machines.
> >
> > Call xen_fe_register() function to register XenDevOps, and make sure,
> > [...]
> > 3 = ""
> > [...]
> > device = "" (frontend device, the backend is running in QEMU/.etc)
> > vkbd = ""
> > [...]
> > vif = ""
> > [...]
> >
> > ..
> >
> > (QEMU) xen_vtpmdev_ops is initialized with the following process:
> > xen_hvm_init()
> > [...]
> > -->xen_fe_register("vtpm", ...)
> > -->xenstore_fe_scan()
> > -->xen_fe_try_init(ops)
> > --> XenDevOps.init()
> > -->xen_fe_get_xendev()
> > --> XenDevOps.alloc()
> > -->xen_fe_check()
> > -->xen_fe_try_initialise()
> > --> XenDevOps.initialise()
> > -->xen_fe_try_connected()
> > --> XenDevOps.connected()
> > -->xs_watch()
> > [...]
> >
> > Signed-off-by: Quan Xu <address@hidden>
> >
> > --Changes in v6:
> > -Replace buf_size with PAGE_SIZE and use length rather than
> > shr->length.
> > ---
> > hw/tpm/Makefile.objs | 1 +
> > hw/tpm/xen_vtpm_frontend.c | 315
> +++++++++++++++++++++++++++++++++++++++++++
> > hw/xen/xen_frontend.c | 20 +++
> > include/hw/xen/xen_backend.h | 5 +
> > include/hw/xen/xen_common.h | 6 +
> > xen-hvm.c | 5 +
> > 6 files changed, 352 insertions(+)
> > create mode 100644 hw/tpm/xen_vtpm_frontend.c
> >
> > diff --git a/hw/tpm/Makefile.objs b/hw/tpm/Makefile.objs index
> > 99f5983..57919fa 100644
> > --- a/hw/tpm/Makefile.objs
> > +++ b/hw/tpm/Makefile.objs
> > @@ -1,2 +1,3 @@
> > common-obj-$(CONFIG_TPM_TIS) += tpm_tis.o
> > common-obj-$(CONFIG_TPM_PASSTHROUGH) += tpm_passthrough.o
> > +common-obj-$(CONFIG_TPM_XENSTUBDOMS) += xen_vtpm_frontend.o
> > diff --git a/hw/tpm/xen_vtpm_frontend.c b/hw/tpm/xen_vtpm_frontend.c
> > new file mode 100644 index 0000000..d6e7cc6
> > --- /dev/null
> > +++ b/hw/tpm/xen_vtpm_frontend.c
> > @@ -0,0 +1,315 @@
> > +/*
> > + * Connect to Xen vTPM stubdom domain
> > + *
> > + * Copyright (c) 2015 Intel Corporation
> > + * Authors:
> > + * Quan Xu <address@hidden>
> > + *
> > + * This library is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU Lesser General Public
> > + * License as published by the Free Software Foundation; either
> > + * version 2 of the License, or (at your option) any later version.
> > + *
> > + * This library is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> > + * Lesser General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU Lesser General Public
> > + * License along with this library; if not, see
> > +<http://www.gnu.org/licenses/> */
> > +
> > +#include <stdio.h>
> > +#include <stdlib.h>
> > +#include <stdarg.h>
> > +#include <string.h>
> > +#include <unistd.h>
> > +#include <signal.h>
> > +#include <inttypes.h>
> > +#include <time.h>
> > +#include <fcntl.h>
> > +#include <errno.h>
> > +#include <sys/ioctl.h>
> > +#include <sys/types.h>
> > +#include <sys/stat.h>
> > +#include <sys/mman.h>
> > +#include <sys/uio.h>
> > +
> > +#include "hw/hw.h"
> > +#include "block/aio.h"
> > +#include "hw/xen/xen_backend.h"
> > +
> > +#ifndef XS_STUBDOM_VTPM_ENABLE
> > +#define XS_STUBDOM_VTPM_ENABLE "1"
> > +#endif
> > +
> > +#ifndef PAGE_SIZE
> > +#define PAGE_SIZE 4096
> > +#endif
>
> You should be able to use TARGET_PAGE_SIZE from exec/cpu-all.h I think.
>
> With this change: Reviewed-by: Stefan Berger <address@hidden>
Stefan,
If I add #include "exec/cpu-all.h" in hw/tpm/xen_vtpm_frontend.c, there
are some errors as following:
++++ error ++++
In file included from hw/tpm/xen_vtpm_frontend.c:41:0:
/root/qemu2/include/exec/cpu-all.h:42:46: error: attempt to use poisoned
"TARGET_WORDS_BIGENDIAN"
/root/qemu2/include/exec/cpu-all.h:46:8: error: attempt to use poisoned
"BSWAP_NEEDED"
/root/qemu2/include/exec/cpu-all.h:109:5: error: "TARGET_LONG_SIZE" is not
defined [-Werror=undef]
/root/qemu2/include/exec/cpu-all.h:122:13: error: attempt to use poisoned
"TARGET_WORDS_BIGENDIAN"
/root/qemu2/include/exec/cpu-all.h:174:9: error: attempt to use poisoned
"TARGET_PAGE_SIZE"
/root/qemu2/include/exec/cpu-all.h:174:32: error: attempt to use poisoned
"TARGET_PAGE_BITS"
/root/qemu2/include/exec/cpu-all.h:175:9: error: attempt to use poisoned
"TARGET_PAGE_MASK"
/root/qemu2/include/exec/cpu-all.h:175:28: error: attempt to use poisoned
"TARGET_PAGE_SIZE"
/root/qemu2/include/exec/cpu-all.h:176:9: error: attempt to use poisoned
"TARGET_PAGE_ALIGN"
/root/qemu2/include/exec/cpu-all.h:176:44: error: attempt to use poisoned
"TARGET_PAGE_SIZE"
/root/qemu2/include/exec/cpu-all.h:176:68: error: attempt to use poisoned
"TARGET_PAGE_MASK"
/root/qemu2/include/exec/cpu-all.h:211:1: error: attempt to use poisoned
"CPUArchState"
/root/qemu2/include/exec/cpu-all.h:211:1: error: unknown type name
'CPUArchState'
/root/qemu2/include/exec/cpu-all.h:211:24: error: attempt to use poisoned
"CPUArchState"
/root/qemu2/include/exec/cpu-all.h:211:24: error: unknown type name
'CPUArchState'
/root/qemu2/include/exec/cpu-all.h:222:9: error: attempt to use poisoned
"CPU_INTERRUPT_HARD"
/root/qemu2/include/exec/cpu-all.h:226:9: error: attempt to use poisoned
"CPU_INTERRUPT_EXITTB"
/root/qemu2/include/exec/cpu-all.h:229:9: error: attempt to use poisoned
"CPU_INTERRUPT_HALT"
/root/qemu2/include/exec/cpu-all.h:232:9: error: attempt to use poisoned
"CPU_INTERRUPT_DEBUG"
[....]
+++ error +++
------ ---
Could I replace PAGE_SIZE with VTPM_ PAGE_SIZE, instead of TARGET_PAGE_SIZE
from exec/cpu-all.h??
+#ifndef VTPM_PAGE_SIZE
+#define VTPM_PAGE_SIZE 4096
+#endif
+ [...]VTPM_PAGE_SIZE ...
I send out v7 today. Any comment, I can continue to enhance it. thanks.
Thanks
Quan Xu
>
> Regards,
> Stefan
- [Qemu-devel] [PATCH v6 0/6] QEMU:Xen stubdom vTPM for HVM virtual machine(QEMU Part), Quan Xu, 2015/05/04
- [Qemu-devel] [PATCH v6 1/6] Qemu-Xen-vTPM: Support for Xen stubdom vTPM command line options, Quan Xu, 2015/05/04
- [Qemu-devel] [PATCH v6 3/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure, Quan Xu, 2015/05/04
- Re: [Qemu-devel] [PATCH v6 3/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure, Xu, Quan, 2015/05/04
- Re: [Qemu-devel] [PATCH v6 3/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure, Stefan Berger, 2015/05/04
- Re: [Qemu-devel] [PATCH v6 3/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure,
Xu, Quan <=
- Re: [Qemu-devel] [PATCH v6 3/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure, Stefan Berger, 2015/05/11
- Re: [Qemu-devel] [PATCH v6 3/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure, Xu, Quan, 2015/05/11
Re: [Qemu-devel] [PATCH v6 3/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure, Stefano Stabellini, 2015/05/08
[Qemu-devel] [PATCH v6 4/6] Qemu-Xen-vTPM: Move tpm_passthrough_is_selftest() into tpm_util.c, Quan Xu, 2015/05/04
[Qemu-devel] [PATCH v6 2/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure, Quan Xu, 2015/05/04