]> git.ipfire.org Git - thirdparty/linux.git/commit
KVM: arm64: selftests: Disable unused TTBR1_EL1 translations
authorFuad Tabba <tabba@google.com>
Fri, 9 Jan 2026 08:22:14 +0000 (08:22 +0000)
committerMarc Zyngier <maz@kernel.org>
Thu, 15 Jan 2026 13:39:53 +0000 (13:39 +0000)
commit7e03d07d03a486c66d5c084c7185b1bef29049e9
tree7c267aaa22ec708049c25de334a38bdb7789d479
parent9ace4753a5202b02191d54e9fdf7f9e3d02b85eb
KVM: arm64: selftests: Disable unused TTBR1_EL1 translations

KVM selftests map all guest code and data into the lower virtual address
range (0x0000...) managed by TTBR0_EL1. The upper range (0xFFFF...)
managed by TTBR1_EL1 is unused and uninitialized.

If a guest accesses the upper range, the MMU attempts a translation
table walk using uninitialized registers, leading to unpredictable
behavior.

Set `TCR_EL1.EPD1` to disable translation table walks for TTBR1_EL1,
ensuring that any access to the upper range generates an immediate
Translation Fault. Additionally, set `TCR_EL1.TBI1` (Top Byte Ignore) to
ensure that tagged pointers in the upper range also deterministically
trigger a Translation Fault via EPD1.

Define `TCR_EPD1_MASK`, `TCR_EPD1_SHIFT`, and `TCR_TBI1` in
`processor.h` to support this configuration. These are based on their
definitions in `arch/arm64/include/asm/pgtable-hwdef.h`.

Suggested-by: Will Deacon <will@kernel.org>
Reviewed-by: Itaru Kitayama <itaru.kitayama@fujitsu.com>
Signed-off-by: Fuad Tabba <tabba@google.com>
Link: https://patch.msgid.link/20260109082218.3236580-2-tabba@google.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
tools/testing/selftests/kvm/include/arm64/processor.h
tools/testing/selftests/kvm/lib/arm64/processor.c