Skip to content

Commit c7d11a6

Browse files
Marc Zyngieroupton
authored andcommitted
KVM: arm64: Do not let a L1 hypervisor access the *32_EL2 sysregs
DBGVCR32_EL2, DACR32_EL2, IFSR32_EL2 and FPEXC32_EL2 are required to UNDEF when AArch32 isn't implemented, which is definitely the case when running NV. Given that this is the only case where these registers can trap, unconditionally inject an UNDEF exception. Signed-off-by: Marc Zyngier <[email protected]> Reviewed-by: Oliver Upton <[email protected]> Reviewed-by: Eric Auger <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Oliver Upton <[email protected]>
1 parent 04cf546 commit c7d11a6

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

arch/arm64/kvm/sys_regs.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1961,7 +1961,7 @@ static const struct sys_reg_desc sys_reg_descs[] = {
19611961
// DBGDTR[TR]X_EL0 share the same encoding
19621962
{ SYS_DESC(SYS_DBGDTRTX_EL0), trap_raz_wi },
19631963

1964-
{ SYS_DESC(SYS_DBGVCR32_EL2), NULL, reset_val, DBGVCR32_EL2, 0 },
1964+
{ SYS_DESC(SYS_DBGVCR32_EL2), trap_undef, reset_val, DBGVCR32_EL2, 0 },
19651965

19661966
{ SYS_DESC(SYS_MPIDR_EL1), NULL, reset_mpidr, MPIDR_EL1 },
19671967

@@ -2380,18 +2380,18 @@ static const struct sys_reg_desc sys_reg_descs[] = {
23802380
EL2_REG(VTTBR_EL2, access_rw, reset_val, 0),
23812381
EL2_REG(VTCR_EL2, access_rw, reset_val, 0),
23822382

2383-
{ SYS_DESC(SYS_DACR32_EL2), NULL, reset_unknown, DACR32_EL2 },
2383+
{ SYS_DESC(SYS_DACR32_EL2), trap_undef, reset_unknown, DACR32_EL2 },
23842384
EL2_REG(HDFGRTR_EL2, access_rw, reset_val, 0),
23852385
EL2_REG(HDFGWTR_EL2, access_rw, reset_val, 0),
23862386
EL2_REG(SPSR_EL2, access_rw, reset_val, 0),
23872387
EL2_REG(ELR_EL2, access_rw, reset_val, 0),
23882388
{ SYS_DESC(SYS_SP_EL1), access_sp_el1},
23892389

2390-
{ SYS_DESC(SYS_IFSR32_EL2), NULL, reset_unknown, IFSR32_EL2 },
2390+
{ SYS_DESC(SYS_IFSR32_EL2), trap_undef, reset_unknown, IFSR32_EL2 },
23912391
EL2_REG(AFSR0_EL2, access_rw, reset_val, 0),
23922392
EL2_REG(AFSR1_EL2, access_rw, reset_val, 0),
23932393
EL2_REG(ESR_EL2, access_rw, reset_val, 0),
2394-
{ SYS_DESC(SYS_FPEXC32_EL2), NULL, reset_val, FPEXC32_EL2, 0x700 },
2394+
{ SYS_DESC(SYS_FPEXC32_EL2), trap_undef, reset_val, FPEXC32_EL2, 0x700 },
23952395

23962396
EL2_REG(FAR_EL2, access_rw, reset_val, 0),
23972397
EL2_REG(HPFAR_EL2, access_rw, reset_val, 0),

0 commit comments

Comments
 (0)