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

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



On 05/04/2015 10:41 PM, Xu, Quan wrote:

-----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

I guess it would be ok.

   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®.