From: Sean Christopherson <seanjc@google.com>
To: Jim Mattson <jmattson@google.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Shuah Khan <shuah@kernel.org>, Bibo Mao <maobibo@loongson.cn>,
Huacai Chen <chenhuacai@kernel.org>,
Andrew Jones <ajones@ventanamicro.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
"Pratik R. Sampat" <prsampat@amd.com>,
Kai Huang <kai.huang@intel.com>,
Eric Auger <eric.auger@redhat.com>,
linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
linux-kselftest@vger.kernel.org
Subject: Re: [PATCH 3/4] KVM: selftests: Add VM_MODE_PXXV57_4K VM mode
Date: Wed, 15 Oct 2025 15:59:37 -0700 [thread overview]
Message-ID: <aPAnWWmo555uB0-H@google.com> (raw)
In-Reply-To: <20250917215031.2567566-4-jmattson@google.com>
On Wed, Sep 17, 2025, Jim Mattson wrote:
> Add a new VM mode, VM_MODE_PXXV57_4K, to support tests that require
> 5-level paging on x86. This mode sets up a 57-bit virtual address
> space and sets CR4.LA57 in the guest.
> @@ -358,6 +360,25 @@ struct kvm_vm *____vm_create(struct vm_shape shape)
> vm->va_bits = 48;
> #else
> TEST_FAIL("VM_MODE_PXXV48_4K not supported on non-x86 platforms");
> +#endif
> + break;
> + case VM_MODE_PXXV57_4K:
> +#ifdef __x86_64__
> + kvm_get_cpu_address_width(&vm->pa_bits, &vm->va_bits);
> + kvm_init_vm_address_properties(vm);
> + /*
> + * For 5-level paging, KVM requires LA57 to be enabled, which
> + * requires a 57-bit virtual address space.
> + */
> + TEST_ASSERT(vm->va_bits == 57,
> + "Linear address width (%d bits) not supported for VM_MODE_PXXV57_4K",
> + vm->va_bits);
> + pr_debug("Guest physical address width detected: %d\n",
> + vm->pa_bits);
> + vm->pgtable_levels = 5;
> + vm->va_bits = 57;
> +#else
> + TEST_FAIL("VM_MODE_PXXV57_4K not supported on non-x86 platforms");
> #endif
That's a lot of copy+paste, especially given the #ifdefs. How about this (untested)?
case VM_MODE_PXXV48_4K:
case VM_MODE_PXXV57_4K:
#ifdef __x86_64__
kvm_get_cpu_address_width(&vm->pa_bits, &vm->va_bits);
kvm_init_vm_address_properties(vm);
/*
* Ignore KVM support for 5-level paging (vm->va_bits == 57) if
* the target mode is 4-level paging (48-bit virtual address
* space), as 5-level paging only takes effect if CR4.LA57=1.
*/
TEST_ASSERT(vm->va_bits == 57 ||
(vm->va_bits == 48 && vm->mode == VM_MODE_PXXV48_4K),
"Linear address width (%d bits) not supported",
vm->va_bits);
pr_debug("Guest physical address width detected: %d\n",
vm->pa_bits);
if (vm->mode == VM_MODE_PXXV48_4K) {
vm->pgtable_levels = 4;
vm->va_bits = 48;
} else {
vm->pgtable_levels = 5;
vm->va_bits = 57;
}
#else
TEST_FAIL("VM_MODE_PXXV{48,57}_4K not supported on non-x86 platforms");
#endif
break;
next prev parent reply other threads:[~2025-10-15 22:59 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-17 21:48 [PATCH 0/4] KVM: selftests: Add test of SET_NESTED_STATE with 48-bit L2 on 57-bit L1 Jim Mattson
2025-09-17 21:48 ` [PATCH 1/4] KVM: selftests: Use a loop to create guest page tables Jim Mattson
2025-10-20 17:10 ` Yosry Ahmed
2025-09-17 21:48 ` [PATCH 2/4] KVM: selftests: Use a loop to walk " Jim Mattson
2025-10-20 17:21 ` Yosry Ahmed
2025-10-21 22:11 ` Jim Mattson
2025-10-21 22:24 ` Yosry Ahmed
2025-09-17 21:48 ` [PATCH 3/4] KVM: selftests: Add VM_MODE_PXXV57_4K VM mode Jim Mattson
2025-10-15 21:23 ` Yosry Ahmed
2025-10-21 22:34 ` Jim Mattson
2025-10-21 22:56 ` Yosry Ahmed
2025-10-15 21:25 ` Yosry Ahmed
2025-10-15 22:58 ` Sean Christopherson
2025-10-15 22:59 ` Sean Christopherson [this message]
2025-10-16 0:40 ` Sean Christopherson
2025-10-21 22:37 ` Jim Mattson
2025-09-17 21:48 ` [PATCH 4/4] KVM: selftests: Add a VMX test for LA57 nested state Jim Mattson
2025-10-20 17:26 ` Yosry Ahmed
2025-10-21 23:40 ` Jim Mattson
2025-10-22 18:07 ` Yosry Ahmed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aPAnWWmo555uB0-H@google.com \
--to=seanjc@google.com \
--cc=ajones@ventanamicro.com \
--cc=chenhuacai@kernel.org \
--cc=eric.auger@redhat.com \
--cc=imbrenda@linux.ibm.com \
--cc=jmattson@google.com \
--cc=kai.huang@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=maobibo@loongson.cn \
--cc=pbonzini@redhat.com \
--cc=prsampat@amd.com \
--cc=shuah@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.