From: Jean-Philippe Brucker <jean-philippe@linaro.org>
To: peter.maydell@linaro.org, richard.henderson@linaro.org
Cc: philmd@linaro.org, pbonzini@redhat.com, alex.bennee@linaro.org,
qemu-devel@nongnu.org, qemu-arm@nongnu.org,
Jean-Philippe Brucker <jean-philippe@linaro.org>
Subject: [PATCH v2 00/22] arm: Run CCA VMs with KVM
Date: Fri, 19 Apr 2024 16:56:48 +0100 [thread overview]
Message-ID: <20240419155709.318866-2-jean-philippe@linaro.org> (raw)
These patches enable launching a confidential guest with QEMU KVM on
Arm. The KVM changes for CCA have now been posted as v2 [1]. Launching a
confidential VM requires two additional command-line parameters:
-M confidential-guest-support=rme0
-object rme-guest,id=rme0
Since the RFC [2] I tried to address all review comments, and added a
few features:
* Enabled support for guest memfd by Xiaoyao Li and Chao Peng [3].
Guest memfd is mandatory for CCA.
* Support firmware boot (edk2).
* Use CPU command-line arguments for Realm parameters. SVE vector length
uses the existing sve<N> -cpu parameters, while breakpoints, watchpoints
and PMU counters use new CPU parameters.
The full series based on the memfd patches is at:
https://git.codelinaro.org/linaro/dcap/qemu.git branch cca/v2
Please find instructions for building and running the whole CCA stack at:
https://linaro.atlassian.net/wiki/spaces/QEMU/pages/29051027459/Building+an+RME+stack+for+QEMU
[1] https://lore.kernel.org/kvm/20240412084056.1733704-1-steven.price@arm.com/
[2] https://lore.kernel.org/all/20230127150727.612594-1-jean-philippe@linaro.org/
[3] https://lore.kernel.org/qemu-devel/20240322181116.1228416-1-pbonzini@redhat.com/
Jean-Philippe Brucker (22):
kvm: Merge kvm_check_extension() and kvm_vm_check_extension()
target/arm: Add confidential guest support
target/arm/kvm: Return immediately on error in kvm_arch_init()
target/arm/kvm-rme: Initialize realm
hw/arm/virt: Add support for Arm RME
hw/arm/virt: Disable DTB randomness for confidential VMs
hw/arm/virt: Reserve one bit of guest-physical address for RME
target/arm/kvm: Split kvm_arch_get/put_registers
target/arm/kvm-rme: Initialize vCPU
target/arm/kvm: Create scratch VM as Realm if necessary
hw/core/loader: Add ROM loader notifier
target/arm/kvm-rme: Populate Realm memory
hw/arm/boot: Register Linux BSS section for confidential guests
target/arm/kvm-rme: Add Realm Personalization Value parameter
target/arm/kvm-rme: Add measurement algorithm property
target/arm/cpu: Set number of breakpoints and watchpoints in KVM
target/arm/cpu: Set number of PMU counters in KVM
target/arm/kvm: Disable Realm reboot
target/arm/cpu: Inform about reading confidential CPU registers
target/arm/kvm-rme: Enable guest memfd
hw/arm/virt: Move virt_flash_create() to machvirt_init()
hw/arm/virt: Use RAM instead of flash for confidential guest firmware
docs/system/arm/virt.rst | 9 +-
docs/system/confidential-guest-support.rst | 1 +
qapi/qom.json | 34 +-
include/hw/arm/boot.h | 9 +
include/hw/arm/virt.h | 2 +-
include/hw/loader.h | 15 +
include/sysemu/kvm.h | 2 -
include/sysemu/kvm_int.h | 1 +
target/arm/cpu.h | 10 +
target/arm/kvm_arm.h | 25 ++
accel/kvm/kvm-all.c | 34 +-
hw/arm/boot.c | 45 ++-
hw/arm/virt.c | 118 ++++--
hw/core/loader.c | 15 +
target/arm/arm-qmp-cmds.c | 1 +
target/arm/cpu.c | 5 +
target/arm/cpu64.c | 118 ++++++
target/arm/kvm-rme.c | 413 +++++++++++++++++++++
target/arm/kvm.c | 200 +++++++++-
target/i386/kvm/kvm.c | 6 +-
target/ppc/kvm.c | 36 +-
target/arm/meson.build | 7 +-
22 files changed, 1023 insertions(+), 83 deletions(-)
create mode 100644 target/arm/kvm-rme.c
--
2.44.0
next reply other threads:[~2024-04-19 16:01 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-19 15:56 Jean-Philippe Brucker [this message]
2024-04-19 15:56 ` [PATCH v2 01/22] kvm: Merge kvm_check_extension() and kvm_vm_check_extension() Jean-Philippe Brucker
2024-04-19 15:56 ` [PATCH v2 02/22] target/arm: Add confidential guest support Jean-Philippe Brucker
2024-04-19 16:25 ` Daniel P. Berrangé
2024-04-23 9:44 ` Jean-Philippe Brucker
2024-04-23 9:49 ` Daniel P. Berrangé
2024-04-23 12:15 ` Markus Armbruster
2024-04-19 15:56 ` [PATCH v2 03/22] target/arm/kvm: Return immediately on error in kvm_arch_init() Jean-Philippe Brucker
2024-04-19 15:56 ` [PATCH v2 04/22] target/arm/kvm-rme: Initialize realm Jean-Philippe Brucker
2024-04-19 15:56 ` [PATCH v2 05/22] hw/arm/virt: Add support for Arm RME Jean-Philippe Brucker
2024-04-19 15:56 ` [PATCH v2 06/22] hw/arm/virt: Disable DTB randomness for confidential VMs Jean-Philippe Brucker
2024-04-19 15:56 ` [PATCH v2 07/22] hw/arm/virt: Reserve one bit of guest-physical address for RME Jean-Philippe Brucker
2024-04-19 15:56 ` [PATCH v2 08/22] target/arm/kvm: Split kvm_arch_get/put_registers Jean-Philippe Brucker
2024-04-19 15:56 ` [PATCH v2 09/22] target/arm/kvm-rme: Initialize vCPU Jean-Philippe Brucker
2024-04-19 15:56 ` [PATCH v2 10/22] target/arm/kvm: Create scratch VM as Realm if necessary Jean-Philippe Brucker
2024-04-19 15:56 ` [PATCH v2 11/22] hw/core/loader: Add ROM loader notifier Jean-Philippe Brucker
2024-04-19 15:57 ` [PATCH v2 12/22] target/arm/kvm-rme: Populate Realm memory Jean-Philippe Brucker
2024-04-19 15:57 ` [PATCH v2 13/22] hw/arm/boot: Register Linux BSS section for confidential guests Jean-Philippe Brucker
2024-04-19 15:57 ` [PATCH v2 14/22] target/arm/kvm-rme: Add Realm Personalization Value parameter Jean-Philippe Brucker
2024-04-23 12:17 ` Markus Armbruster
2024-04-23 12:20 ` Peter Maydell
2024-04-23 12:30 ` Daniel P. Berrangé
2024-04-23 12:35 ` Markus Armbruster
2024-04-19 15:57 ` [PATCH v2 15/22] target/arm/kvm-rme: Add measurement algorithm property Jean-Philippe Brucker
2024-04-23 12:23 ` Markus Armbruster
2024-04-19 15:57 ` [PATCH v2 16/22] target/arm/cpu: Set number of breakpoints and watchpoints in KVM Jean-Philippe Brucker
2024-04-19 15:57 ` [PATCH v2 17/22] target/arm/cpu: Set number of PMU counters " Jean-Philippe Brucker
2024-04-19 15:57 ` [PATCH v2 18/22] target/arm/kvm: Disable Realm reboot Jean-Philippe Brucker
2024-04-19 15:57 ` [PATCH v2 19/22] target/arm/cpu: Inform about reading confidential CPU registers Jean-Philippe Brucker
2024-04-19 15:57 ` [PATCH v2 20/22] target/arm/kvm-rme: Enable guest memfd Jean-Philippe Brucker
2024-04-19 15:57 ` [PATCH v2 21/22] hw/arm/virt: Move virt_flash_create() to machvirt_init() Jean-Philippe Brucker
2024-04-19 15:57 ` [PATCH v2 22/22] hw/arm/virt: Use RAM instead of flash for confidential guest firmware Jean-Philippe Brucker
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=20240419155709.318866-2-jean-philippe@linaro.org \
--to=jean-philippe@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/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).