[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [Qemu-devel] [PATCH v5 4/6] Qemu-Xen-vTPM: Qemu vTPM xenstubdoms backen.
> -----Original Message----- > From: Stefan Berger [mailto:stefanb@xxxxxxxxxxxxxxxxxx] > Sent: Wednesday, April 15, 2015 10:50 PM > To: Xu, Quan; stefano.stabellini@xxxxxxxxxxxxx; eblake@xxxxxxxxxx > Cc: wei.liu2@xxxxxxxxxx; qemu-devel@xxxxxxxxxx; xen-devel@xxxxxxxxxxxxx; > aliguori@xxxxxxxxxx; pbonzini@xxxxxxxxxx; dgdegra@xxxxxxxxxxxxx > Subject: Re: [Qemu-devel] [PATCH v5 4/6] Qemu-Xen-vTPM: Qemu vTPM > xenstubdoms backen. > > On 04/10/2015 02:59 AM, Quan Xu wrote: > > This Patch provides the glue for the TPM_TIS(Qemu frontend) to Xen > > stubdom vTPM domain that provides the actual TPM functionality. It > > sends data and TPM commends with xen_vtpm_frontend. It is similar as > > another two vTPM backens: > > *vTPM passthrough backen Since QEMU 1.5. > > *vTPM libtpms-based backen. > > > > Some details: > > This part of the patch provides support for the spawning of a thread > > that will interact with stubdom vTPM domain by the xen_vtpm_frontend. > > It expects a signal from the frontend to wake and pick up the TPM > > command that is supposed to be processed and delivers the response > > packet using a callback function provided by the frontend. > > > > The backend connects itself to the frontend by filling out an > > interface structure with pointers to the function implementing support > > for various operations. > > > > (QEMU) vTPM XenStubdoms backen is initialized by Qemu command line > options, > > "-tpmdev xenstubdoms,id=xenvtpm0 -device > tpm-tis,tpmdev=xenvtpm0" > > > > Signed-off-by: Quan Xu <quan.xu@xxxxxxxxx> > > > > --Changes in v5: > > -comments enhancement. > > --- > > hw/tpm/Makefile.objs | 2 +- > > hw/tpm/tpm_xenstubdoms.c | 256 > +++++++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 257 insertions(+), 1 deletion(-) > > create mode 100644 hw/tpm/tpm_xenstubdoms.c > > > > diff --git a/hw/tpm/Makefile.objs b/hw/tpm/Makefile.objs index > > 57919fa..190e776 100644 > > --- a/hw/tpm/Makefile.objs > > +++ b/hw/tpm/Makefile.objs > > @@ -1,3 +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 > > +common-obj-$(CONFIG_TPM_XENSTUBDOMS) += tpm_xenstubdoms.o > > +xen_vtpm_frontend.o > > diff --git a/hw/tpm/tpm_xenstubdoms.c b/hw/tpm/tpm_xenstubdoms.c new > > file mode 100644 index 0000000..3d046fc > > --- /dev/null > > +++ b/hw/tpm/tpm_xenstubdoms.c > > @@ -0,0 +1,256 @@ > > +/* > > + * Xen Stubdom vTPM driver > > + * > > + * 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 <dirent.h> > > +#include "qemu-common.h" > > +#include "qapi/error.h" > > +#include "qemu/sockets.h" > > +#include "qemu/log.h" > > +#include "sysemu/tpm_backend.h" > > +#include "tpm_int.h" > > +#include "hw/hw.h" > > +#include "hw/i386/pc.h" > > +#include "hw/xen/xen_backend.h" > > +#include "sysemu/tpm_backend_int.h" > > +#include "tpm_tis.h" > > + > > +#ifdef DEBUG_TPM > > +#define DPRINTF(fmt, ...) \ > > + do { fprintf(stderr, fmt, ## __VA_ARGS__); } while (0) #else > > +#define DPRINTF(fmt, ...) \ > > + do { } while (0) > > +#endif > > + > > +#define TYPE_TPM_XENSTUBDOMS "tpm-xenstubdoms" > > +#define TPM_XENSTUBDOMS(obj) \ > > + OBJECT_CHECK(TPMXenstubdomsState, (obj), > TYPE_TPM_XENSTUBDOMS) > > + > > +static const TPMDriverOps tpm_xenstubdoms_driver; > > + > > +/* Data structures */ > > +typedef struct TPMXenstubdomsThreadParams { > > + TPMState *tpm_state; > > + TPMRecvDataCB *recv_data_callback; > > + TPMBackend *tb; > > +} TPMXenstubdomsThreadParams; > > + > > +struct TPMXenstubdomsState { > > + TPMBackend parent; > > + TPMBackendThread tbt; > > + TPMXenstubdomsThreadParams tpm_thread_params; > > + bool had_startup_error; > > +}; > > + > > +typedef struct TPMXenstubdomsState TPMXenstubdomsState; > > + > > +/* Functions */ > > +static void tpm_xenstubdoms_cancel_cmd(TPMBackend *tb); > > + > > +static int tpm_xenstubdoms_unix_transfer(const TPMLocality > > +*locty_data) { > > + size_t rlen; > > + struct XenDevice *xendev; > > + int ret; > > + > > + xendev = xen_find_xendev("vtpm", xen_domid, xenstore_dev); > > + if (xendev == NULL) { > > + xen_be_printf(xendev, 0, "Can not find vtpm device.\n"); > > + return -1; > > + } > > + > > + ret = vtpm_send(xendev, locty_data->w_buffer.buffer, > > + locty_data->r_buffer.size, locty_data->w_offset); > > + if (ret < 0) { > > + xen_be_printf(xendev, 0, "Can not send vtpm command.\n"); > > + return -1; > > + } > > + > > + vtpm_recv(xendev, locty_data->r_buffer.buffer, > locty_data->r_buffer.size, > > + &rlen); > > + return 0; > > +} > > + > > +static void tpm_xenstubdoms_worker_thread(gpointer data, > > + gpointer user_data) { > > + TPMXenstubdomsThreadParams *thr_parms = user_data; > > + TPMBackendCmd cmd = (TPMBackendCmd)data; > > + > > + switch (cmd) { > > + case TPM_BACKEND_CMD_PROCESS_CMD: > > + > tpm_xenstubdoms_unix_transfer(thr_parms->tpm_state->locty_data); > > + thr_parms->recv_data_callback(thr_parms->tpm_state, > > + > thr_parms->tpm_state->locty_number, > > + false); > > Didn't look at this before. I still think you should reorder the patches. I have rebased these patches against QEMU upstream in v5, but I didn't mention it. I will go through these patches. Quan > > Rest looks good. > > Stefan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |