[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v6 3/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure




> -----Original Message-----
> From: Stefan Berger [mailto:stefanb@xxxxxxxxxxxxxxxxxx]
> Sent: Monday, May 04, 2015 11:36 PM
> To: Xu, Quan; stefano.stabellini@xxxxxxxxxxxxx; eblake@xxxxxxxxxx
> Cc: qemu-devel@xxxxxxxxxx; wei.liu2@xxxxxxxxxx; dgdegra@xxxxxxxxxxxxx;
> xen-devel@xxxxxxxxxxxxx
> 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 <quan.xu@xxxxxxxxx>
> >
> > --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 <quan.xu@xxxxxxxxx>
> > + *
> > + * 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 <stefanb@xxxxxxxxxxxxxxxxxx>
> 


Stefan, thanks.
I will use TARGET_PAGE_SIZE from exec/cpu-all.h in next version.
Could I redefine PAGE_SIZE as kvm-all.c?
+#define PAGE_SIZE TARGET_PAGE_SIZE


thanks
Quan


> Regards,
>      Stefan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.