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

Re: [Xen-devel] [PATCH v3 0/5] QEMU:Xen stubdom vTPM for HVM virtual machine




> -----Original Message-----
> From: Stefano Stabellini [mailto:stefano.stabellini@xxxxxxxxxxxxx]
> Sent: Tuesday, January 20, 2015 1:53 AM
> To: Stefano Stabellini
> Cc: Xu, Quan; qemu-devel@xxxxxxxxxx; xen-devel@xxxxxxxxxxxxx;
> lcapitulino@xxxxxxxxxx; eblake@xxxxxxxxxx; armbru@xxxxxxxxxx;
> aliguori@xxxxxxxxxx; pbonzini@xxxxxxxxxx
> Subject: Re: [PATCH v3 0/5] QEMU:Xen stubdom vTPM for HVM virtual machine
> 
> On Mon, 19 Jan 2015, Stefano Stabellini wrote:
> > Hi Quan,
> > thanks for the update: this version is much much better than the
> > previous one.
> >
> > I am not familiar enough with QAPI, HMP and TPM to review the first
> > and the last patches though.
> 
> I meant the first and the fourth. The last one is fine.
> 
Stefano,
   Thanks, I appreciate your help. I will send out v4 ASAP.
BTW, the XenStore will be modified as previous emails, which is mentioned and 
fed back
From Xen community. 
For example:

Domain 0: runs QEMU for guest A
Domain 1: vtpmmgr
Domain 2: vTPM for guest A
Domain 3: HVM guest A

I will design XenStore as following:

## XenStore >> ###
 local = ""
   domain = ""
    0 = ""
     frontend = ""
      vtpm = ""
       2 = ""
        0 = ""
         backend = "/local/domain/2/backend/vtpm/0/0"
         backend-id = "2"
         state = "*"
         handle = "0"
         domain = "Domain3's name"
         ring-ref = "*"
         event-channel = "*"
         feature-protocol-v2 = "1"
     backend = ""
      qdisk = ""
       [...]
      console = ""
      vif = ""
       [...]
    2 = ""
     [...]
     backend = ""
      vtpm = ""
       0 = ""
        0 = ""
         frontend = "/local/domain/0/frontend/vtpm/2/0"
         frontend-id = "0" ('0', frontend is running in Domain-0)
         [...]
    3 = ""
     [...]
     device = "" (frontend device, the backend is running in QEMU/.etc)
      vkbd = ""
       [...]
      vif = ""
       [...]
 ## XenStore << ##

Add [domain = "Domain3's name"] under /local/domain/0/frontend/vtpm/2/0.
Then, 'xs_directory()' can help to find out which domain is the backend. It can 
be of low efficiency.


-Quan
> 
> > Cheers,
> >
> > Stefano
> >
> >
> > On Tue, 30 Dec 2014, Quan Xu wrote:
> > > *INTRODUCTION*
> > > The goal of virtual Trusted Platform Module (vTPM) is to provide a TPM
> functionality to virtual machines (Fedora, Ubuntu, Redhat, Windows .etc). This
> allows programs to interact with a TPM in a virtual machine the same way they
> interact with a TPM on the physical system. Each virtual machine gets its own
> unique, emulated, software TPM. Each major component of vTPM is
> implemented as a stubdom, providing secure separation guaranteed by the
> hypervisor.
> > >
> > > The vTPM stubdom is a Xen mini-OS domain that emulates a TPM for the
> virtual machine to use. It is a small wrapper around the Berlios TPM emulator.
> TPM commands are passed from mini-os TPM backend driver.
> > >
> > > *ARCHITECTURE*
> > > The architecture of stubdom vTPM for HVM virtual machine:
> > >
> > >             +--------------------+
> > >             | Windows/Linux DomU | ...
> > >             |        |  ^        |
> > >             |        v  |        |
> > >             |  Qemu tpm1.2 Tis   |
> > >             |        |  ^        |
> > >             |        v  |        |
> > >             | XenStubdoms backend|
> > >             +--------------------+
> > >                      |  ^
> > >                      v  |
> > >             +--------------------+
> > >             |      XenDevOps     |
> > >             +--------------------+
> > >                      |  ^
> > >                      v  |
> > >             +--------------------+
> > >             |  mini-os/tpmback   |
> > >             |        |  ^        |
> > >             |        v  |        |
> > >             |   vtpm-stubdom     | ...
> > >             |        |  ^        |
> > >             |        v  |        |
> > >             |  mini-os/tpmfront  |
> > >             +--------------------+
> > >                      |  ^
> > >                      v  |
> > >             +--------------------+
> > >             |  mini-os/tpmback   |
> > >             |        |  ^        |
> > >             |        v  |        |
> > >             |  vtpmmgr-stubdom   |
> > >             |        |  ^        |
> > >             |        v  |        |
> > >             |  mini-os/tpm_tis   |
> > >             +--------------------+
> > >                      |  ^
> > >                      v  |
> > >             +--------------------+
> > >             |    Hardware TPM    |
> > >             +--------------------+
> > >
> > >
> > >
> > >  * Windows/Linux DomU:
> > >     The HVM based guest that wants to use a vTPM. There may be
> > >     more than one of these.
> > >
> > >  * Qemu tpm1.2 Tis:
> > >     Implementation of the tpm1.2 Tis interface for HVM virtual
> > >     machines. It is Qemu emulation device.
> > >
> > >  * vTPM xenstubdoms driver:
> > >     Qemu vTPM driver. This driver provides vtpm initialization
> > >     and sending data and commends to a para-virtualized vtpm
> > >     stubdom.
> > >
> > >  * XenDevOps:
> > >     Register Xen stubdom vTPM frontend driver, and transfer any
> > >     request/repond between TPM xenstubdoms driver and Xen vTPM
> > >     stubdom. Facilitate communications between Xen vTPM stubdom
> > >     and vTPM xenstubdoms driver.
> > >
> > >  * mini-os/tpmback:
> > >     Mini-os TPM backend driver. The Linux frontend driver connects
> > >     to this backend driver to facilitate communications between the
> > >     Linux DomU and its vTPM. This driver is also used by vtpmmgr
> > >     stubdom to communicate with vtpm-stubdom.
> > >
> > >  * vtpm-stubdom:
> > >     A mini-os stub domain that implements a vTPM. There is a
> > >     one to one mapping between running vtpm-stubdom instances and
> > >     logical vtpms on the system. The vTPM Platform Configuration
> > >     Registers (PCRs) are all initialized to zero.
> > >
> > >  * mini-os/tpmfront:
> > >     Mini-os TPM frontend driver. The vTPM mini-os domain vtpm
> > >     stubdom uses this driver to communicate with vtpmmgr-stubdom.
> > >     This driver could also be used separately to implement a mini-os
> > >     domain that wishes to use a vTPM of its own.
> > >
> > >  * vtpmmgr-stubdom:
> > >     A mini-os domain that implements the vTPM manager. There is only
> > >     one vTPM manager and it should be running during the entire lifetime
> > >     of the machine. vtpmmgr domain securely stores encryption keys for
> > >     each of the vtpms and accesses to the hardware TPM to get the root of
> > >     trust for the entire system.
> > >
> > >  * mini-os/tpm_tis:
> > >     Mini-os TPM version 1.2 TPM Interface Specification (TIS) driver.
> > >     This driver used by vtpmmgr-stubdom to talk directly to the hardware
> > >     TPM. Communication is facilitated by mapping hardware memory pages
> > >     into vtpmmgr stubdom.
> > >
> > >  * Hardware TPM: The physical TPM 1.2 that is soldered onto the
> motherboard.
> > >
> > > --Changes in v3:
> > >     -New xen_frontend.c file
> > >     -Adjust the format of command line options
> > >     -Move xenbus_switch_state() to xen_frontend.c
> > >     -Move xen_stubdom_be() to xenstore_fe_read_be_str()
> > >     -Move *_stubdom_*() to *_fe_*()
> > >     -Move xen_stubdom_vtpm.c to xen_vtpm_frontend.c
> > >     -Read Xen vTPM status via XenStore
> > >     -Call vtpm_send() and vtpm_recv() directly.
> > >
> > > --Changes in v2:
> > >     -adding xen_fe_register() that handle any Xen PV frontend registration
> > >     -remove a private structure 'QEMUBH'
> > >     -change version number to 2.3 in qapi-schema.json
> > >     -move hw/xen/xen_stubdom_vtpm.c to
> hw/tpm/xen_stubdom_vtpm.c
> > >
> > > Quan Xu (5):
> > >   Qemu-Xen-vTPM: Support for Xen stubdom vTPM command line options
> > >   Qemu-Xen-vTPM: Xen frontend driver infrastructure
> > >   Qemu-Xen-vTPM: Register Xen stubdom vTPM frontend driver
> > >   Qemu-Xen-vTPM: Qemu vTPM xenstubdoms backen.
> > >   Qemu-Xen-vTPM: QEMU machine class is initialized before tpm_init()
> > >
> > >  configure                    |  14 ++
> > >  hmp.c                        |   7 +
> > >  hw/tpm/Makefile.objs         |   1 +
> > >  hw/tpm/tpm_xenstubdoms.c     | 245
> ++++++++++++++++++++++++++++++++
> > >  hw/tpm/xen_vtpm_frontend.c   | 264
> +++++++++++++++++++++++++++++++++++
> > >  hw/xen/Makefile.objs         |   2 +-
> > >  hw/xen/xen_backend.c         |  45 +++++-
> > >  hw/xen/xen_frontend.c        | 323
> +++++++++++++++++++++++++++++++++++++++++++
> > >  include/hw/xen/xen_backend.h |  19 +++
> > >  include/hw/xen/xen_common.h  |   6 +
> > >  qapi-schema.json             |  19 ++-
> > >  qemu-options.hx              |  13 +-
> > >  tpm.c                        |   7 +-
> > >  vl.c                         |  16 ++-
> > >  xen-hvm.c                    |  16 +++
> > >  15 files changed, 983 insertions(+), 14 deletions(-)  create mode
> > > 100644 hw/tpm/tpm_xenstubdoms.c  create mode 100644
> > > hw/tpm/xen_vtpm_frontend.c  create mode 100644
> hw/xen/xen_frontend.c
> > >
> > > --
> > > 1.8.3.2
> > >
> >

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