qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]