]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
KVM: arm64: nv: Advertise the lack of AArch32 EL0 support
authorMarc Zyngier <maz@kernel.org>
Sat, 21 Dec 2024 10:06:17 +0000 (10:06 +0000)
committerMarc Zyngier <maz@kernel.org>
Sun, 22 Dec 2024 10:09:43 +0000 (10:09 +0000)
Although we never supported 32bit anywhere in NV, we fail to
advertise so for EL0, probably owing to the relative lack of
hardware supporting both NV2 and 32bit EL0.

Add some sanitising to ID_AA64PFR0_EL1.EL0, and reaffirm that
"in 64bit-only we trust".

Reported-by: Oliver Upton <oliver.upton@linux.dev>
Acked-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/nested.c

index 9b36218b48def495708f49b59e5f9211bd86cc0f..9e74f7b38e0566f6a6387d056d63598e496d8388 100644 (file)
@@ -830,8 +830,10 @@ static void limit_nv_id_regs(struct kvm *kvm)
                 NV_FTR(PFR0, RAS)      |
                 NV_FTR(PFR0, EL3)      |
                 NV_FTR(PFR0, EL2)      |
-                NV_FTR(PFR0, EL1));
-       /* 64bit EL1/EL2/EL3 only */
+                NV_FTR(PFR0, EL1)      |
+                NV_FTR(PFR0, EL0));
+       /* 64bit only at any EL */
+       val |= FIELD_PREP(NV_FTR(PFR0, EL0), 0b0001);
        val |= FIELD_PREP(NV_FTR(PFR0, EL1), 0b0001);
        val |= FIELD_PREP(NV_FTR(PFR0, EL2), 0b0001);
        val |= FIELD_PREP(NV_FTR(PFR0, EL3), 0b0001);