[prev in list] [next in list] [prev in thread] [next in thread]
List: xen-devel
Subject: [Xen-devel] [PATCH v2 1/5] vTPM: event channel bind interdomain with para/hvm virtual machine
From: Quan Xu <quan.xu () intel ! com>
Date: 2014-12-31 4:44:54
Message-ID: 1420001094-23966-1-git-send-email-quan.xu () intel ! com
[Download RAW message or body]
Signed-off-by: Quan Xu <quan.xu@intel.com>
---
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@lists.xen.org
http://lists.xen.org/xen-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic