From: Roy Hopkins <roy.hopkins@randomman.co.uk>
To: qemu-devel@nongnu.org
Cc: Roy Hopkins <roy.hopkins@randomman.co.uk>,
Paolo Bonzini <pbonzini@redhat.com>,
"Daniel P . Berrange" <berrange@redhat.com>,
Stefano Garzarella <sgarzare@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
"Michael S . Tsirkin" <mst@redhat.com>,
Cornelia Huck <cohuck@redhat.com>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
Sergio Lopez <slp@redhat.com>,
Eduardo Habkost <eduardo@habkost.net>,
Alistair Francis <alistair@alistair23.me>,
Peter Xu <peterx@redhat.com>,
David Hildenbrand <david@redhat.com>,
Igor Mammedov <imammedo@redhat.com>,
Tom Lendacky <thomas.lendacky@amd.com>,
Michael Roth <michael.roth@amd.com>,
Ani Sinha <anisinha@redhat.com>, Joerg Roedel <jroedel@suse.com>
Subject: [PATCH v7 00/16] Introduce support for IGVM files
Date: Thu, 27 Feb 2025 13:38:08 +0000 [thread overview]
Message-ID: <cover.1740663410.git.roy.hopkins@randomman.co.uk> (raw)
Here is v7 of the set of patches to add support for IGVM files to QEMU. This is
based on commit 40efe733e10cc00e4fb4f9f5790a28e744e63c62 of qemu.
Firstly, apologies for the amount of time between the last version and this one.
I moved roles to a different company and, although I always planned to see this
patch series to completion, it took a while before I found time to setup a
development environment and be in a position to send a new version. I will
continue this series using a personal email address for now, hence the change
to the author and signed-off-by emails.
The only changes in this version are to rebase on the current master branch and
update commit metadata, including Signed-Off-By and Author emails for my
replacement email address, and to include the final Reviewed-By that were added
in the last review. There were no requested changes on the previous version [1]
so I believe this series is ready to merge.
As always, thanks to those that have been following along, reviewing and testing
this series. This v7 patch series is also available on github: [2]
For testing IGVM support in QEMU you need to generate an IGVM file that is
configured for the platform you want to launch. You can use the `buildigvm`
test tool [3] to allow generation of IGVM files for all currently supported
platforms. Patch 11/17 contains information on how to generate an IGVM file
using this tool.
Changes in v7:
* Update version numbers for IGVM support to 10.0
* Add Reviewed-by to relevant commits.
* Update Author email and sign-offs to my new email address
Patch summary:
1-11: Add support and documentation for processing IGVM files for SEV, SEV-ES,
SEV-SNP and native platforms.
12-15: Processing of policy and SEV-SNP ID_BLOCK from IGVM file.
16: Add pre-processing of IGVM file to support synchronization of 'SEV_FEATURES'
from IGVM VMSA to KVM.
[1] Link to v6:
https://lore.kernel.org/qemu-devel/cover.1727341768.git.roy.hopkins@suse.com/
[2] v7 patches also available here:
https://github.com/roy-hopkins/qemu/tree/igvm_master_v7
[3] `buildigvm` tool v0.2.0
https://github.com/roy-hopkins/buildigvm/releases/tag/v0.2.0
Roy Hopkins (16):
meson: Add optional dependency on IGVM library
backends/confidential-guest-support: Add functions to support IGVM
backends/igvm: Add IGVM loader and configuration
hw/i386: Add igvm-cfg object and processing for IGVM files
i386/pc_sysfw: Ensure sysfw flash configuration does not conflict with
IGVM
sev: Update launch_update_data functions to use Error handling
target/i386: Allow setting of R_LDTR and R_TR with
cpu_x86_load_seg_cache()
i386/sev: Refactor setting of reset vector and initial CPU state
i386/sev: Implement ConfidentialGuestSupport functions for SEV
docs/system: Add documentation on support for IGVM
docs/interop/firmware.json: Add igvm to FirmwareDevice
backends/confidential-guest-support: Add set_guest_policy() function
backends/igvm: Process initialization sections in IGVM file
backends/igvm: Handle policy for SEV guests
i386/sev: Add implementation of CGS set_guest_policy()
sev: Provide sev_features flags from IGVM VMSA to KVM_SEV_INIT2
backends/confidential-guest-support.c | 43 +
backends/igvm-cfg.c | 52 ++
backends/igvm.c | 967 ++++++++++++++++++++
backends/igvm.h | 23 +
backends/meson.build | 5 +
docs/interop/firmware.json | 30 +-
docs/system/i386/amd-memory-encryption.rst | 2 +
docs/system/igvm.rst | 173 ++++
docs/system/index.rst | 1 +
hw/i386/pc.c | 12 +
hw/i386/pc_piix.c | 10 +
hw/i386/pc_q35.c | 10 +
hw/i386/pc_sysfw.c | 31 +-
include/hw/i386/x86.h | 3 +
include/system/confidential-guest-support.h | 88 ++
include/system/igvm-cfg.h | 47 +
meson.build | 8 +
meson_options.txt | 2 +
qapi/qom.json | 17 +
qemu-options.hx | 28 +
scripts/meson-buildoptions.sh | 3 +
target/i386/cpu.h | 9 +-
target/i386/sev.c | 850 +++++++++++++++--
target/i386/sev.h | 124 +++
24 files changed, 2454 insertions(+), 84 deletions(-)
create mode 100644 backends/igvm-cfg.c
create mode 100644 backends/igvm.c
create mode 100644 backends/igvm.h
create mode 100644 docs/system/igvm.rst
create mode 100644 include/system/igvm-cfg.h
--
2.43.0
next reply other threads:[~2025-02-27 13:59 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-27 13:38 Roy Hopkins [this message]
2025-02-27 13:38 ` [PATCH v7 01/16] meson: Add optional dependency on IGVM library Roy Hopkins
2025-02-27 13:44 ` [PATCH v7 02/16] backends/confidential-guest-support: Add functions to support IGVM Roy Hopkins
2025-02-27 13:44 ` [PATCH v7 03/16] backends/igvm: Add IGVM loader and configuration Roy Hopkins
2025-02-28 13:13 ` Gerd Hoffmann
2025-06-13 10:54 ` Roy Hopkins
2025-03-03 9:03 ` David Hildenbrand
2025-02-27 13:49 ` [PATCH v7 04/16] hw/i386: Add igvm-cfg object and processing for IGVM files Roy Hopkins
2025-02-27 14:29 ` [PATCH v7 05/16] i386/pc_sysfw: Ensure sysfw flash configuration does not conflict with IGVM Roy Hopkins
2025-02-27 14:29 ` [PATCH v7 06/16] sev: Update launch_update_data functions to use Error handling Roy Hopkins
2025-02-27 14:29 ` [PATCH v7 07/16] target/i386: Allow setting of R_LDTR and R_TR with cpu_x86_load_seg_cache() Roy Hopkins
2025-02-27 14:29 ` [PATCH v7 08/16] i386/sev: Refactor setting of reset vector and initial CPU state Roy Hopkins
2025-02-27 17:06 ` Gupta, Pankaj
2025-02-27 14:29 ` [PATCH v7 09/16] i386/sev: Implement ConfidentialGuestSupport functions for SEV Roy Hopkins
2025-02-27 14:29 ` [PATCH v7 10/16] docs/system: Add documentation on support for IGVM Roy Hopkins
2025-02-27 17:12 ` Gupta, Pankaj
2025-02-27 14:29 ` [PATCH v7 11/16] docs/interop/firmware.json: Add igvm to FirmwareDevice Roy Hopkins
2025-02-28 13:15 ` Gerd Hoffmann
2025-02-27 14:29 ` [PATCH v7 12/16] backends/confidential-guest-support: Add set_guest_policy() function Roy Hopkins
2025-02-27 14:29 ` [PATCH v7 13/16] backends/igvm: Process initialization sections in IGVM file Roy Hopkins
2025-02-27 14:29 ` [PATCH v7 14/16] backends/igvm: Handle policy for SEV guests Roy Hopkins
2025-02-27 14:29 ` [PATCH v7 15/16] i386/sev: Add implementation of CGS set_guest_policy() Roy Hopkins
2025-02-27 14:29 ` [PATCH v7 16/16] sev: Provide sev_features flags from IGVM VMSA to KVM_SEV_INIT2 Roy Hopkins
2025-02-27 15:32 ` [PATCH v7 00/16] Introduce support for IGVM files Stefano Garzarella
2025-02-27 16:12 ` Roy Hopkins
2025-02-28 9:26 ` Stefano Garzarella
2025-02-27 15:35 ` [PATCH v7 16/16] sev: Provide sev_features flags from IGVM VMSA to KVM_SEV_INIT2 Roy Hopkins
2025-02-27 15:47 ` Roy Hopkins
2025-02-27 15:56 ` Roy Hopkins
2025-02-28 13:18 ` [PATCH v7 00/16] Introduce support for IGVM files Gerd Hoffmann
2025-03-05 15:47 ` Stefano Garzarella
2025-03-06 11:48 ` Roy Hopkins
2025-03-06 13:09 ` Stefano Garzarella
2025-05-20 10:01 ` Ani Sinha
[not found] ` <b43aa3fa.AUoAAGOlyUYAAAAAAAAAA9cBm3AAAYKJZwAAAAAAAC5ATwBnwHdy@mailjet.com>
2025-06-12 12:03 ` [PATCH v7 08/16] i386/sev: Refactor setting of reset vector and initial CPU state Ani Sinha
2025-06-16 8:39 ` Ani Sinha
[not found] ` <ec4fb8e4.AUUAAGN5T_UAAAAAAAAAA9cBm3AAAYKJZwAAAAAAAC5ATwBnwULW@mailjet.com>
2025-06-13 12:11 ` [PATCH v7 15/16] i386/sev: Add implementation of CGS set_guest_policy() Ani Sinha
2025-06-13 12:20 ` Roy Hopkins
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=cover.1740663410.git.roy.hopkins@randomman.co.uk \
--to=roy.hopkins@randomman.co.uk \
--cc=alistair@alistair23.me \
--cc=anisinha@redhat.com \
--cc=berrange@redhat.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=eduardo@habkost.net \
--cc=imammedo@redhat.com \
--cc=jroedel@suse.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=michael.roth@amd.com \
--cc=mst@redhat.com \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=sgarzare@redhat.com \
--cc=slp@redhat.com \
--cc=thomas.lendacky@amd.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).