xemu/qapi
Michael Roth 16dcf200dc i386/sev: Introduce "sev-common" type to encapsulate common SEV state
Currently all SEV/SEV-ES functionality is managed through a single
'sev-guest' QOM type. With upcoming support for SEV-SNP, taking this
same approach won't work well since some of the properties/state
managed by 'sev-guest' is not applicable to SEV-SNP, which will instead
rely on a new QOM type with its own set of properties/state.

To prepare for this, this patch moves common state into an abstract
'sev-common' parent type to encapsulate properties/state that are
common to both SEV/SEV-ES and SEV-SNP, leaving only SEV/SEV-ES-specific
properties/state in the current 'sev-guest' type. This should not
affect current behavior or command-line options.

As part of this patch, some related changes are also made:

  - a static 'sev_guest' variable is currently used to keep track of
    the 'sev-guest' instance. SEV-SNP would similarly introduce an
    'sev_snp_guest' static variable. But these instances are now
    available via qdev_get_machine()->cgs, so switch to using that
    instead and drop the static variable.

  - 'sev_guest' is currently used as the name for the static variable
    holding a pointer to the 'sev-guest' instance. Re-purpose the name
    as a local variable referring the 'sev-guest' instance, and use
    that consistently throughout the code so it can be easily
    distinguished from sev-common/sev-snp-guest instances.

  - 'sev' is generally used as the name for local variables holding a
    pointer to the 'sev-guest' instance. In cases where that now points
    to common state, use the name 'sev_common'; in cases where that now
    points to state specific to 'sev-guest' instance, use the name
    'sev_guest'

In order to enable kernel-hashes for SNP, pull it from
SevGuestProperties to its parent SevCommonProperties so
it will be available for both SEV and SNP.

Signed-off-by: Michael Roth <michael.roth@amd.com>
Co-developed-by: Dov Murik <dovmurik@linux.ibm.com>
Signed-off-by: Dov Murik <dovmurik@linux.ibm.com>
Acked-by: Markus Armbruster <armbru@redhat.com> (QAPI schema)
Co-developed-by: Pankaj Gupta <pankaj.gupta@amd.com>
Signed-off-by: Pankaj Gupta <pankaj.gupta@amd.com>
Message-ID: <20240530111643.1091816-5-pankaj.gupta@amd.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2024-06-05 11:01:06 +02:00
..
acpi.json qapi: Require descriptions and tagged sections to be indented 2024-02-26 10:43:56 +01:00
audio.json audio/pw: Pipewire->PipeWire case fix for user-visible text 2023-07-17 15:22:56 +04:00
authz.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
block-core.json qapi: blockdev-backup: add discard-source parameter 2024-05-28 15:52:15 +03:00
block-export.json qapi: Move error documentation to new "Errors" sections 2024-03-04 07:12:40 +01:00
block.json qapi: Refill doc comments to conform to current conventions 2024-03-26 06:36:08 +01:00
char.json qapi: Delete useless "Returns" sections 2024-03-04 07:12:40 +01:00
common.json qapi: document PCIe Gen5/Gen6 speeds since 9.0 2024-03-18 04:57:45 -04:00
compat.json qapi: Belatedly update CompatPolicy documentation for unstable 2023-10-19 07:02:29 +02:00
control.json qapi: Drop stray Arguments: line from qmp_capabilities docs 2024-03-26 06:36:08 +01:00
crypto.json qapi: Correct documentation indentation and whitespace 2024-03-26 06:36:08 +01:00
cryptodev.json spelling: information 2023-06-09 23:38:16 +03:00
cxl.json qapi: Refill doc comments to conform to current conventions 2024-03-26 06:36:08 +01:00
dump.json qapi: Correct documentation indentation and whitespace 2024-03-26 06:36:08 +01:00
ebpf.json qapi: Refill doc comments to conform to current conventions 2024-03-26 06:36:08 +01:00
error.json qapi: Reformat doc comments to conform to current conventions 2023-05-10 10:01:01 +02:00
introspect.json qapi: Drop redundant documentation of inherited members 2024-02-03 09:19:25 +01:00
job.json blockjob: introduce block-job-change QMP command 2023-10-31 18:20:25 +01:00
machine-common.json CPU topology: extend with s390 specifics 2023-10-20 07:16:53 +02:00
machine-target.json target/s390x: report deprecated-props in cpu-model-expansion reply 2024-05-10 08:34:20 +02:00
machine.json hw/core: Introduce module-id as the topology subindex 2024-04-25 12:48:12 +02:00
meson.build qapi/vfio: Add VFIO migration QAPI event 2024-05-16 16:59:19 +02:00
migration.json migration: Remove non-multifd compression 2024-05-08 09:20:59 -03:00
misc-target.json qapi: Delete useless "Returns" sections 2024-03-04 07:12:40 +01:00
misc.json qapi: Correct documentation indentation and whitespace 2024-03-26 06:36:08 +01:00
net.json qapi: Refill doc comments to conform to current conventions 2024-03-26 06:36:08 +01:00
opts-visitor.c qapi: Inline and remove QERR_INVALID_PARAMETER definition 2024-04-24 09:50:58 +02:00
pci.json qapi: Require descriptions and tagged sections to be indented 2024-02-26 10:43:56 +01:00
pragma.json qapi: document parameters of query-cpu-model-* QAPI commands 2024-03-26 06:36:08 +01:00
qapi-clone-visitor.c qapi: Do not cast function pointers 2024-05-29 12:41:56 +02:00
qapi-dealloc-visitor.c qapi: Make visitor functions taking Error ** return bool, not void 2020-07-10 15:18:08 +02:00
qapi-forward-visitor.c qapi: remove needless include 2022-03-22 14:46:18 +04:00
qapi-schema.json qapi/vfio: Add VFIO migration QAPI event 2024-05-16 16:59:19 +02:00
qapi-type-helpers.c qapi: New strv_from_str_list() 2024-03-04 07:12:40 +01:00
qapi-util.c qapi: Fix dangling references to docs/devel/qapi-code-gen.txt 2024-01-26 07:04:53 +01:00
qapi-visit-core.c qapi: Factor out compat_policy_input_ok() 2021-10-29 21:27:20 +02:00
qdev.json qapi: Delete useless "Returns" sections 2024-03-04 07:12:40 +01:00
qmp-dispatch.c monitor: use aio_co_reschedule_self() 2024-02-07 14:44:21 +01:00
qmp-event.c Replace qemu_gettimeofday() with g_get_real_time() 2022-04-06 10:50:37 +02:00
qmp-registry.c qapi: Generalize command policy checking 2021-10-29 18:24:46 +02:00
qobject-input-visitor.c qapi: Inline QERR_INVALID_PARAMETER_TYPE definition (constant value) 2024-04-24 09:50:58 +02:00
qobject-output-visitor.c qapi: Extend -compat to set policy for unstable interfaces 2021-10-29 21:28:01 +02:00
qom.json i386/sev: Introduce "sev-common" type to encapsulate common SEV state 2024-06-05 11:01:06 +02:00
replay.json qapi: Expand a few awkward abbreviations in documentation 2024-03-26 06:36:08 +01:00
rocker.json qapi: Require descriptions and tagged sections to be indented 2024-02-26 10:43:56 +01:00
run-state.json qapi: document leftover members in qapi/run-state.json 2024-03-26 06:36:08 +01:00
sockets.json qapi: Correct documentation indentation and whitespace 2024-03-26 06:36:08 +01:00
stats.json qapi: document leftover members in qapi/stats.json 2024-03-26 06:36:08 +01:00
string-input-visitor.c qapi: Inline QERR_INVALID_PARAMETER_TYPE definition (constant value) 2024-04-24 09:50:58 +02:00
string-output-visitor.c string-output-visitor: Fix (pseudo) struct handling 2024-01-26 11:16:58 +01:00
tpm.json qapi: Delete useless "Returns" sections 2024-03-04 07:12:40 +01:00
trace-events qapi: Generalize struct member policy checking 2021-10-29 18:23:09 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
trace.json qapi: Require descriptions and tagged sections to be indented 2024-02-26 10:43:56 +01:00
transaction.json qapi: Delete useless "Returns" sections 2024-03-04 07:12:40 +01:00
ui.json qapi: document InputMultiTouchType 2024-03-26 06:36:08 +01:00
vfio.json qapi/vfio: Add VFIO migration QAPI event 2024-05-16 16:59:19 +02:00
virtio.json qapi: Refill doc comments to conform to current conventions 2024-03-26 06:36:08 +01:00
yank.json qapi/yank: Tweak @yank's error description for consistency 2024-03-04 07:12:40 +01:00