KVM: arm64: Handle AIDR_EL1 and REVIDR_EL1 in host for protected VMs
authorFuad Tabba <tabba@google.com>
Thu, 7 Aug 2025 12:01:31 +0000 (13:01 +0100)
committerOliver Upton <oliver.upton@linux.dev>
Fri, 8 Aug 2025 08:29:31 +0000 (01:29 -0700)
commiteaa43934b412f0381598e308b6a25d6c9a5dce2d
tree9a7395bcfa26a6070707b7869373251fd1ec36bb
parent700d6868fee2d384cbd821d31db3a245d218223c
KVM: arm64: Handle AIDR_EL1 and REVIDR_EL1 in host for protected VMs

Since commit 17efc1acee62 ("arm64: Expose AIDR_EL1 via sysfs"), AIDR_EL1
is read early during boot. Therefore, a guest running as a protected VM
will fail to boot because when it attempts to access AIDR_EL1, access to
that register is restricted in pKVM for protected guests.

Similar to how MIDR_EL1 is handled by the host for protected VMs, let
the host handle accesses to AIDR_EL1 as well as REVIDR_EL1. However note
that, unlike MIDR_EL1, AIDR_EL1 and REVIDR_EL1 are trapped by
HCR_EL2.TID1. Therefore, explicitly mark them as handled by the host for
protected VMs. TID1 is always set in pKVM, because it needs to restrict
access to SMIDR_EL1, which is also trapped by that bit.

Reported-by: Will Deacon <will@kernel.org>
Signed-off-by: Fuad Tabba <tabba@google.com>
Link: https://lore.kernel.org/r/20250807120133.871892-2-tabba@google.com
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/hyp/nvhe/sys_regs.c