From: Quan Xu <quan.xu@intel.com>
To: stefano.stabellini@eu.citrix.com, stefanb@linux.vnet.ibm.com,
eblake@redhat.com
Cc: wei.liu2@citrix.com, Quan Xu <quan.xu@intel.com>,
qemu-devel@nongnu.org, xen-devel@lists.xen.org,
aliguori@amazon.com, pbonzini@redhat.com, dgdegra@tycho.nsa.gov
Subject: [Qemu-devel] [PATCH v5 1/6] Qemu-Xen-vTPM: Support for Xen stubdom vTPM command line options
Date: Fri, 10 Apr 2015 02:59:14 -0400 [thread overview]
Message-ID: <1428649159-30879-2-git-send-email-quan.xu@intel.com> (raw)
In-Reply-To: <1428649159-30879-1-git-send-email-quan.xu@intel.com>
Signed-off-by: Quan Xu <quan.xu@intel.com>
--Changes in v5:
-qapi schema enhancement.
---
configure | 14 ++++++++++++++
hmp.c | 2 ++
qapi-schema.json | 17 +++++++++++++++--
qemu-options.hx | 13 +++++++++++--
tpm.c | 7 ++++++-
5 files changed, 48 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..36ca1a2 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,9 @@
# 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-04-10 12:00 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-10 6:59 [Qemu-devel] [PATCH v5 0/6] QEMU:Xen stubdom vTPM for HVM virtual machine(QEMU patch) Quan Xu
2015-04-10 6:59 ` Quan Xu [this message]
2015-04-10 13:22 ` [PATCH v5 1/6] Qemu-Xen-vTPM: Support for Xen stubdom vTPM command line options Eric Blake
2015-04-10 13:22 ` [Qemu-devel] " Eric Blake
2015-04-13 2:32 ` Xu, Quan
2015-04-13 2:32 ` Xu, Quan
2015-04-10 6:59 ` Quan Xu
2015-04-10 6:59 ` [Qemu-devel] [PATCH v5 2/6] Qemu-Xen-vTPM: Xen frontend driver infrastructure Quan Xu
2015-04-10 6:59 ` Quan Xu
2015-04-10 6:59 ` [PATCH v5 3/6] " Quan Xu
2015-04-10 6:59 ` [Qemu-devel] " Quan Xu
2015-04-15 14:44 ` Stefan Berger
2015-04-15 14:44 ` Stefan Berger
2015-04-15 15:07 ` Daniel De Graaf
2015-04-15 15:07 ` Daniel De Graaf
2015-04-16 1:03 ` Xu, Quan
2015-04-16 1:03 ` Xu, Quan
2015-04-10 6:59 ` [Qemu-devel] [PATCH v5 4/6] Qemu-Xen-vTPM: Qemu vTPM xenstubdoms backen Quan Xu
2015-04-15 14:50 ` Stefan Berger
2015-04-15 14:50 ` Stefan Berger
2015-04-16 1:07 ` Xu, Quan
2015-04-16 1:07 ` Xu, Quan
2015-04-10 6:59 ` Quan Xu
2015-04-10 6:59 ` [Qemu-devel] [PATCH v5 5/6] Qemu-Xen-vTPM: QEMU machine class is initialized before tpm_init() Quan Xu
2015-04-10 6:59 ` Quan Xu
2015-04-10 6:59 ` [Qemu-devel] [PATCH v5 6/6] Qemu-Xen-vTPM: Add a parameter indicating whether the command that was a selftest Quan Xu
2015-04-10 6:59 ` Quan Xu
2015-04-12 20:50 ` [Qemu-devel] " Stefan Berger
2015-04-13 2:15 ` Xu, Quan
2015-04-13 2:15 ` [Qemu-devel] " Xu, Quan
2015-04-15 14:56 ` Stefan Berger
2015-04-16 1:04 ` Xu, Quan
2015-04-16 1:04 ` Xu, Quan
2015-04-15 14:56 ` Stefan Berger
2015-04-13 22:35 ` Stefan Berger
2015-04-13 22:35 ` Stefan Berger
2015-04-12 20:50 ` Stefan Berger
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=1428649159-30879-2-git-send-email-quan.xu@intel.com \
--to=quan.xu@intel.com \
--cc=aliguori@amazon.com \
--cc=dgdegra@tycho.nsa.gov \
--cc=eblake@redhat.com \
--cc=pbonzini@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.