]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: arm64: nv: Add missing EL2->EL1 mappings in get_el2_to_el1_mapping()
authorMarc Zyngier <maz@kernel.org>
Wed, 23 Oct 2024 14:53:13 +0000 (15:53 +0100)
committerOliver Upton <oliver.upton@linux.dev>
Thu, 31 Oct 2024 02:42:29 +0000 (02:42 +0000)
As KVM has grown a bunch of new system register for NV, it appears
that we are missing them in the get_el2_to_el1_mapping() list.

Most of them are not crucial as they don't tend to be accessed via
vcpu_read_sys_reg() and vcpu_write_sys_reg().

Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20241023145345.1613824-6-maz@kernel.org
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/sys_regs.c

index ff8c4e1b847ed417c5695b8b4c292b8144b558c5..ae0ecd8ae6713f7ae97e444e0ef7be0508ffe443 100644 (file)
@@ -110,6 +110,14 @@ static bool get_el2_to_el1_mapping(unsigned int reg,
                PURE_EL2_SYSREG(  RVBAR_EL2     );
                PURE_EL2_SYSREG(  TPIDR_EL2     );
                PURE_EL2_SYSREG(  HPFAR_EL2     );
+               PURE_EL2_SYSREG(  HCRX_EL2      );
+               PURE_EL2_SYSREG(  HFGRTR_EL2    );
+               PURE_EL2_SYSREG(  HFGWTR_EL2    );
+               PURE_EL2_SYSREG(  HFGITR_EL2    );
+               PURE_EL2_SYSREG(  HDFGRTR_EL2   );
+               PURE_EL2_SYSREG(  HDFGWTR_EL2   );
+               PURE_EL2_SYSREG(  HAFGRTR_EL2   );
+               PURE_EL2_SYSREG(  CNTVOFF_EL2   );
                PURE_EL2_SYSREG(  CNTHCTL_EL2   );
                MAPPED_EL2_SYSREG(SCTLR_EL2,   SCTLR_EL1,
                                  translate_sctlr_el2_to_sctlr_el1           );
@@ -130,6 +138,7 @@ static bool get_el2_to_el1_mapping(unsigned int reg,
                MAPPED_EL2_SYSREG(ELR_EL2,     ELR_EL1,     NULL             );
                MAPPED_EL2_SYSREG(SPSR_EL2,    SPSR_EL1,    NULL             );
                MAPPED_EL2_SYSREG(ZCR_EL2,     ZCR_EL1,     NULL             );
+               MAPPED_EL2_SYSREG(CONTEXTIDR_EL2, CONTEXTIDR_EL1, NULL       );
        default:
                return false;
        }