From: James Bottomley <jejb@linux.ibm.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: qemu-devel@nongnu.org, Stefan Berger <stefanb@linux.ibm.com>,
Markus Armbruster <armbru@redhat.com>
Subject: Re: [PATCH] tpm: add backend for mssim
Date: Wed, 14 Dec 2022 07:47:28 -0500 [thread overview]
Message-ID: <5a91ffbd8fa01d8f60df4cc14bcc53eeb3cc93e4.camel@linux.ibm.com> (raw)
In-Reply-To: <Y5mz96wJN9+nxLs8@redhat.com>
On Wed, 2022-12-14 at 11:31 +0000, Daniel P. Berrangé wrote:
> On Mon, Dec 12, 2022 at 05:06:05PM -0500, James Bottomley wrote:
> > On Mon, 2022-12-12 at 15:47 +0000, Daniel P. Berrangé wrote:
> > > Copy'ing Markus for QAPI design feedback.
> > >
> > > On Sat, Dec 10, 2022 at 12:10:18PM -0500, James Bottomley wrote:
> > [...]
> > > > +##
> > > > +# @TPMmssimOptions:
> > > > +#
> > > > +# Information for the mssim emulator connection
> > > > +#
> > > > +# @host: host name or IP address to connect to
> > > > +# @port: port for the standard TPM commands
> > > > +# @ctrl: control port for TPM state changes
> > > > +#
> > > > +# Since: 7.2.0
> > > > +##
> > > > +{ 'struct': 'TPMmssimOptions',
> > > > + 'data': {
> > > > + 'host': 'str',
> > > > + 'port': 'str',
> > > > + 'ctrl': 'str' },
> > > > + 'if': 'CONFIG_TPM' }
> > >
> > > We don't want to be adding new code using plain host/port combos,
> > > as that misses extra functionality for controlling IPv4 vs IPv6
> > > usage.
> > >
> > > The existing 'emulator' backend references a chardev, but I'm
> > > not especially in favour of using the chardev indirection either,
> > > when all we should really need is a SocketAddress
> > >
> > > IOW, from a QAPI design POV, IMHO the best practice would be
> > >
> > > { 'struct': 'TPMmssimOptions',
> > > 'data': {
> > > 'command': 'SocketAddress',
> > > 'control': 'SocketAddress' },
> > > 'if': 'CONFIG_TPM' }
> > >
> > >
> > > The main wrinkle with this is that exprssing nested struct fields
> > > with QemuOpts is a disaster zone, and -tpmdev doesn't yet support
> > > JSON syntax.
> > >
> > > IMHO we should just fix the latter problem, as I don't think it
> > > ought to be too hard. Probably a cut+paste / search/replace job
> > > on the chanmge we did for -device in:
> > >
> > > commit 5dacda5167560b3af8eadbce5814f60ba44b467e
> > > Author: Kevin Wolf <kwolf@redhat.com>
> > > Date: Fri Oct 8 15:34:42 2021 +0200
> > >
> > > vl: Enable JSON syntax for -device
> > >
> > > This would mean we could use plain -tpmdev for a local instance
> > >
> > > -tpmdev mssim,id=tpm0 \
> > > -device tpm-crb,tpmdev=tpm0 \
> > >
> > > but to use a remote emulator we would use
> > >
> > > -tpmdev "{'backend': 'mssim', 'id': 'tpm0',
> > > 'command': {
> > > 'type': 'inet',
> > > 'host': 'remote',
> > > 'port': '4455'
> > > },
> > > 'control': {
> > > 'type': 'inet',
> > > 'host': 'remote',
> > > 'port': '4456'
> > > }}"
> > >
> > > (without the whitepace/newlines, which i just used for sake of
> > > clarity)
> >
> > Just on this, might it not be easier for the commandline to do what
> > gluster does? just use the '.' as a separator and subqdict
> > extraction, so you'd specify
> >
> > -tpmdev
> > mssim,id=tpm0,command.type=inet,command.host=remote,command.port=44
> > 55,control.type=inet,control.host=remote,control.port=4456
> >
> > With the added bonus that X.type could be defaulted to inet and
> > control.host could follow command.host and so on?
>
> These days, we have a policy of not tyring to map nested data onto
> the flat QemuOpts. This has been done in several areas and we've
> ended up with a mess of ever so slightly different impls each with
> their own flaws. This is why our preferred approach these days is to
> add support for JSON syntax to enable non-flat config.
Well, OK, but I've got to say on behalf of shell script writers
everywhere that using json for command line arguments is a textbook
definition of cruel and unusual punishment.
James
next prev parent reply other threads:[~2022-12-14 12:48 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-10 17:10 [PATCH] tpm: add backend for mssim James Bottomley
2022-12-12 13:43 ` Stefan Berger
2022-12-12 13:59 ` James Bottomley
2022-12-12 14:27 ` Stefan Berger
2022-12-12 14:32 ` James Bottomley
2022-12-12 14:44 ` Stefan Berger
2022-12-12 14:47 ` James Bottomley
2022-12-12 15:20 ` Stefan Berger
2022-12-12 15:28 ` James Bottomley
2022-12-12 15:46 ` Stefan Berger
2022-12-12 15:47 ` Daniel P. Berrangé
2022-12-12 16:38 ` James Bottomley
2022-12-12 16:59 ` Stefan Berger
2022-12-12 18:48 ` James Bottomley
2022-12-12 18:58 ` Stefan Berger
2022-12-12 19:12 ` James Bottomley
2022-12-12 19:32 ` Stefan Berger
2022-12-12 20:24 ` Stefan Berger
2022-12-12 21:36 ` James Bottomley
2022-12-12 22:02 ` Stefan Berger
2022-12-12 22:27 ` James Bottomley
2022-12-12 22:43 ` Stefan Berger
2022-12-14 11:52 ` Daniel P. Berrangé
2022-12-14 12:43 ` James Bottomley
2022-12-15 2:42 ` Stefan Berger
2022-12-14 11:55 ` Daniel P. Berrangé
2022-12-12 22:06 ` James Bottomley
2022-12-14 11:31 ` Daniel P. Berrangé
2022-12-14 12:47 ` James Bottomley [this message]
2022-12-14 14:17 ` Markus Armbruster
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=5a91ffbd8fa01d8f60df4cc14bcc53eeb3cc93e4.camel@linux.ibm.com \
--to=jejb@linux.ibm.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanb@linux.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 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.