| From: |
| Jim Mattson <jmattson-AT-google.com> |
| To: |
| Paolo Bonzini <pbonzini-AT-redhat.com>, Shuah Khan <shuah-AT-kernel.org>, Sean Christopherson <seanjc-AT-google.com>, Marc Zyngier <maz-AT-kernel.org>, Oliver Upton <oliver.upton-AT-linux.dev>, Joey Gouly <joey.gouly-AT-arm.com>, Suzuki K Poulose <suzuki.poulose-AT-arm.com>, Zenghui Yu <yuzenghui-AT-huawei.com>, Andrew Jones <ajones-AT-ventanamicro.com>, Huacai Chen <chenhuacai-AT-kernel.org>, Bibo Mao <maobibo-AT-loongson.cn>, Jim Mattson <jmattson-AT-google.com>, "Pratik R. Sampat" <prsampat-AT-amd.com>, James Houghton <jthoughton-AT-google.com>, linux-kernel-AT-vger.kernel.org, kvm-AT-vger.kernel.org, linux-kselftest-AT-vger.kernel.org, linux-arm-kernel-AT-lists.infradead.org, kvmarm-AT-lists.linux.dev |
| Subject: |
| [PATCH v2 0/4] KVM: selftests: Test SET_NESTED_STATE with 48-bit L2 on 57-bit L1 |
| Date: |
| Tue, 28 Oct 2025 15:30:38 -0700 |
| Message-ID: |
| <20251028225827.2269128-1-jmattson@google.com> |
| Archive-link: |
| Article |
Prior to commit 9245fd6b8531 ("KVM: x86: model canonical checks more
precisely"), KVM_SET_NESTED_STATE would fail if the state was captured
with L2 active, L1 had CR4.LA57 set, L2 did not, and the
VMCS12.HOST_GSBASE (or other host-state field checked for canonicality)
had an address greater than 48 bits wide.
Add a regression test that reproduces the KVM_SET_NESTED_STATE failure
conditions. To do so, the first three patches add support for 5-level
paging in the selftest L1 VM.
v1 -> v2
Ended the page walking loops before visiting 4K mappings [Yosry]
Changed VM_MODE_PXXV48_4K into VM_MODE_PXXVYY_4K;
use 5-level paging when possible [Sean]
Removed the check for non-NULL vmx_pages in guest_code() [Yosry]
Jim Mattson (4):
KVM: selftests: Use a loop to create guest page tables
KVM: selftests: Use a loop to walk guest page tables
KVM: selftests: Change VM_MODE_PXXV48_4K to VM_MODE_PXXVYY_4K
KVM: selftests: Add a VMX test for LA57 nested state
tools/testing/selftests/kvm/Makefile.kvm | 1 +
.../testing/selftests/kvm/include/kvm_util.h | 4 +-
.../selftests/kvm/include/x86/processor.h | 2 +-
.../selftests/kvm/lib/arm64/processor.c | 2 +-
tools/testing/selftests/kvm/lib/kvm_util.c | 30 ++--
.../testing/selftests/kvm/lib/x86/processor.c | 80 +++++------
tools/testing/selftests/kvm/lib/x86/vmx.c | 6 +-
.../kvm/x86/vmx_la57_nested_state_test.c | 134 ++++++++++++++++++
8 files changed, 197 insertions(+), 62 deletions(-)
create mode 100644 tools/testing/selftests/kvm/x86/vmx_la57_nested_state_test.c
--
2.51.1.851.g4ebd6896fd-goog