Re: [Xen-devel] [PATCH v4 1/5] Qemu-Xen-vTPM: Support for Xen stubdom vTPM command line options

2015-03-11 Thread Eric Blake
On 03/10/2015 06:14 AM, Quan Xu wrote:
 --Changes in v4:
  -qapi schema enhancement.
  -remove no need code.

Patch history belongs...

 
 Signed-off-by: Quan Xu quan...@intel.com
 ---

...here.  It is useful to reviewers to know what changed since your last
submission, but not useful for the actual git history (where we will not
care if it took one revision or 20 on the mailing list before getting to
the one revision stored in git).  More tips:
http://wiki.qemu.org/Contribute/SubmitAPatch

  configure| 14 ++
  hmp.c|  2 ++
  qapi-schema.json | 18 --
  qemu-options.hx  | 13 +++--
  tpm.c|  7 ++-
  5 files changed, 49 insertions(+), 5 deletions(-)
 

 +++ b/qapi-schema.json
 @@ -2854,9 +2854,11 @@
  #
  # @passthrough: TPM passthrough type
  #
 +# @xenstubdoms: TPM xenstubdoms type (since 2.3)
 +#
  # Since: 1.5
  ##
 -{ 'enum': 'TpmType', 'data': [ 'passthrough' ] }
 +{ 'enum': 'TpmType', 'data': [ 'passthrough', 'xenstubdoms' ] }
  
  ##
  # @query-tpm-types:
 @@ -2884,6 +2886,16 @@
  { 'type': 'TPMPassthroughOptions', 'data': { '*path' : 'str',
   '*cancel-path' : 'str'} }
  
 +# @TPMXenstubdomsOptions:

Missing a '##' lead-in line.

 +#
 +# Information about the TPM xenstubdoms type
 +#
 +# Since: 2.3
 +##
 +{ 'type': 'TPMXenstubdomsOptions', 'data': {  } }
 +#
 +##
 +
  ##

We don't usually have trailing '#' or '##' lines after a type declaration.

  # @TpmTypeOptions:
  #
 @@ -2894,7 +2906,9 @@
  # Since: 1.5
  ##
  { 'union': 'TpmTypeOptions',
 -   'data': { 'passthrough' : 'TPMPassthroughOptions' } }
 +  'data': { 'passthrough' : 'TPMPassthroughOptions',
 +'xenstubdoms' : 'TPMXenstubdomsOptions' } }
 +##
  

We are already in soft freeze for 2.3, and this is a new feature.  Is it
still going to make it, or should you adjust this patch to say 'since 2.4'?

-- 
Eric Blake   eblake redhat com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature
___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


[Xen-devel] [PATCH v4 1/5] Qemu-Xen-vTPM: Support for Xen stubdom vTPM command line options

2015-03-10 Thread Quan Xu
--Changes in v4:
 -qapi schema enhancement.
 -remove no need code.

Signed-off-by: Quan Xu quan...@intel.com
---
 configure| 14 ++
 hmp.c|  2 ++
 qapi-schema.json | 18 --
 qemu-options.hx  | 13 +++--
 tpm.c|  7 ++-
 5 files changed, 49 insertions(+), 5 deletions(-)

diff --git a/configure b/configure
index a9e4d49..d63b8a1 100755
--- a/configure
+++ b/configure
@@ -2942,6 +2942,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
@@ -4333,6 +4343,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
@@ -4810,6 +4821,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 63d7686..5662cb6 100644
--- a/hmp.c
+++ b/hmp.c
@@ -718,6 +718,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 24379ab..3f5c212 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -2854,9 +2854,11 @@
 #
 # @passthrough: TPM passthrough type
 #
+# @xenstubdoms: TPM xenstubdoms type (since 2.3)
+#
 # Since: 1.5
 ##
-{ 'enum': 'TpmType', 'data': [ 'passthrough' ] }
+{ 'enum': 'TpmType', 'data': [ 'passthrough', 'xenstubdoms' ] }
 
 ##
 # @query-tpm-types:
@@ -2884,6 +2886,16 @@
 { 'type': 'TPMPassthroughOptions', 'data': { '*path' : 'str',
  '*cancel-path' : 'str'} }
 
+# @TPMXenstubdomsOptions:
+#
+# Information about the TPM xenstubdoms type
+#
+# Since: 2.3
+##
+{ 'type': 'TPMXenstubdomsOptions', 'data': {  } }
+#
+##
+
 ##
 # @TpmTypeOptions:
 #
@@ -2894,7 +2906,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 1e7d5b8..fd73f57 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2485,7 +2485,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
 
@@ -2495,7 +2496,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
@@ -2545,6 +2547,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 c371023..ee9acb8 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,
@@ -256,6 +256,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;
@@ -275,6 +276,10 @@ static TPMInfo