All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC v2 00/24] Add Realm support to QEMU-VMM
@ 2026-07-28 19:26 Mathieu Poirier
  2026-07-28 19:26 ` [RFC v2 01/24] linux-headers: Add RME related definitions Mathieu Poirier
                   ` (24 more replies)
  0 siblings, 25 replies; 41+ messages in thread
From: Mathieu Poirier @ 2026-07-28 19:26 UTC (permalink / raw)
  To: berrange, kchamart, pierrick.bouvier, peter.maydell, mst, cohuck,
	pbonzini, eblake, armbru, lorenzo.pieralisi, gshan
  Cc: qemu-devel, qemu-arm, kvm

This patchset provides minimal functionality to start a Realm VM
from an Arm RME capable host using the following command line:

qemu-system-aarch64 \
 -M confidential-guest-support=rme0 -object rme-guest,id=rme0 \
 -cpu host -M virt -enable-kvm -M gic-version=3,its=on -nodefaults ..

It is a refactoring of Jean-Philippe Brucker's initial work dating from a while
back.  It is compatible with Steven Price's v14 revision [1] of his work adding
CCA support to KVM.

* We are currently working on rebasing the work to v15.

It was tested on the QEMU SBSA machine.  For convenience, a repository is hosted
here [2], along with the TF-A [3], RMM [4] and Linux kernel [5] for the SBSA
machine (compatible with Steven's v14 patchset).

Instructions to compile and run the entire stack can be found here [6].

Device Assignment is not included.

Thanks,
Mathieu

[1]. https://lore.kernel.org/kvm/20260513131757.116630-1-steven.price@arm.com/T/#m06dd14216aaf76acab65b0a76fb84653141ea64f
[2]. https://gitlab.com/Linaro/cca-public/qemu/-/tree/upstream-v2?ref_type=heads
[3]. https://gitlab.com/Linaro/cca-public/tf-a/trusted-firmware-a/-/tree/cca/v13?ref_type=heads
[4]. https://gitlab.com/Linaro/cca-public/rmm/-/tree/cca/v14?ref_type=heads
[5]. https://gitlab.com/Linaro/cca-public/linux/-/tree/upstream-v2?ref_type=heads 
[6]. https://gitlab.com/Linaro/cca-public/build-instructions

RFC v1:
https://lists.gnu.org/archive/html/qemu-devel/2026-07/msg02307.html

Changes for V2:
- Fixed linux headers to include correct bit shift for Realm VM (Gavin).
- Removed obsolete rme-guest options (Markus).
- Set ConfidentialGuestSupportClass::kvm_init() to kvm_arm_rme_init() (Gavin).
- Got rid of kvm_arm_rme_vm_type() (Gavin).
- Used kvm_vm_check_extension() instead of kvm_check_extension() to avoid
  error message when starting a Realm (Gavin).
- Removed obsolete kvm_arm_rme_init_guest_ram() (Gavin).
- Collected A-B and R-B.

Jean-Philippe Brucker (23):
  linux-headers: Add RME related definitions
  target/arm/kvm: Return immediately on error in kvm_arch_init()
  target/arm: Add confidential guest support
  target/arm/kvm: Split kvm_arch_get/put_registers
  target/arm/kvm-rme: Initialize vCPU
  target/arm/kvm: Create scratch Realm VM when requested
  target/arm/kvm: Use kvm_vm_check_extension() where necessary
  hw/core/loader: Add a ROM loader notifier
  target/arm/kvm-rme: Keep track of images loaded in Realm memory
  target/arm/kvm-rme: Populate Realm with runtime images
  target/arm/cpu: Set number of breakpoints and watchpoints in KVM
  target/arm/cpu: Set number of PMU counters in KVM
  target/arm/cpu: Don't read Realm registers
  hw/arm/virt: Set proper conduit method for Realms
  hw/arm/virt: Embed Realm VM type with IPA address space
  hw/arm/virt: Reserve one bit of guest physical address for RME
  hw/arm/virt: Disable DTB randomness for confidential VMs
  hw/arm/virt: Move virt_flash_create() to machvirt_init()
  hw/arm/virt: Use RAM instead of flash for confidential guest firmware
  target/arm/kvm-rme: Add DMA remapping for the shared memory region
  docs/interop/firmware.json: Add arm-rme firmware feature
  hw/arm/boot: Load DTB as is for confidential VMs
  hw/arm/boot: Skip bootloader for confidential guests

Mathieu Poirier (1):
  target/arm/kvm-rme: Add mechanic to initialize realms

 docs/interop/firmware.json                 |   5 +-
 docs/system/arm/virt.rst                   |   9 +-
 docs/system/confidential-guest-support.rst |   1 +
 hw/arm/boot.c                              |  70 ++++-
 hw/arm/virt.c                              | 142 ++++++++--
 hw/core/loader.c                           |  15 +
 include/hw/arm/boot.h                      |   9 +
 include/hw/arm/virt.h                      |   2 +-
 include/hw/core/loader.h                   |  17 ++
 linux-headers/asm-arm64/kvm.h              |   9 +
 linux-headers/linux/kvm.h                  |  10 +-
 qapi/qom.json                              |   1 +
 target/arm/arm-qmp-cmds.c                  |   1 +
 target/arm/cpu.c                           |   5 +
 target/arm/cpu.h                           |  10 +
 target/arm/cpu64.c                         | 122 ++++++++
 target/arm/kvm-rme.c                       | 313 +++++++++++++++++++++
 target/arm/kvm-stub.c                      |   9 +
 target/arm/kvm.c                           | 202 ++++++++++++-
 target/arm/kvm_arm.h                       |  20 ++
 target/arm/meson.build                     |   5 +-
 21 files changed, 927 insertions(+), 50 deletions(-)
 create mode 100644 target/arm/kvm-rme.c

-- 
2.43.0


^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2026-08-27 12:56 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-28 19:26 [RFC v2 00/24] Add Realm support to QEMU-VMM Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 01/24] linux-headers: Add RME related definitions Mathieu Poirier
2026-07-30  5:41   ` Kohei Enju
2026-07-30  5:41     ` Kohei Enju via qemu development
2026-07-30  5:41     ` Kohei Enju via
2026-07-30  6:08     ` Gavin Shan
2026-07-30  6:13       ` Kohei Enju via
2026-07-30  6:13         ` Kohei Enju
2026-07-30  6:13         ` Kohei Enju via qemu development
2026-07-28 19:26 ` [RFC v2 02/24] target/arm/kvm: Return immediately on error in kvm_arch_init() Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 03/24] target/arm: Add confidential guest support Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 04/24] target/arm/kvm-rme: Add mechanic to initialize realms Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 05/24] target/arm/kvm: Split kvm_arch_get/put_registers Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 06/24] target/arm/kvm-rme: Initialize vCPU Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 07/24] target/arm/kvm: Create scratch Realm VM when requested Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 08/24] target/arm/kvm: Use kvm_vm_check_extension() where necessary Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 09/24] hw/core/loader: Add a ROM loader notifier Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 10/24] target/arm/kvm-rme: Keep track of images loaded in Realm memory Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 11/24] target/arm/kvm-rme: Populate Realm with runtime images Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 12/24] target/arm/cpu: Set number of breakpoints and watchpoints in KVM Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 13/24] target/arm/cpu: Set number of PMU counters " Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 14/24] target/arm/cpu: Don't read Realm registers Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 15/24] hw/arm/virt: Set proper conduit method for Realms Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 16/24] hw/arm/virt: Embed Realm VM type with IPA address space Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 17/24] hw/arm/virt: Reserve one bit of guest physical address for RME Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 18/24] hw/arm/virt: Disable DTB randomness for confidential VMs Mathieu Poirier
2026-08-27 12:55   ` Daniel P. Berrangé
2026-07-28 19:26 ` [RFC v2 19/24] hw/arm/virt: Move virt_flash_create() to machvirt_init() Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 20/24] hw/arm/virt: Use RAM instead of flash for confidential guest firmware Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 21/24] target/arm/kvm-rme: Add DMA remapping for the shared memory region Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 22/24] docs/interop/firmware.json: Add arm-rme firmware feature Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 23/24] hw/arm/boot: Load DTB as is for confidential VMs Mathieu Poirier
2026-07-28 19:26 ` [RFC v2 24/24] hw/arm/boot: Skip bootloader for confidential guests Mathieu Poirier
2026-07-30  5:11 ` [RFC v2 00/24] Add Realm support to QEMU-VMM Kohei Enju
2026-07-30  5:11   ` Kohei Enju via qemu development
2026-07-30  5:11   ` Kohei Enju via
2026-08-09 13:06   ` Mathieu Poirier
2026-08-25 21:09   ` Mathieu Poirier
2026-08-27 12:38     ` Kohei Enju
2026-08-27 12:38       ` Kohei Enju via
2026-08-27 12:38       ` Kohei Enju via qemu development

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.