From: Suzuki K Poulose <suzuki.poulose@arm.com>
To: Gavin Shan <gshan@redhat.com>,
Steven Price <steven.price@arm.com>,
Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: kvm@vger.kernel.org, kvmarm@lists.linux.dev,
Catalin Marinas <catalin.marinas@arm.com>,
Marc Zyngier <maz@kernel.org>, Will Deacon <will@kernel.org>,
James Morse <james.morse@arm.com>,
Oliver Upton <oliver.upton@linux.dev>,
Zenghui Yu <yuzenghui@huawei.com>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, Joey Gouly <joey.gouly@arm.com>,
Alexandru Elisei <alexandru.elisei@arm.com>,
Christoffer Dall <christoffer.dall@arm.com>,
Fuad Tabba <tabba@google.com>,
linux-coco@lists.linux.dev,
Ganapatrao Kulkarni <gankulkarni@os.amperecomputing.com>,
Shanker Donthineni <sdonthineni@nvidia.com>,
Alper Gun <alpergun@google.com>,
"Aneesh Kumar K . V" <aneesh.kumar@kernel.org>,
Emi Kisanuki <fj0570is@fujitsu.com>,
Vishal Annapurve <vannapurve@google.com>
Subject: Re: [PATCH v13 00/48] arm64: Support for Arm CCA in KVM
Date: Thu, 26 Mar 2026 11:22:50 +0000 [thread overview]
Message-ID: <44109e80-b46f-404c-bc69-d019c923faac@arm.com> (raw)
In-Reply-To: <807b844c-32f6-4094-8c24-15d7eb1d3638@redhat.com>
Hi Gavin,
On 26/03/2026 00:48, Gavin Shan wrote:
> Hi Suzuki,
>
> On 3/25/26 8:16 PM, Suzuki K Poulose wrote:
>> On 25/03/2026 06:37, Gavin Shan wrote:
>>> On 3/21/26 2:45 AM, Steven Price wrote:
>
> [...]
>
>>>
>>> In upstream TF-A repository [1], I don't see the config option
>>> 'RMM_V1_COMPAT'.
>>> would it be something else?
>>>
>>> [1] git@github.com:ARM-software/arm-trusted-firmware.git (branch:
>>> master)
>>>
>>
>> suzuki@ewhatever:trusted-firmware-a$ git grep RMM_V1_COMPAT
>> Makefile: RMM_V1_COMPAT \
>> Makefile: RMM_V1_COMPAT \
>> docs/getting_started/build-options.rst:- ``RMM_V1_COMPAT``: Boolean
>> flag to enable support for RMM v1.x compatibility
>> include/services/rmmd_svc.h:#if RMM_V1_COMPAT
>> include/services/rmmd_svc.h:#endif /* RMM_V1_COMPAT */
>> make_helpers/defaults.mk:RMM_V1_COMPAT := 1
>> services/std_svc/rmmd/rmmd_main.c:#if RMM_V1_COMPAT
>> services/std_svc/rmmd/rmmd_main.c:#if RMM_V1_COMPAT
>> services/std_svc/rmmd/rmmd_main.c:#if !RMM_V1_COMPAT
>> services/std_svc/rmmd/rmmd_main.c:#if RMM_V1_COMPAT
>> services/std_svc/rmmd/rmmd_main.c:#if RMM_V1_COMPAT
>> services/std_svc/rmmd/rmmd_main.c:#if RMM_V1_COMPAT
>> services/std_svc/rmmd/rmmd_rmm_lfa.c:#if RMM_V1_COMPAT
>> services/std_svc/rmmd/rmmd_rmm_lfa.c:#if RMM_V1_COMPAT
>> services/std_svc/rmmd/rmmd_rmm_lfa.c:#if RMM_V1_COMPAT
>> services/std_svc/rmmd/rmmd_rmm_lfa.c:#if RMM_V1_COMPAT
>> suzuki@ewhatever:trusted-firmware-a$ git log --oneline -1
>> 8dae0862c (HEAD, origin/master, origin/integration, origin/HEAD) Merge
>> changes from topic "qti_lemans_evk" into integration
>> suzuki@ewhatever:trusted-firmware-a$ git remote get-url origin
>> https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
>>
>
> Thanks for the details. It turned out that I used the wrong TF-A
> repository. In
> the proposed repository, I'm able to see the option 'RMM_V1_COMPAT' and
> the EL3-RMM
> interface compatible issue disappears. However, there are more issues
> popped up.
>
> I build everything manually where the host is emulated by QEMU instead
> of shrinkwrap
> and FVP model. It's used to work well before. Maybe it's time to switch
> to shinkwrap
> and FVP model since device assignment (DA) isn't supported by an
> emulated host
> by QEMU and shrinkwrap and FVP model seems the only option. I need to
> learn how
> to do that later.
Thanks for the update. Yes, QEMU TF-RMM support is in progress, @Mathieu
Poirier is looking into it
>
> There are two issues I can see with the following combinations. Details
> are provided
> like below.
>
> QEMU: https://git.qemu.org/git/
> qemu.git (branch: stable-9.2)
> TF-RMM: https://git.trustedfirmware.org/TF-RMM/tf-
> rmm.git (branch: topics/rmm-v2.0-poc)
> EDK2: git@github.com:tianocore/
> edk2.git (tag: edk2-stable202411)
> TF-A: https://git.trustedfirmware.org/TF-A/trusted-firmware-
> a.git (branch: master)
> HOST: https://git.gitlab.arm.com/linux-arm/linux-
> cca.git (branch: cca-host/v13)
> BUILDROOT: https://github.com/buildroot/
> buildroot (branch: master)
> KVMTOOL: https://gitlab.arm.com/linux-arm/kvmtool-
> cca (branch: cca/v11)
> GUEST: https://github.com/torvalds/
> linux.git (branch: master)
>
> (1) The emulated host is started by the following command lines.
>
> sudo /home/gshan/sandbox/cca/host/qemu/build/qemu-system-
> aarch64 \
> -M virt,virtualization=on,secure=on,gic-
> version=3,acpi=off \
> -cpu max,x-rme=on -m 8G -smp
> 8 \
> -serial mon:stdio -monitor none -nographic -
> nodefaults \
> -bios /home/gshan/sandbox/cca/host/tf-a/
> flash.bin \
> -kernel /home/gshan/sandbox/cca/host/linux/arch/arm64/boot/
> Image \
> -initrd /home/gshan/sandbox/cca/host/buildroot/output/images/
> rootfs.cpio.xz \
> -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 pcie-root-
> port,bus=pcie.0,chassis=3,id=pcie.3 \
> -device pcie-root-
> port,bus=pcie.0,chassis=4,id=pcie.4 \
> -device virtio-9p-
> device,fsdev=shr0,mount_tag=shr0 \
> -fsdev local,security_model=none,path=/home/gshan/sandbox/cca/
> guest,id=shr0 \
> -netdev tap,id=tap1,script=/etc/qemu-ifup-gshan,downscript=/etc/
> qemu-ifdown-gshan \
> -device virtio-net-pci,bus=pcie.2,netdev=tap1,mac=b8:3f:d2:1d:3e:f1
>
> (2) Issue-1: TF-RMM complains about the root complex list is invalid.
> This error is
> raised in TF-RMM::setup_root_complex_list() where the error code is
> still set to
> 0 (SUCCESS) in this failing case. The TF-RMM initialization is
> terminated early,
> but TF-A still thinks the initialization has been completely done.
>
> INFO: BL31: Initializing RMM
> INFO: RMM init start.
> RMM EL3 compat memory reservation enabled.
> Dynamic VA pool base address: 0xc0000000
> Reserved 20 pages. Remaining: 3615 pages
> Reserve mem: 20 pages at PA: 0x401f2000 (alignment 0x1000)
> Static Low VA initialized. xlat tables allocated: 20 used: 7
> Reserved 514 pages. Remaining: 3101 pages
> Reserve mem: 514 pages at PA: 0x40206000 (alignment 0x1000)
> Dynamic Low VA initialized. xlat tables allocated: 514 used: 514
> Invalid: Root Complex list
> <<<<< ERROR
> INFO: RMM init end.
>
> (3) Issue-2: The host kernel gets stuck in rmi_check_version() where
> SMC_RMI_VERSION
> is issued to TF-A, but it can't be forwarded to TF-RMM because its
> initialization
> isn't completely done (issue-1).
>
> [ 37.438253] Unpacking initramfs...
> [ 37.563460] kvm [1]: nv: 570 coarse grained trap handlers
> [ 37.581139] kvm [1]: nv: 664 fine grained trap handlers
> <... system becomes stuck here ...>
>
> So my workaround is to skip fetching root complex list from the EL3-RMM
> manifest data
> in TF-RMM::setup_root_complex_list() since it's not provided for the
> qemu platform by
^^ This may have to do with the RMM<->TF-A Manifest changes
> TF-A. With this workaround, the host can boot up into shell prompt and
> the guest can
> be started by kvmtool.
>
> host$ uname -r
> 7.0.0-rc1-gavin-gd62aa44b2590
> host$ lkvm run --realm -c 2 -m 256 \
> -k /mnt/linux/arch/arm64/boot/Image \
> -i /mnt/buildroot/output/images/rootfs.cpio.xz
> -p earlycon=uart,mmio,0x101000000
> Info: # lkvm run -k /mnt/linux/arch/arm64/boot/Image -m 256 -c 2 --
> name guest-163
> Info: Enabling Guest memfd for confidential guest
> Warning: The maximum recommended amount of VCPUs is 1
> [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x000f0510]
> [ 0.000000] Linux version 7.0.0-rc2-gavin-g0031c06807cf
> (gshan@nvidia-grace-hopper-01.khw.eng.bos2.dc.redhat.com) (gcc (GCC)
> 14.3.1 20251022 (Red Hat 14.3.1-4), GNU ld version 2.41-64.el10) #2 SMP
> PREEMPT Wed Mar 25 20:28:05 EDT 2026
> [ 0.000000] KASLR enabled
> :
> [ 267.578060] Freeing initrd memory: 4728K
> [ 267.921865] Warning: unable to open an initial console.
> [ 270.327960] Freeing unused kernel memory: 1792K
> [ 270.669368] Run /init as init process
>
Cool, thanks!
Suzuki
> Thanks,
> Gavin
>
next prev parent reply other threads:[~2026-03-26 11:24 UTC|newest]
Thread overview: 133+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-18 15:53 [PATCH v13 00/48] arm64: Support for Arm CCA in KVM Steven Price
2026-03-18 15:53 ` [PATCH v13 01/48] kvm: arm64: Include kvm_emulate.h in kvm/arm_psci.h Steven Price
2026-03-18 15:53 ` [PATCH v13 02/48] kvm: arm64: Avoid including linux/kvm_host.h in kvm_pgtable.h Steven Price
2026-03-18 15:53 ` [PATCH v13 03/48] arm64: RME: Handle Granule Protection Faults (GPFs) Steven Price
2026-03-18 15:53 ` [PATCH v13 04/48] arm64: RMI: Add SMC definitions for calling the RMM Steven Price
2026-03-18 16:07 ` Joey Gouly
2026-03-18 17:07 ` Steven Price
2026-03-18 15:53 ` [PATCH v13 05/48] arm64: RMI: Temporarily add SMCs from RMM v1.0 spec Steven Price
2026-03-21 13:21 ` Marc Zyngier
2026-03-23 10:30 ` Suzuki K Poulose
2026-03-18 15:53 ` [PATCH v13 06/48] arm64: RMI: Add wrappers for RMI calls Steven Price
2026-03-18 15:53 ` [PATCH v13 07/48] arm64: RMI: Check for RMI support at KVM init Steven Price
2026-03-19 10:38 ` Suzuki K Poulose
2026-03-19 12:47 ` Steven Price
2026-03-19 16:17 ` Wei-Lin Chang
2026-03-19 16:42 ` Steven Price
2026-03-19 18:05 ` Wei-Lin Chang
2026-03-20 16:01 ` Steven Price
2026-03-18 15:53 ` [PATCH v13 08/48] arm64: RMI: Configure the RMM with the host's page size Steven Price
2026-03-18 15:53 ` [PATCH v13 09/48] arm64: RMI: Check for LPA2 support Steven Price
2026-03-18 15:53 ` [PATCH v13 10/48] arm64: RMI: Ensure that the RMM has GPT entries for memory Steven Price
2026-03-19 10:31 ` Suzuki K Poulose
2026-03-19 15:20 ` Steven Price
2026-03-19 10:41 ` Suzuki K Poulose
2026-03-30 20:58 ` Mathieu Poirier
2026-03-31 11:05 ` Suzuki K Poulose
2026-03-31 17:43 ` Mathieu Poirier
2026-03-18 15:53 ` [PATCH v13 11/48] arm64: RMI: Define the user ABI Steven Price
2026-03-18 15:53 ` [PATCH v13 12/48] arm64: RMI: Basic infrastructure for creating a realm Steven Price
2026-03-19 16:11 ` Wei-Lin Chang
2026-03-19 16:24 ` Steven Price
2026-03-19 17:17 ` Wei-Lin Chang
2026-03-20 16:07 ` Steven Price
2026-03-21 16:34 ` Wei-Lin Chang
2026-04-01 10:54 ` Steven Price
2026-03-18 15:53 ` [PATCH v13 13/48] kvm: arm64: Don't expose unsupported capabilities for realm guests Steven Price
2026-03-19 14:09 ` Suzuki K Poulose
2026-03-19 15:25 ` Steven Price
2026-03-18 15:53 ` [PATCH v13 14/48] KVM: arm64: Allow passing machine type in KVM creation Steven Price
2026-03-18 15:53 ` [PATCH v13 15/48] arm64: RMI: RTT tear down Steven Price
2026-03-19 17:35 ` Wei-Lin Chang
2026-03-20 16:12 ` Steven Price
2026-03-21 13:04 ` Wei-Lin Chang
2026-04-10 15:11 ` Steven Price
2026-03-20 10:37 ` Suzuki K Poulose
2026-03-20 16:14 ` Steven Price
2026-03-18 15:53 ` [PATCH v13 16/48] arm64: RMI: Activate realm on first VCPU run Steven Price
2026-03-18 15:53 ` [PATCH v13 17/48] arm64: RMI: Allocate/free RECs to match vCPUs Steven Price
2026-03-19 18:10 ` Wei-Lin Chang
2026-03-20 16:26 ` Steven Price
2026-03-23 11:56 ` Suzuki K Poulose
2026-03-18 15:53 ` [PATCH v13 18/48] arm64: RMI: Support for the VGIC in realms Steven Price
2026-03-18 15:53 ` [PATCH v13 19/48] KVM: arm64: Support timers in realm RECs Steven Price
2026-03-18 15:53 ` [PATCH v13 20/48] arm64: RMI: Handle realm enter/exit Steven Price
2026-03-20 14:08 ` Suzuki K Poulose
2026-03-20 16:32 ` Steven Price
2026-03-23 10:03 ` Suzuki K Poulose
2026-04-10 15:11 ` Steven Price
2026-03-18 15:53 ` [PATCH v13 21/48] arm64: RMI: Handle RMI_EXIT_RIPAS_CHANGE Steven Price
2026-03-20 11:15 ` Suzuki K Poulose
2026-04-10 15:12 ` Steven Price
2026-03-18 15:53 ` [PATCH v13 22/48] KVM: arm64: Handle realm MMIO emulation Steven Price
2026-03-18 15:53 ` [PATCH v13 23/48] KVM: arm64: Expose support for private memory Steven Price
2026-03-19 19:01 ` Wei-Lin Chang
2026-03-20 16:39 ` Steven Price
2026-03-18 15:53 ` [PATCH v13 24/48] arm64: RMI: Allow populating initial contents Steven Price
2026-03-23 11:32 ` Suzuki K Poulose
2026-04-10 15:12 ` Steven Price
2026-03-18 15:53 ` [PATCH v13 25/48] arm64: RMI: Set RIPAS of initial memslots Steven Price
2026-03-18 15:53 ` [PATCH v13 26/48] arm64: RMI: Create the realm descriptor Steven Price
2026-03-19 18:25 ` Wei-Lin Chang
2026-03-20 16:41 ` Steven Price
2026-03-21 16:20 ` Wei-Lin Chang
2026-03-18 15:53 ` [PATCH v13 27/48] arm64: RMI: Runtime faulting of memory Steven Price
2026-03-19 18:41 ` Wei-Lin Chang
2026-03-20 16:44 ` Steven Price
2026-03-18 15:53 ` [PATCH v13 28/48] KVM: arm64: Handle realm VCPU load Steven Price
2026-03-18 15:53 ` [PATCH v13 29/48] KVM: arm64: Validate register access for a Realm VM Steven Price
2026-03-18 15:53 ` [PATCH v13 30/48] KVM: arm64: Handle Realm PSCI requests Steven Price
2026-03-30 10:36 ` Suzuki K Poulose
2026-03-18 15:53 ` [PATCH v13 31/48] KVM: arm64: WARN on injected undef exceptions Steven Price
2026-03-30 10:50 ` Suzuki K Poulose
2026-03-18 15:53 ` [PATCH v13 32/48] arm64: Don't expose stolen time for realm guests Steven Price
2026-03-30 10:52 ` Suzuki K Poulose
2026-04-10 15:12 ` Steven Price
2026-03-18 15:53 ` [PATCH v13 33/48] arm64: RMI: allow userspace to inject aborts Steven Price
2026-03-18 15:53 ` [PATCH v13 34/48] arm64: RMI: support RSI_HOST_CALL Steven Price
2026-03-30 10:58 ` Suzuki K Poulose
2026-03-18 15:53 ` [PATCH v13 35/48] arm64: RMI: Allow checking SVE on VM instance Steven Price
2026-03-18 15:54 ` [PATCH v13 36/48] arm64: RMI: Always use 4k pages for realms Steven Price
2026-03-19 10:24 ` Joey Gouly
2026-03-19 16:02 ` Steven Price
2026-03-18 15:54 ` [PATCH v13 37/48] arm64: RMI: Prevent Device mappings for Realms Steven Price
2026-03-19 10:27 ` Joey Gouly
2026-04-10 15:12 ` Steven Price
2026-03-19 18:46 ` Wei-Lin Chang
2026-03-20 16:45 ` Steven Price
2026-03-21 16:23 ` Wei-Lin Chang
2026-03-18 15:54 ` [PATCH v13 38/48] arm64: RMI: Enable PMU support with a realm guest Steven Price
2026-03-18 15:54 ` [PATCH v13 39/48] arm64: RMI: Propagate number of breakpoints and watchpoints to userspace Steven Price
2026-03-19 18:50 ` Wei-Lin Chang
2026-03-20 16:45 ` Steven Price
2026-03-18 15:54 ` [PATCH v13 40/48] arm64: RMI: Set breakpoint parameters through SET_ONE_REG Steven Price
2026-03-18 15:54 ` [PATCH v13 41/48] arm64: RMI: Initialize PMCR.N with number counter supported by RMM Steven Price
2026-03-18 15:54 ` [PATCH v13 42/48] arm64: RMI: Propagate max SVE vector length from RMM Steven Price
2026-03-18 15:54 ` [PATCH v13 43/48] arm64: RMI: Configure max SVE vector length for a Realm Steven Price
2026-03-18 15:54 ` [PATCH v13 44/48] arm64: RMI: Provide register list for unfinalized RMI RECs Steven Price
2026-03-18 15:54 ` [PATCH v13 45/48] arm64: RMI: Provide accurate register list Steven Price
2026-03-19 18:53 ` Wei-Lin Chang
2026-03-20 16:45 ` Steven Price
2026-03-18 15:54 ` [PATCH v13 46/48] KVM: arm64: Expose KVM_ARM_VCPU_REC to user space Steven Price
2026-03-19 17:36 ` Suzuki K Poulose
2026-04-10 15:12 ` Steven Price
2026-03-18 15:54 ` [PATCH v13 47/48] arm64: RMI: Enable realms to be created Steven Price
2026-03-18 15:54 ` [PATCH v13 48/48] [WIP] arm64: RMI: Add support for SRO Steven Price
2026-03-18 16:53 ` [PATCH v13 00/48] arm64: Support for Arm CCA in KVM Steven Price
2026-03-19 23:02 ` Mathieu Poirier
2026-03-20 16:45 ` Steven Price
2026-03-20 19:15 ` Mathieu Poirier
2026-03-25 6:37 ` Gavin Shan
2026-03-25 10:16 ` Suzuki K Poulose
2026-03-25 11:32 ` Suzuki K Poulose
2026-03-26 0:48 ` Gavin Shan
2026-03-26 11:22 ` Suzuki K Poulose [this message]
2026-03-25 4:07 ` Gavin Shan
2026-03-25 10:19 ` Suzuki K Poulose
2026-04-14 21:40 ` Alper Gun
2026-04-15 11:01 ` Steven Price
2026-04-15 23:27 ` Alper Gun
2026-04-16 11:04 ` Suzuki K Poulose
2026-04-16 17:44 ` Alper Gun
2026-04-21 13:51 ` Jiahao zheng
[not found] ` <20260421135145.14789-1-jahao.zheng@gmail.com_quarantine>
2026-04-22 15:38 ` Steven Price
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=44109e80-b46f-404c-bc69-d019c923faac@arm.com \
--to=suzuki.poulose@arm.com \
--cc=alexandru.elisei@arm.com \
--cc=alpergun@google.com \
--cc=aneesh.kumar@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=christoffer.dall@arm.com \
--cc=fj0570is@fujitsu.com \
--cc=gankulkarni@os.amperecomputing.com \
--cc=gshan@redhat.com \
--cc=james.morse@arm.com \
--cc=joey.gouly@arm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=maz@kernel.org \
--cc=oliver.upton@linux.dev \
--cc=sdonthineni@nvidia.com \
--cc=steven.price@arm.com \
--cc=tabba@google.com \
--cc=vannapurve@google.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.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 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.