Re: [RFC v1 00/25] Add Realm support to QEMU-VMM

Gavin Shan <[email protected]>
Newsgroups org.nongnu.qemu-arm,org.kernel.vger.kvm,org.nongnu.qemu-devel
Message-ID <[email protected]>
Hi Mathieu,

On 7/8/26 8:42 AM, Mathieu Poirier wrote:
> This patchset provides minimal functionality to start a Realm VM
> from an Arm RME cabable 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 ..
> 
> This set 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.
> 
> The RME capable host it was tested on is the QEMU SBSA machine.  For convenicence
> a repository is hosted here [2], along with the TF-A [3], RMM [4] and Linux
> kernel [5] for the SBSA machine (all compatible with Steven's v14 patchset).
> 
> Device Assignment is not included.
> 
>  From hereon I will keep this set up to date with new releases from Steven.
> 
> Thanks,
> Mathieu
> 
> [1]. https://lore.kernel.org/kvm/[email protected]/T/#m06dd14216aaf76acab65b0a76fb84653141ea64f
> [2]. https://gitlab.com/Linaro/cca-public/qemu/-/tree/upstream-v1?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/cca/v14?ref_type=heads
> 
[...]

Gave this series + (v14) series a try and found the following issues so far. Note
some of the HMP commands like those relevant to migration have been skipped since
we know the migration isn't supported. I list the issues for record and we eventually
need to figure them out one by one.

(1) qemu is terminiated on exeute qmp command 'dump-guest-memory'

(qemu) dump-guest-memory -p "/tmp/mem" 0x40000000 0x10000000
**
ERROR:../system/memory_mapping.c:215:guest_phys_block_add_section: assertion failed: (predecessor->target_end <= target_start)
Bail out! ERROR:../system/memory_mapping.c:215:guest_phys_block_add_section: assertion failed: (predecessor->target_end <= target_start)
Aborted

(2) qemu emulation can't be stopped and resumed

(qemu) stop
(qemu) cont
Failed to set KVM_REG_ARM_TIMER_CNT

(3) qemu is terminiated on qmp command 'system_reset'

(qemu) system_reset
cpus are not resettable, terminating

(4) Incompatible to virtio-iommu-pci. The realm guest doesn't boot up with
     a virtio-iommu-pci device

host$ qemu-system-aarch64 -enable-kvm -object rme-guest,id=rme0                \
-machine virt,gic-version=3,confidential-guest-support=rme0                    \
-m 2G -cpu host -smp maxcpus=4,cpus=4,sockets=1,clusters=1,cores=2,threads=2   \
-object memory-backend-ram,id=mem0,size=2G,share=yes                           \
-numa node,nodeid=0,cpus=0-3,memdev=mem0                                       \
-serial mon:stdio -monitor none -nographic -nodefaults                         \
-bios /mnt/edk2/Build/ArmVirtQemu-AARCH64/RELEASE_GCC5/FV/QEMU_EFI.fd          \
-kernel /mnt/linux/arch/arm64/boot/Image                                       \
-initrd /mnt/buildroot/output/images/rootfs.cpio.xz                            \
-append earlycon=pl011,mmio,0x10009000000                                      \
-device pcie-root-port,bus=pcie.0,chassis=1,id=pcie.1                          \
-device pcie-root-port,bus=pcie.0,chassis=2,id=pcie.2                          \
-device virtio-iommu-pci,bus=pcie.0                                            \
-netdev tap,id=tap1,vhost=on,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown \
-device virtio-net-pci,bus=pcie.2,netdev=tap1,mac=b8:3f:d2:1d:3e:c0
         :
UEFI firmware (version  built at 00:09:11 on Jun 30 2026)
         :
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x000f0510]
[    0.000000] Linux version 7.2.0-rc4-gavin-g1590cf032971 ([email protected]) (gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4), GNU ld version 2.41-65.el10) #46 SMP PREEMPT Mon Jul 20 06:56:20 EDT 2026
[    0.000000] KASLR enabled
[    0.000000] earlycon: pl11 at MMIO 0x0000010009000000 (options '')
[    0.000000] printk: legacy bootconsole [pl11] enabled
[    0.000000] efi: EFI v2.7 by EDK II
[    0.000000] efi: SMBIOS 3.0=0xbff60000 ACPI 2.0=0xbdee2018 INITRD=0xbdd94f18 RNG=0xbdee2a18 MEMRESERVE=0xbdd94f98
         :
[   18.374507] virtio-pci 0000:00:03.0: enabling device (0000 -> 0002)
[   18.594890] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[   18.651840] Serial: AMBA driver
[   19.669576] software IO TLB: Memory encryption is active and system is using DMA bounce buffers
[   35.021315] Freeing initrd memory: 5772K
[   40.984997] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[   41.076752] rcu: 	3-...0: (77 ticks this GP) idle=aed4/1/0x4000000000000000 softirq=83/97 fqs=2365
[   41.210687] rcu: 	(detected by 2, t=5307 jiffies, g=-1079, q=352 ncpus=4)
[   41.311646] Sending NMI from CPU 2 to CPUs 3:
[   51.631564] After 10 seconds, these CPUS still haven't responded to the NMI: 3
[   51.739789] rcu: rcu_preempt kthread timer wakeup didn't happen for 2685 jiffies! g-1079 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402
[   51.910690] rcu: 	Possible timer handling issue on cpu=2 timer-softirq=2168
[   52.014654] rcu: rcu_preempt kthread starved for 2756 jiffies! g-1079 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402 ->cpu=2
[   52.169468] rcu: 	Unless rcu_preempt kthread gets sufficient CPU time, OOM is now expected behavior.
[   52.304725] rcu: RCU grace-period kthread stack dump:
[   52.379337] task:rcu_preempt     state:I stack:0     pid:15    tgid:15    ppid:2      task_flags:0x208040 flags:0x00000010
[   52.542813] Call trace:
[   52.578516]  __switch_to+0xfc/0x248 (T)
[   52.636293]  __schedule+0x3a4/0xe68
[   52.686511]  schedule+0x3c/0xe8
[   52.731765]  schedule_timeout+0x80/0x120
[   52.788489]  rcu_gp_fqs_loop+0x110/0x440
[   52.846921]  rcu_gp_kthread+0x10c/0x120
[   52.906472]  kthread+0x138/0x150
[   52.955082]  ret_from_fork+0x10/0x20

(5) As reported previously, 'reboot' on the realm guest causes the termination of qemu process.

root@guest:~# reboot
     :
The system is going down NOW!
Sent SIGTERM to all processes
Sent SIGKILL to all processes
Requesting system reboot
[   61.874435] reboot: Restarting system
qemu-system-aarch64: cpus are not resettable, terminating
qemu-system-aarch64: cpus are not resettable, terminating
qemu-system-aarch64: cpus are not resettable, terminating
qemu-system-aarch64: cpus are not resettable, terminating

Thanks,
Gavin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.