On Thu, May 12, 2022 at 01:21:45 +0000, Huang, Haibin wrote:
> -----Original Message-----
> From: Peter Krempa <pkrempa(a)redhat.com>
> Sent: Thursday, May 12, 2022 12:05 AM
> To: Yang, Lin A <lin.a.yang(a)intel.com>
> Cc: libvir-list(a)redhat.com; Huang, Haibin <haibin.huang(a)intel.com>; Ding,
> Jian-feng <jian-feng.ding(a)intel.com>; Zhong, Yang
<yang.zhong(a)intel.com>
> Subject: Re: [libvirt][PATCH v11 1/4] qemu: provide support to query the SGX
> capability
>
> On Tue, May 10, 2022 at 23:11:09 -0700, Lin Yang wrote:
> > From: Haibin Huang <haibin.huang(a)intel.com>
> >
> > QEMU version >= 6.2.0 provides support for creating enclave on SGX x86
> > platform using Software Guard Extensions (SGX) feature.
> > This patch adds support to query the SGX capability from the qemu.
> >
> > Signed-off-by: Haibin Huang <haibin.huang(a)intel.com>
> > ---
> > src/conf/domain_capabilities.c | 10 ++
> > src/conf/domain_capabilities.h | 13 ++
> > src/libvirt_private.syms | 1 +
> > src/qemu/qemu_capabilities.c | 119 ++++++++++++++++++
> > src/qemu/qemu_capabilities.h | 6 +
> > src/qemu/qemu_capspriv.h | 4 +
> > src/qemu/qemu_monitor.c | 10 ++
> > src/qemu/qemu_monitor.h | 3 +
> > src/qemu/qemu_monitor_json.c | 104 +++++++++++++--
> > src/qemu/qemu_monitor_json.h | 9 ++
> > .../caps_6.2.0.x86_64.replies | 22 +++-
> > .../caps_6.2.0.x86_64.xml | 5 +
> > .../caps_7.0.0.x86_64.replies | 22 +++-
> > .../caps_7.0.0.x86_64.xml | 5 +
> > 14 files changed, 318 insertions(+), 15 deletions(-)
>
> This is not a full review. Couple of points:
>
> 1) Do not mix other changes with adding QEMU_CAPS* stuff
> Basically theres waaay too much going on in this patch and it
> definitely can be separated into smaller chunks. The QEMU_CAPS is
> just one of them.
> Separate at least:
> - qemu monitor command introduction
> - domain capabilities data structs for sgx
> - parsing and formatting of the XML
> - adding of the QEMU_CAPS_ flag
> 2) caps for qemu-7.1 were added very recently
> You'll need to fix that one too since you added an extra query. Make
> sure that you _don't_ add the faking of SXG into that file, but
> rather the error case. My box doesn't support SGX so it will be
> overwritten in my next refresh anyways.
>
> [...]
>
> > @@ -4706,6 +4805,21 @@ virQEMUCapsFormatSEVInfo(virQEMUCaps
> *qemuCaps,
> > virBuffer *buf) }
> >
> >
> > +static void
> > +virQEMUCapsFormatSGXInfo(virQEMUCaps *qemuCaps,
> > + virBuffer *buf) {
> > + virSGXCapabilityPtr sgx =
> > +virQEMUCapsGetSGXCapabilities(qemuCaps);
> > +
> > + virBufferAddLit(buf, "<sgx>\n");
> > + virBufferAdjustIndent(buf, 2);
> > + virBufferAsprintf(buf, "<flc>%s</flc>\n",
sgx->flc ? "yes" :
> > + "no");
>
> Don't use the ternary operator ('?'), use a full if/else branch instead
or pick a
> better data structure.
>
[Haibin] do you mean change to like below?
if (sgx->flc) {
virBufferAsprintf(buf, "<flc>%s</flc>\n",
"yes");
} else {
virBufferAsprintf(buf, "<flc>%s</flc>\n", "no");
}
Yes. Alternatively you can use a temporary variable and fill that via an
'if' statement.
Finally you can use a virTristateBool variable type to hold the 'flc'
value and use our internal convertors for it.