qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Corey Bryant <coreyb@linux.vnet.ibm.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
	lcapitulino@redhat.com, qemu-devel@nongnu.org,
	Stefan Berger <stefanb@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH] QMP: TPM QMP and man page documentation updates
Date: Tue, 19 Mar 2013 10:59:50 -0400	[thread overview]
Message-ID: <51487D66.8010007@linux.vnet.ibm.com> (raw)
In-Reply-To: <87d2uvu9yk.fsf@blackfin.pond.sub.org>



On 03/19/2013 03:26 AM, Markus Armbruster wrote:
> [Note cc: Anthony for QAPI schema expertise]
>
> Stefan Berger <stefanb@linux.vnet.ibm.com> writes:
>
>> On 03/18/2013 12:16 PM, Markus Armbruster wrote:
>>> Corey Bryant <coreyb@linux.vnet.ibm.com> writes:
>>>
>>>> Signed-off-by: Corey Bryant <coreyb@linux.vnet.ibm.com>
>>>> ---
>>>>    qemu-options.hx |  3 ++-
>>>>    qmp-commands.hx | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>    2 files changed, 61 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/qemu-options.hx b/qemu-options.hx
>>>> index 30fb85d..3b3cd0f 100644
>>>> --- a/qemu-options.hx
>>>> +++ b/qemu-options.hx
>>>> @@ -2237,7 +2237,8 @@ Backend type must be:
>>>>    @option{passthrough}.
>>>>      The specific backend type will determine the applicable
>>>> options.
>>>> -The @code{-tpmdev} option requires a @code{-device} option.
>>>> +The @code{-tpmdev} option creates the TPM backend and requires a
>>>> +@code{-device} option that specifies the TPM frontend interface model.
>>>>      Options to each backend are described below.
>>>>    diff --git a/qmp-commands.hx b/qmp-commands.hx
>>>> index b370060..4eda5ea 100644
>>>> --- a/qmp-commands.hx
>>>> +++ b/qmp-commands.hx
>>>> @@ -2721,18 +2721,77 @@ EQMP
>>>>            .mhandler.cmd_new = qmp_marshal_input_query_tpm,
>>>>        },
>>>>    +SQMP
>>>> +query-tpm
>>>> +---------
>>>> +
>>>> +Return information about the TPM device.
>>>> +
>>>> +Arguments: None
>>>> +
>>>> +Example:
>>>> +
>>>> +-> { "execute": "query-tpm" }
>>>> +<- { "return":
>>>> +     [
>>>> +       { "model": "tpm-tis",
>>>> +         "tpm-options":
>>>> +           { "type": "tpm-passthrough-options",
>>>> +             "data":
>>>> +               { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
>>>> +                 "path": "/dev/tpm0"
>>>> +               }
>>>> +           },
>>>> +         "type": "passthrough",
>>>> +         "id": "tpm0"
>>>> +       }
>>>> +     ]
>>>> +   }
>>>> +
>>>> +EQMP
>>>> +
>>> "tpm-options" is a discriminated union.  How is its discriminator "type"
>>> (here: "tpm-passthrough-options") related to the outer "type" (here:
>>> "passthrough")?
>>
>> It gives you similar information twice. So there is a direct
>> relationship between the two types.
>
> Awkward and undocumented.
>
> Relevant parts of qapi-schema.json:
>
>      { 'enum': 'TpmType', 'data': [ 'passthrough' ] }
>
>      { 'union': 'TpmTypeOptions',
>         'data': { 'tpm-passthrough-options' : 'TPMPassthroughOptions' } }
>
>      { 'type': 'TPMInfo',
>        'data': {'id': 'str',
>                 'model': 'TpmModel',
>                 'type': 'TpmType',
>                 'tpm-options': 'TpmTypeOptions' } }
>
> Type Netdev solves the same problem more elegantly:
>
>      { 'union': 'NetClientOptions',
>        'data': {
>          'none':     'NetdevNoneOptions',
>          'nic':      'NetLegacyNicOptions',
>          'user':     'NetdevUserOptions',
>          'tap':      'NetdevTapOptions',
>          'socket':   'NetdevSocketOptions',
>          'vde':      'NetdevVdeOptions',
>          'dump':     'NetdevDumpOptions',
>          'bridge':   'NetdevBridgeOptions',
>          'hubport':  'NetdevHubPortOptions' } }
>
>      { 'type': 'Netdev',
>        'data': {
>          'id':   'str',
>          'opts': 'NetClientOptions' } }
>
> Uses the union's discriminator.  Straightforward.
>
> Following Netdev precedence, we get:
>
>      { 'union': 'TpmTypeOptions',
>        'data': { 'passthrough' : 'TPMPassthroughOptions' } }
>
>      { 'type': 'TPMInfo',
>        'data': {'id': 'str',
>                 'model': 'TpmModel',
>                 'opts': 'TpmTypeOptions' } }
>

I can send a patch for this update if you'd like.

> Duplication of type is gone.  No need for documentation.
>
> Since enum TpmType is used elsewhere, it still gets duplicated in the
> union's discriminator.  Anthony, is there a way to name the implicit
> discriminator enum type for reference elsewhere in the schema?
>

Are you saying it still gets duplicated with this fix?  I'm not sure 
what you mean.

-- 
Regards,
Corey Bryant

  reply	other threads:[~2013-03-19 15:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-15 17:17 [Qemu-devel] [PATCH] QMP: TPM QMP and man page documentation updates Corey Bryant
2013-03-15 17:54 ` Eric Blake
2013-03-18 16:16 ` Markus Armbruster
2013-03-18 17:46   ` Stefan Berger
2013-03-18 18:35     ` Corey Bryant
2013-03-19  7:26     ` Markus Armbruster
2013-03-19 14:59       ` Corey Bryant [this message]
2013-03-20 12:32         ` Markus Armbruster
2013-03-20 13:26           ` Corey Bryant
2013-03-20 16:36 ` Corey Bryant

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=51487D66.8010007@linux.vnet.ibm.com \
    --to=coreyb@linux.vnet.ibm.com \
    --cc=aliguori@us.ibm.com \
    --cc=armbru@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanb@linux.vnet.ibm.com \
    /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).