[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 41/58] i386/tdx: handle TDG.VP.VMCALL<GetQuote>
From: |
Daniel P . Berrangé |
Subject: |
Re: [PATCH v2 41/58] i386/tdx: handle TDG.VP.VMCALL<GetQuote> |
Date: |
Tue, 29 Aug 2023 11:25:17 +0100 |
User-agent: |
Mutt/2.2.9 (2022-11-12) |
On Tue, Aug 29, 2023 at 01:31:37PM +0800, Chenyi Qiang wrote:
>
>
> On 8/22/2023 4:24 PM, Daniel P. Berrangé wrote:
> > On Tue, Aug 22, 2023 at 08:52:30AM +0200, Markus Armbruster wrote:
> >> Xiaoyao Li <xiaoyao.li@intel.com> writes:
> >>
> >>> From: Isaku Yamahata <isaku.yamahata@intel.com>
> >>>
> >>> For GetQuote, delegate a request to Quote Generation Service. Add
> >>> property
> >>> of address of quote generation server and On request, connect to the
> >>> server, read request buffer from shared guest memory, send the request
> >>> buffer to the server and store the response into shared guest memory and
> >>> notify TD guest by interrupt.
> >>>
> >>> "quote-generation-service" is a property to specify Quote Generation
> >>> Service(QGS) in qemu socket address format. The examples of the supported
> >>> format are "vsock:2:1234", "unix:/run/qgs", "localhost:1234".
> >>>
> >>> command line example:
> >>> qemu-system-x86_64 \
> >>> -object 'tdx-guest,id=tdx0,quote-generation-service=localhost:1234' \
> >>> -machine confidential-guest-support=tdx0
> >>>
> >>> Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
> >>> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
> >>> ---
> >>> qapi/qom.json | 5 +-
> >>> target/i386/kvm/tdx.c | 380 ++++++++++++++++++++++++++++++++++++++++++
> >>> target/i386/kvm/tdx.h | 7 +
> >>> 3 files changed, 391 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/qapi/qom.json b/qapi/qom.json
> >>> index 87c1d440f331..37139949d761 100644
> >>> --- a/qapi/qom.json
> >>> +++ b/qapi/qom.json
> >>> @@ -879,13 +879,16 @@
> >>> #
> >>> # @mrownerconfig: MROWNERCONFIG SHA384 hex string of 48 * 2 length
> >>> (default: 0)
> >>> #
> >>> +# @quote-generation-service: socket address for Quote Generation
> >>> Service(QGS)
> >>> +#
> >>> # Since: 8.2
> >>> ##
> >>> { 'struct': 'TdxGuestProperties',
> >>> 'data': { '*sept-ve-disable': 'bool',
> >>> '*mrconfigid': 'str',
> >>> '*mrowner': 'str',
> >>> - '*mrownerconfig': 'str' } }
> >>> + '*mrownerconfig': 'str',
> >>> + '*quote-generation-service': 'str' } }
> >>
> >> Why not type SocketAddress?
> >
> > Yes, the code uses SocketAddress internally when it eventually
> > calls qio_channel_socket_connect_async(), so we should directly
> > use SocketAddress in the QAPI from the start.
>
> Any benefit to directly use SocketAddress?
We don't want whatever code consumes the configuration to
do a second level of parsing to convert the 'str' value
into the 'SocketAddress' object it actually needs.
QEMU has a long history of having a second round of ad-hoc
parsing of configuration and we've found it to be a serious
maintenence burden. Thus we strive to have everything
represented in QAPI using the desired final type, and avoid
the second round of parsing.
> "quote-generation-service" here is optional, it seems not trivial to add
> and parse the SocketAddress type in QEMU command. After I change 'str'
> to 'SocketAddress' and specify the command like "-object
> tdx-guest,type=vsock,cid=2,port=1234...", it will report "invalid
> parameter cid".
The -object parameter supports JSON syntax for this reason
-object '{"qom-type":"tdx-guest","quote-generation-service":{"type":
"vsock", "cid":"2","port":"1234"}}'
libvirt will always use the JSON syntax for -object with a new enough
QEMU.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
- Re: [PATCH v2 47/58] i386/tdx: Wire REPORT_FATAL_ERROR with GuestPanic facility, (continued)
[PATCH v2 39/58] i386/tdx: Finalize TDX VM, Xiaoyao Li, 2023/08/18
[PATCH v2 46/58] i386/tdx: Handle TDG.VP.VMCALL<REPORT_FATAL_ERROR>, Xiaoyao Li, 2023/08/18
[PATCH v2 49/58] i386/tdx: Disable PIC for TDX VMs, Xiaoyao Li, 2023/08/18
[PATCH v2 41/58] i386/tdx: handle TDG.VP.VMCALL<GetQuote>, Xiaoyao Li, 2023/08/18
- Re: [PATCH v2 41/58] i386/tdx: handle TDG.VP.VMCALL<GetQuote>, Markus Armbruster, 2023/08/22
- Re: [PATCH v2 41/58] i386/tdx: handle TDG.VP.VMCALL<GetQuote>, Daniel P . Berrangé, 2023/08/22
- Re: [PATCH v2 41/58] i386/tdx: handle TDG.VP.VMCALL<GetQuote>, Chenyi Qiang, 2023/08/29
- Re: [PATCH v2 41/58] i386/tdx: handle TDG.VP.VMCALL<GetQuote>,
Daniel P . Berrangé <=
- Re: [PATCH v2 41/58] i386/tdx: handle TDG.VP.VMCALL<GetQuote>, Chenyi Qiang, 2023/08/30
- Re: [PATCH v2 41/58] i386/tdx: handle TDG.VP.VMCALL<GetQuote>, Xiaoyao Li, 2023/08/30
- Re: [PATCH v2 41/58] i386/tdx: handle TDG.VP.VMCALL<GetQuote>, Daniel P . Berrangé, 2023/08/30
- Re: [PATCH v2 41/58] i386/tdx: handle TDG.VP.VMCALL<GetQuote>, Xiaoyao Li, 2023/08/31
[PATCH v2 51/58] i386/tdx: LMCE is not supported for TDX, Xiaoyao Li, 2023/08/18
[PATCH v2 53/58] hw/i386: add option to forcibly report edge trigger in acpi tables, Xiaoyao Li, 2023/08/18
[PATCH v2 56/58] i386/tdx: Skip kvm_put_apicbase() for TDs, Xiaoyao Li, 2023/08/18
[PATCH v2 58/58] docs: Add TDX documentation, Xiaoyao Li, 2023/08/18
[PATCH v2 57/58] i386/tdx: Don't get/put guest state for TDX VMs, Xiaoyao Li, 2023/08/18
[PATCH v2 40/58] i386/tdx: handle TDG.VP.VMCALL<SetupEventNotifyInterrupt>, Xiaoyao Li, 2023/08/18