[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1/6] vTPM: event channel bind interdomain with para/hvm virtual machine
Signed-off-by: Quan Xu <quan.xu@xxxxxxxxx> --- extras/mini-os/include/tpmback.h | 3 +++ extras/mini-os/tpmback.c | 20 +++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/extras/mini-os/include/tpmback.h b/extras/mini-os/include/tpmback.h index 4408986..2618098 100644 --- a/extras/mini-os/include/tpmback.h +++ b/extras/mini-os/include/tpmback.h @@ -41,6 +41,9 @@ #ifndef TPMBACK_H #define TPMBACK_H +#define T_DOMAIN_TYPE_HVM 1 +#define T_DOMAIN_TYPE_PV 2 + struct tpmcmd { domid_t domid; /* Domid of the frontend */ uint8_t locality; /* Locality requested by the frontend */ diff --git a/extras/mini-os/tpmback.c b/extras/mini-os/tpmback.c index 00b66e8..d76e05e 100644 --- a/extras/mini-os/tpmback.c +++ b/extras/mini-os/tpmback.c @@ -555,7 +555,7 @@ int connect_fe(tpmif_t* tpmif) { char path[512]; char* err, *value; - uint32_t domid; + uint32_t domid, domtype; grant_ref_t ringref; evtchn_port_t evtchn; @@ -608,14 +608,28 @@ int connect_fe(tpmif_t* tpmif) } free(value); - domid = tpmif->domid; + /* get the domain type*/ + snprintf(path, 512, "%s/domain-type", tpmif->fe_path); + if ((err = xenbus_read(XBT_NIL, path, &value))) { + TPMBACK_ERR("xenbus_read(%s) Error = %s", path, err); + free(err); + return -1; + } + if (sscanf(value, "%d", &domtype) != 1) { + TPMBACK_ERR("Non integer value (%s) \n", value); + free(value); + return -1; + } + + printk("domtype = %d \n",domtype); + domid = (domtype == T_DOMAIN_TYPE_HVM) ? 0 : tpmif->domid; if((tpmif->page = gntmap_map_grant_refs(>pmdev.map, 1, &domid, 0, &ringref, PROT_READ | PROT_WRITE)) == NULL) { TPMBACK_ERR("Failed to map grant reference %u/%u\n", (unsigned int) tpmif->domid, tpmif->handle); return -1; } /*Bind the event channel */ - if((evtchn_bind_interdomain(tpmif->domid, evtchn, tpmback_handler, tpmif, &tpmif->evtchn))) + if((evtchn_bind_interdomain(domid, evtchn, tpmback_handler, tpmif, &tpmif->evtchn))) { TPMBACK_ERR("%u/%u Unable to bind to interdomain event channel!\n", (unsigned int) tpmif->domid, tpmif->handle); goto error_post_map; -- 1.8.3.2 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |