]> git.ipfire.org Git - thirdparty/linux.git/commit
KVM: selftests: Test for KVM_EXIT_ARM_SEA
authorJiaqi Yan <jiaqiyan@google.com>
Mon, 13 Oct 2025 18:59:02 +0000 (18:59 +0000)
committerOliver Upton <oupton@kernel.org>
Wed, 12 Nov 2025 09:27:16 +0000 (01:27 -0800)
commitfeee9ef7ac1648835c3b1e35ba4833cf7c8b3669
tree3eb52cd440f13b3a2d38ba542c5f32b92e6b1424
parentad9c62bd8946621ed02ac94131a921222508a8bc
KVM: selftests: Test for KVM_EXIT_ARM_SEA

Test how KVM handles guest SEA when APEI is unable to claim it, and
KVM_CAP_ARM_SEA_TO_USER is enabled.

The behavior is triggered by consuming recoverable memory error (UER)
injected via EINJ. The test asserts two major things:
1. KVM returns to userspace with KVM_EXIT_ARM_SEA exit reason, and
   has provided expected fault information, e.g. esr, flags, gva, gpa.
2. Userspace is able to handle KVM_EXIT_ARM_SEA by injecting SEA to
   guest and KVM injects expected SEA into the VCPU.

Tested on a data center server running Siryn AmpereOne processor
that has RAS support.

Several things to notice before attempting to run this selftest:
- The test relies on EINJ support in both firmware and kernel to
  inject UER. Otherwise the test will be skipped.
- The under-test platform's APEI should be unable to claim the SEA.
  Otherwise the test will be skipped.
- Some platform doesn't support notrigger in EINJ, which may cause
  APEI and GHES to offline the memory before guest can consume
  injected UER, and making test unable to trigger SEA.

Signed-off-by: Jiaqi Yan <jiaqiyan@google.com>
Link: https://msgid.link/20251013185903.1372553-3-jiaqiyan@google.com
Signed-off-by: Oliver Upton <oupton@kernel.org>
tools/arch/arm64/include/asm/esr.h
tools/testing/selftests/kvm/Makefile.kvm
tools/testing/selftests/kvm/arm64/sea_to_user.c [new file with mode: 0644]
tools/testing/selftests/kvm/lib/kvm_util.c