From: Quan Xu <quan.xu@intel.com>
To: stefano.stabellini@eu.citrix.com, qemu-devel@nongnu.org
Cc: wei.liu2@citrix.com, stefanb@linux.vnet.ibm.com,
xen-devel@lists.xen.org, Quan Xu <quan.xu@intel.com>,
dgdegra@tycho.nsa.gov, eblake@redhat.com
Subject: [PATCH v8 1/7] Qemu-Xen-vTPM: Support for Xen stubdom vTPM command line options
Date: Sun, 17 May 2015 01:20:24 -0400 [thread overview]
Message-ID: <1431840030-2797-3-git-send-email-quan.xu@intel.com> (raw)
In-Reply-To: <1431840030-2797-1-git-send-email-quan.xu@intel.com>
Signed-off-by: Quan Xu <quan.xu@intel.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
---
configure | 14 ++++++++++++++
hmp.c | 2 ++
qapi-schema.json | 16 ++++++++++++++--
qemu-options.hx | 13 +++++++++++--
tpm.c | 7 ++++++-
5 files changed, 47 insertions(+), 5 deletions(-)
diff --git a/configure b/configure
index 09c9225..8c9411d 100755
--- a/configure
+++ b/configure
@@ -3010,6 +3010,16 @@ else
fi
##########################################
+# TPM xenstubdoms is only on x86 Linux
+
+if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64 && \
+ test "$xen" = "yes"; then
+ tpm_xenstubdoms=$tpm
+else
+ tpm_xenstubdoms=no
+fi
+
+##########################################
# attr probe
if test "$attr" != "no" ; then
@@ -4432,6 +4442,7 @@ echo "gcov $gcov_tool"
echo "gcov enabled $gcov"
echo "TPM support $tpm"
echo "libssh2 support $libssh2"
+echo "TPM xenstubdoms $tpm_xenstubdoms"
echo "TPM passthrough $tpm_passthrough"
echo "QOM debugging $qom_cast_debug"
echo "vhdx $vhdx"
@@ -4919,6 +4930,9 @@ if test "$tpm" = "yes"; then
if test "$tpm_passthrough" = "yes"; then
echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
fi
+ if test "$tpm_xenstubdoms" = "yes"; then
+ echo "CONFIG_TPM_XENSTUBDOMS=y" >> $config_host_mak
+ fi
fi
echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
diff --git a/hmp.c b/hmp.c
index f31ae27..c10b6f7 100644
--- a/hmp.c
+++ b/hmp.c
@@ -813,6 +813,8 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict)
tpo->has_cancel_path ? ",cancel-path=" : "",
tpo->has_cancel_path ? tpo->cancel_path : "");
break;
+ case TPM_TYPE_OPTIONS_KIND_XENSTUBDOMS:
+ break;
case TPM_TYPE_OPTIONS_KIND_MAX:
break;
}
diff --git a/qapi-schema.json b/qapi-schema.json
index ac9594d..9bdb15e 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -2975,9 +2975,11 @@
#
# @passthrough: TPM passthrough type
#
+# @xenstubdoms: TPM xenstubdoms type (since 2.4)
+#
# Since: 1.5
##
-{ 'enum': 'TpmType', 'data': [ 'passthrough' ] }
+{ 'enum': 'TpmType', 'data': [ 'passthrough', 'xenstubdoms' ] }
##
# @query-tpm-types:
@@ -3006,6 +3008,15 @@
'*cancel-path' : 'str'} }
##
+# @TPMXenstubdomsOptions:
+#
+# Information about the TPM xenstubdoms type
+#
+# Since: 2.4
+##
+{ 'type': 'TPMXenstubdomsOptions', 'data': { } }
+
+##
# @TpmTypeOptions:
#
# A union referencing different TPM backend types' configuration options
@@ -3015,7 +3026,8 @@
# Since: 1.5
##
{ 'union': 'TpmTypeOptions',
- 'data': { 'passthrough' : 'TPMPassthroughOptions' } }
+ 'data': { 'passthrough' : 'TPMPassthroughOptions',
+ 'xenstubdoms' : 'TPMXenstubdomsOptions' } }
##
# @TpmInfo:
diff --git a/qemu-options.hx b/qemu-options.hx
index 319d971..9254902 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2539,7 +2539,8 @@ DEF("tpmdev", HAS_ARG, QEMU_OPTION_tpmdev, \
"-tpmdev passthrough,id=id[,path=path][,cancel-path=path]\n"
" use path to provide path to a character device; default is /dev/tpm0\n"
" use cancel-path to provide path to TPM's cancel sysfs entry; if\n"
- " not provided it will be searched for in /sys/class/misc/tpm?/device\n",
+ " not provided it will be searched for in /sys/class/misc/tpm?/device\n"
+ "-tpmdev xenstubdoms,id=id\n",
QEMU_ARCH_ALL)
STEXI
@@ -2549,7 +2550,8 @@ The general form of a TPM device option is:
@item -tpmdev @var{backend} ,id=@var{id} [,@var{options}]
@findex -tpmdev
Backend type must be:
-@option{passthrough}.
+@option{passthrough}, or
+@option{xenstubdoms}.
The specific backend type will determine the applicable options.
The @code{-tpmdev} option creates the TPM backend and requires a
@@ -2599,6 +2601,13 @@ To create a passthrough TPM use the following two options:
Note that the @code{-tpmdev} id is @code{tpm0} and is referenced by
@code{tpmdev=tpm0} in the device option.
+To create a xenstubdoms TPM use the following two options:
+@example
+-tpmdev xenstubdoms,id=tpm0 -device tpm-tis,tpmdev=tpm0
+@end example
+Note that the @code{-tpmdev} id is @code{tpm0} and is referenced by
+@code{tpmdev=tpm0} in the device option.
+
@end table
ETEXI
diff --git a/tpm.c b/tpm.c
index 963b7ee..30643fd 100644
--- a/tpm.c
+++ b/tpm.c
@@ -25,7 +25,7 @@ static QLIST_HEAD(, TPMBackend) tpm_backends =
#define TPM_MAX_MODELS 1
-#define TPM_MAX_DRIVERS 1
+#define TPM_MAX_DRIVERS 2
static TPMDriverOps const *be_drivers[TPM_MAX_DRIVERS] = {
NULL,
@@ -254,6 +254,7 @@ static TPMInfo *qmp_query_tpm_inst(TPMBackend *drv)
{
TPMInfo *res = g_new0(TPMInfo, 1);
TPMPassthroughOptions *tpo;
+ TPMXenstubdomsOptions *txo;
res->id = g_strdup(drv->id);
res->model = drv->fe_model;
@@ -273,6 +274,10 @@ static TPMInfo *qmp_query_tpm_inst(TPMBackend *drv)
tpo->has_cancel_path = true;
}
break;
+ case TPM_TYPE_XENSTUBDOMS:
+ res->options->kind = TPM_TYPE_OPTIONS_KIND_XENSTUBDOMS;
+ txo = g_new0(TPMXenstubdomsOptions, 1);
+ res->options->xenstubdoms = txo;
case TPM_TYPE_MAX:
break;
}
--
1.8.3.2
next prev parent reply other threads:[~2015-05-17 5:20 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-17 5:20 [PATCH v8 0/7] QEMU:Xen stubdom vTPM for HVM virtual machine(QEMU Part) Quan Xu
2015-05-17 5:20 ` Quan Xu
2015-05-17 5:20 ` Quan Xu [this message]
2015-05-17 5:20 ` [PATCH v8 2/7] Qemu-Xen-vTPM: Create a new file xen_pvdev.c Quan Xu
2015-06-22 16:37 ` Stefano Stabellini
[not found] ` <alpine.DEB.2.02.1506221732260.4824@kaball.uk.xensource.com>
2015-06-23 6:43 ` Xu, Quan
[not found] ` <945CA011AD5F084CBEA3E851C0AB28890E930C91@SHSMSX101.ccr.corp.intel.com>
2015-06-23 10:56 ` Stefano Stabellini
2016-02-14 5:55 ` Xu, Quan
2015-05-17 5:20 ` [PATCH v8 3/7] Qemu-Xen-vTPM: Xen frontend driver infrastructure Quan Xu
2015-06-22 17:40 ` Stefano Stabellini
2015-05-17 5:20 ` [PATCH v8 4/7] Qemu-Xen-vTPM: Register Xen stubdom vTPM frontend driver Quan Xu
2015-06-22 16:55 ` Stefano Stabellini
2015-05-17 5:20 ` [PATCH v8 5/7] Qemu-Xen-vTPM: Move tpm_passthrough_is_selftest() into tpm_util.c Quan Xu
2015-05-17 5:20 ` [PATCH v8 6/7] Qemu-Xen-vTPM: Qemu vTPM xenstubdoms backen Quan Xu
2015-05-17 5:20 ` [PATCH v8 7/7] Qemu-Xen-vTPM: QEMU machine class is initialized before tpm_init() Quan Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1431840030-2797-3-git-send-email-quan.xu@intel.com \
--to=quan.xu@intel.com \
--cc=dgdegra@tycho.nsa.gov \
--cc=eblake@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanb@linux.vnet.ibm.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).