diff mbox

[v2,1/4] Qemu-Xen-vTPM: Support for Xen stubdom vTPM command line options

Message ID 1416802253-9891-1-git-send-email-quan.xu@intel.com
State New
Headers show

Commit Message

Xu, Quan Nov. 24, 2014, 4:10 a.m. UTC
Signed-off-by: Quan Xu <quan.xu@intel.com>
---
 configure        | 14 ++++++++++++++
 hmp.c            |  7 +++++++
 qapi-schema.json | 20 ++++++++++++++++++--
 qemu-options.hx  | 13 +++++++++++--
 tpm.c            |  7 ++++++-
 5 files changed, 56 insertions(+), 5 deletions(-)

Comments

Eric Blake Nov. 24, 2014, 5:19 p.m. UTC | #1
On 11/23/2014 09:10 PM, Quan Xu wrote:
> Signed-off-by: Quan Xu <quan.xu@intel.com>
> ---
>  configure        | 14 ++++++++++++++
>  hmp.c            |  7 +++++++
>  qapi-schema.json | 20 ++++++++++++++++++--
>  qemu-options.hx  | 13 +++++++++++--
>  tpm.c            |  7 ++++++-
>  5 files changed, 56 insertions(+), 5 deletions(-)
> 

> +++ b/qapi-schema.json
> @@ -2855,8 +2855,12 @@
>  # @passthrough: TPM passthrough type
>  #
>  # Since: 1.5
> +#
> +# @xenstubdoms: TPM xenstubdoms type
> +#
> +# Since: 2.3

Typically, this would be done as:

# @passthrough: TPM passthrough type
#
# @xenstubdoms: TPM xenstubdoms type (since 2.3)
#
# Since: 1.5

as the enum itself was added in 1.5, not 2.3.
Eric Blake Nov. 24, 2014, 5:31 p.m. UTC | #2
On 11/24/2014 10:19 AM, Eric Blake wrote:
> On 11/23/2014 09:10 PM, Quan Xu wrote:
>> Signed-off-by: Quan Xu <quan.xu@intel.com>
>> ---
>>  configure        | 14 ++++++++++++++
>>  hmp.c            |  7 +++++++
>>  qapi-schema.json | 20 ++++++++++++++++++--
>>  qemu-options.hx  | 13 +++++++++++--
>>  tpm.c            |  7 ++++++-
>>  5 files changed, 56 insertions(+), 5 deletions(-)

Also, this message was not threaded properly; it appeared as a top-level
thread along with three other threads for its siblings, instead of all
four patches being in-reply-to the 0/4 cover letter.
Xu, Quan Nov. 25, 2014, 1:51 p.m. UTC | #3
> -----Original Message-----

> From: xen-devel-bounces@lists.xen.org

> [mailto:xen-devel-bounces@lists.xen.org] On Behalf Of Eric Blake

> Sent: Tuesday, November 25, 2014 1:31 AM

> To: Xu, Quan; qemu-devel@nongnu.org

> Cc: xen-devel@lists.xen.org; armbru@redhat.com; lcapitulino@redhat.com

> Subject: Re: [Xen-devel] [Qemu-devel] [v2 1/4] Qemu-Xen-vTPM: Support for

> Xen stubdom vTPM command line options

> 

> On 11/24/2014 10:19 AM, Eric Blake wrote:

> > On 11/23/2014 09:10 PM, Quan Xu wrote:

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

> >> ---

> >>  configure        | 14 ++++++++++++++

> >>  hmp.c            |  7 +++++++

> >>  qapi-schema.json | 20 ++++++++++++++++++--  qemu-options.hx  |

> 13

> >> +++++++++++--

> >>  tpm.c            |  7 ++++++-

> >>  5 files changed, 56 insertions(+), 5 deletions(-)

> 

> Also, this message was not threaded properly; it appeared as a top-level

> thread along with three other threads for its siblings, instead of all four

> patches being in-reply-to the 0/4 cover letter.

> 

Thanks Eric.

Should I: 

V2 is version number, 
1. $git format-patch --subject-prefix=v2 -ns --cover-letter master 
  Then, edit 0000-cover-letter.patch 

2. $git format-patch --subject-prefix=v2 -4 
  Then, commit these 4 patch and 0000-cover-letter.patch

right?


Thanks 
Quan Xu

> --

> Eric Blake   eblake redhat com    +1-919-301-3266

> Libvirt virtualization library http://libvirt.org
Xu, Quan Nov. 25, 2014, 1:52 p.m. UTC | #4
> -----Original Message-----

> From: Eric Blake [mailto:eblake@redhat.com]

> Sent: Tuesday, November 25, 2014 1:19 AM

> To: Xu, Quan; qemu-devel@nongnu.org

> Cc: xen-devel@lists.xen.org; lcapitulino@redhat.com; armbru@redhat.com

> Subject: Re: [v2 1/4] Qemu-Xen-vTPM: Support for Xen stubdom vTPM

> command line options

> 

> On 11/23/2014 09:10 PM, Quan Xu wrote:

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

> > ---

> >  configure        | 14 ++++++++++++++

> >  hmp.c            |  7 +++++++

> >  qapi-schema.json | 20 ++++++++++++++++++--  qemu-options.hx  | 13

> > +++++++++++--

> >  tpm.c            |  7 ++++++-

> >  5 files changed, 56 insertions(+), 5 deletions(-)

> >

> 

> > +++ b/qapi-schema.json

> > @@ -2855,8 +2855,12 @@

> >  # @passthrough: TPM passthrough type

> >  #

> >  # Since: 1.5

> > +#

> > +# @xenstubdoms: TPM xenstubdoms type

> > +#

> > +# Since: 2.3

> 

> Typically, this would be done as:

> 

> # @passthrough: TPM passthrough type

> #

> # @xenstubdoms: TPM xenstubdoms type (since 2.3) # # Since: 1.5

> 


Thanks  Eric. 
I will modify it as your suggestion in v3.

> as the enum itself was added in 1.5, not 2.3.

> 

> --

> Eric Blake   eblake redhat com    +1-919-301-3266

> Libvirt virtualization library http://libvirt.org
Eric Blake Nov. 25, 2014, 4:30 p.m. UTC | #5
On 11/25/2014 06:51 AM, Xu, Quan wrote:
>>
>> Also, this message was not threaded properly; it appeared as a top-level
>> thread along with three other threads for its siblings, instead of all four
>> patches being in-reply-to the 0/4 cover letter.
>>
> Thanks Eric.
> 
> Should I: 
> 
> V2 is version number, 
> 1. $git format-patch --subject-prefix=v2 -ns --cover-letter master 
>   Then, edit 0000-cover-letter.patch 

Rather than '--subject-prefix=v2', I prefer using '-v2'.  The important
part is that you send the mails with 'git send-email' instead of doing
it by hand.  In fact, you can do 'git send-email --annotate -v2
--cover-letter master' and skip the format-patch altogether, if you are
okay saving your cover letter edits to the point where you are sending
the mails.

> 
> 2. $git format-patch --subject-prefix=v2 -4 
>   Then, commit these 4 patch and 0000-cover-letter.patch

I'm not sure what you meant by commit.  You aren't adding the *.patch
files to a repository, but sending them as email.
Xu, Quan Nov. 26, 2014, 2:03 a.m. UTC | #6
> -----Original Message-----

> From: Eric Blake [mailto:eblake@redhat.com]

> Sent: Wednesday, November 26, 2014 12:31 AM

> To: Xu, Quan; qemu-devel@nongnu.org

> Cc: xen-devel@lists.xen.org; armbru@redhat.com; lcapitulino@redhat.com

> Subject: Re: [Xen-devel] [Qemu-devel] [v2 1/4] Qemu-Xen-vTPM: Support for

> Xen stubdom vTPM command line options

> 

> On 11/25/2014 06:51 AM, Xu, Quan wrote:

> >>

> >> Also, this message was not threaded properly; it appeared as a

> >> top-level thread along with three other threads for its siblings,

> >> instead of all four patches being in-reply-to the 0/4 cover letter.

> >>

> > Thanks Eric.

> >

> > Should I:

> >

> > V2 is version number,

> > 1. $git format-patch --subject-prefix=v2 -ns --cover-letter master

> >   Then, edit 0000-cover-letter.patch

> 

> Rather than '--subject-prefix=v2', I prefer using '-v2'.  The important part is

> that you send the mails with 'git send-email' instead of doing it by hand.  In

> fact, you can do 'git send-email --annotate -v2 --cover-letter master' and skip

> the format-patch altogether, if you are okay saving your cover letter edits to

> the point where you are sending the mails.

> 

Thanks Eric. 
> >

> > 2. $git format-patch --subject-prefix=v2 -4

> >   Then, commit these 4 patch and 0000-cover-letter.patch

> 

> I'm not sure what you meant by commit.  You aren't adding the *.patch files

> to a repository, but sending them as email.

> 

Yes, just but sending them as email.
> --

> Eric Blake   eblake redhat com    +1-919-301-3266

> Libvirt virtualization library http://libvirt.org
diff mbox

Patch

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..1df3ec7 100644
--- a/hmp.c
+++ b/hmp.c
@@ -689,6 +689,7 @@  void hmp_info_tpm(Monitor *mon, const QDict *qdict)
     Error *err = NULL;
     unsigned int c = 0;
     TPMPassthroughOptions *tpo;
+    TPMXenstubdomsOptions *txo;
 
     info_list = qmp_query_tpm(&err);
     if (err) {
@@ -718,6 +719,12 @@  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:
+            txo = ti->options->xenstubdoms;
+            if (!txo) {
+                monitor_printf(mon, "null TPMXenstubdomsOptions error!\n");
+            }
+            break;
         case TPM_TYPE_OPTIONS_KIND_MAX:
             break;
         }
diff --git a/qapi-schema.json b/qapi-schema.json
index 24379ab..17e9d0f 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -2855,8 +2855,12 @@ 
 # @passthrough: TPM passthrough type
 #
 # Since: 1.5
+#
+# @xenstubdoms: TPM xenstubdoms type
+#
+# Since: 2.3
 ##
-{ 'enum': 'TpmType', 'data': [ 'passthrough' ] }
+{ 'enum': 'TpmType', 'data': [ 'passthrough', 'xenstubdoms' ] }
 
 ##
 # @query-tpm-types:
@@ -2884,6 +2888,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 +2908,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 *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;
     }