Re: [PATCH v7 00/45] arm64: Support for Arm CCA in KVM

Gavin Shan
2025-03-05T03:53:19Z

On 2/14/25 2:13 AM, Steven Price wrote:

[...]

>
> The ABI to the RMM (the RMI) is based on RMM v1.0-rel0 specification[1].
>
> This series is based on v6.14-rc1. It is also available as a git
> repository:
>
> https://gitlab.arm.com/linux-arm/linux-cca cca-host/v7
>
> Work in progress changes for kvmtool are available from the git
> repository below:
>
> https://gitlab.arm.com/linux-arm/kvmtool-cca cca/v5
>
> [1] https://developer.arm.com/documentation/den0137/1-0rel0/
> [2] https://lore.kernel.org/r/a7011738-a084-46fa-947f-395d90b37f8b%40arm.com
>

I had a chance to test it by following Jean's instructions [1-2]. The guest can
boot up and kvmtool also can boot the guest. I'm listing the repositories I used
in case some body else want to give it a try.

[1] Jean's guide to build software components needed by ARM CCA stack
https://linaro.atlassian.net/wiki/spaces/QEMU/pages/29051027459/Building+an+RME+stack+for+QEMU
[2] Jean's guide to build firmware needed by the emulated host

host
====
tf-rmm https://git.codelinaro.org/linaro/dcap/rmm.git (cca/v4)
edk2: git@github.com:tianocore/edk2.git (edk2-stable202411)
tf-a: https://git.codelinaro.org/linaro/dcap/tf-a/trusted-firmware-a.git (cca/v4)
qemu https://git.qemu.org/git/qemu.git (stable-9.2)
linux https://git.gitlab.arm.com/linux-arm/linux-cca.git (cca-host/v7)
buildroot https://github.com/buildroot/buildroot (master)

guest
=====
qemu https://git.codelinaro.org/linaro/dcap/qemu.git (cca/latest)
kvmtool https://gitlab.arm.com/linux-arm/kvmtool-cca (cca/latest)
linux https://git.gitlab.arm.com/linux-arm/linux-cca.git (cca-guest/v7)

Command lines to start the host
================================
[gshan@virtlab723 host]$ cat start.sh
#!/bin/sh
HOST_PATH=/home/gshan/sandbox/qemu/host
GUEST_PATH=/home/gshan/sandbox/qemu/guest

sudo ${HOST_PATH}/qemu/build/qemu-system-aarch64 \
-M virt,virtualization=on,secure=on,gic-version=3,acpi=off \
-cpu max,x-rme=on -m 4G -smp 8 \
-serial mon:stdio -monitor none -nographic -nodefaults \
-bios ${HOST_PATH}/tf-a/flash.bin \
-kernel ${HOST_PATH}/linux/arch/arm64/boot/Image \
-initrd ${HOST_PATH}/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=${GUEST_PATH},id=shr0 \
-netdev tap,id=tap1,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown \
-device virtio-net-pci,bus=pcie.2,netdev=tap1,mac=78:ac:44:2b:43:f0

Command lines to start the guest
================================
[gshan@virtlab723 guest]$ cat start_guest.sh
#!/bin/sh
key="VGhlIHJlYWxtIGd1ZXN0IHBlcnNvbmFsaXphdGlvbiBrZXkga"
key+="W4gZm9ybWF0IG9mIGJhc2U2NCAgICAgICAgIA=="

qemu-system-aarch64 -enable-kvm \
-object rme-guest,id=rme0,measurement-algorithm=sha512,personalization-value=${key} \
-M virt,gic-version=3,its=on,confidential-guest-support=rme0             \
-cpu host -smp 2 -m 1024M                                                 \
-serial mon:stdio -monitor none -nographic -nodefaults                   \
-kernel /mnt/linux/arch/arm64/boot/Image                                 \
-initrd /mnt/buildroot/output/images/rootfs.cpio.xz                       \
-append earlycon=pl011,mmio,0x10009000000

Thanks,
Gavin