Hi,
On Tue, 15 Sep 2026 13:38:45 +0100, Fuad Tabba [off-list ref] wrote:
can_access_vgic_from_kernel() excludes only the GICv3 system register
interface, so on a native GICv5 system without FEAT_GCIE_LEGACY it
returns true under nVHE. The kernel then saves and restores the CPU
interface from EL1, where ICH_VMCR_EL2 and the ICH_PPI_* registers are
UNDEFINED, and the nVHE world switch already does that work at EL2.
FWIW, I've since run this on the FVP GICv5 model (support_virtualization=1, kvm-arm.mode=nvhe). On kvmarm/next at 23ddf997ab16b the vgic_v5 selftest oopses the host at the first KVM_RUN:
Internal error: Oops - Undefined instruction: 0000000002000000 [#1] SMP
pc : __vgic_v5_restore_ppi_state+0x10/0x9c
lr : vgic_v5_restore_state+0x28/0x3c
Code: d503245f a941240a d0012448 91160108 (d51cca0a)
d51cca0a is the ICH_PPI_DVIR0_EL2 write, from EL1. With this patch applied the same run passes.
Cheers,
/fuad