.../selftests/kvm/include/arm64/processor.h | 2 + tools/testing/selftests/kvm/include/kvm_util.h | 3 + tools/testing/selftests/kvm/lib/arm64/processor.c | 87 ++++++++++++++++++++-- tools/testing/selftests/kvm/lib/guest_modes.c | 5 ++ tools/testing/selftests/kvm/lib/kvm_util.c | 11 +++ 5 files changed, 103 insertions(+), 5 deletions(-)
This patch series extends the arm64 KVM selftest framework
to support 52-bit guest virtual address (VA) modes in addition to
the existing 52-bit physical address (PA) configurations.
The motivation is to enable validation of LPA2 guest memory-management
behaviour in configurations that use a 52-bit VA space.
While the selftest framework already supports testing 52-bit PA
configurations, it lacks the ability to exercise guests running with
52-bit virtual addresses, leaving part of the LPA2 functionality untested.
To address this, the series introduces new guest modes for 52-bit VA
operation, adds five-level page table support where required, and
performs runtime detection of host 52-bit VA capability so that
LPA2-enabled guest VA tests are executed only on supported systems.
Testing:
Built and tested on arm64.
Verified on QEMU with a V52-capable guest configuration.
Confirmed correct operation of high virtual address mappings by
exercising guest memory accesses in the 52-bit VA range.
Signed-off-by: Itaru Kitayama <itaru.kitayama@fujitsu.com>
Reviewed-by: Takayuki Okamoto <tokamoto@fujitsu.com>
---
Itaru Kitayama (2):
KVM: selftest: arm64: Support 5-level paging in stage 1 translation table
KVM: selftests: arm64: Add 52-bit VA guest modes
.../selftests/kvm/include/arm64/processor.h | 2 +
tools/testing/selftests/kvm/include/kvm_util.h | 3 +
tools/testing/selftests/kvm/lib/arm64/processor.c | 87 ++++++++++++++++++++--
tools/testing/selftests/kvm/lib/guest_modes.c | 5 ++
tools/testing/selftests/kvm/lib/kvm_util.c | 11 +++
5 files changed, 103 insertions(+), 5 deletions(-)
---
base-commit: 8d3ae59288f1e7d58d76558a6ee96d533bc5019f
change-id: 20260825-arm64-52bit-va-32f1f4cd050d
Best regards,
--
Itaru Kitayama <itaru.kitayama@fujitsu.com>
Hi Itaru, On Tue, 25 Aug 2026 at 22:18, Itaru Kitayama <itaru.kitayama@fujitsu.com> wrote: > > This patch series extends the arm64 KVM selftest framework > to support 52-bit guest virtual address (VA) modes in addition to > the existing 52-bit physical address (PA) configurations. > The motivation is to enable validation of LPA2 guest memory-management > behaviour in configurations that use a 52-bit VA space. > While the selftest framework already supports testing 52-bit PA > configurations, it lacks the ability to exercise guests running with > 52-bit virtual addresses, leaving part of the LPA2 functionality untested. The series adds three 52-bit VA guest modes, but nothing in tree maps a guest VA high enough to use them. The mode-iterating tests map at a fixed low GVA, so pgd_index() returns 0 and only the first entry of the top level is ever used. What do you expect the modes to catch as they stand? The allocators already take a minimum GVA, so mapping high in one of those tests looks like a small change. > To address this, the series introduces new guest modes for 52-bit VA > operation, adds five-level page table support where required, and > performs runtime detection of host 52-bit VA capability so that > LPA2-enabled guest VA tests are executed only on supported systems. > > Testing: > > Built and tested on arm64. > Verified on QEMU with a V52-capable guest configuration. > Confirmed correct operation of high virtual address mappings by > exercising guest memory accesses in the 52-bit VA range. I could not reproduce "exercising guest memory accesses in the 52-bit VA range" with anything in tree either. Could you say which test you ran, which guest modes, and on what? Thanks, /fuad > Signed-off-by: Itaru Kitayama <itaru.kitayama@fujitsu.com> > Reviewed-by: Takayuki Okamoto <tokamoto@fujitsu.com> > --- > Itaru Kitayama (2): > KVM: selftest: arm64: Support 5-level paging in stage 1 translation table > KVM: selftests: arm64: Add 52-bit VA guest modes > > .../selftests/kvm/include/arm64/processor.h | 2 + > tools/testing/selftests/kvm/include/kvm_util.h | 3 + > tools/testing/selftests/kvm/lib/arm64/processor.c | 87 ++++++++++++++++++++-- > tools/testing/selftests/kvm/lib/guest_modes.c | 5 ++ > tools/testing/selftests/kvm/lib/kvm_util.c | 11 +++ > 5 files changed, 103 insertions(+), 5 deletions(-) > --- > base-commit: 8d3ae59288f1e7d58d76558a6ee96d533bc5019f > change-id: 20260825-arm64-52bit-va-32f1f4cd050d > > Best regards, > -- > Itaru Kitayama <itaru.kitayama@fujitsu.com> >
Hi Fuad, On Fri, Sep 04, 2026 at 09:14:36AM +0100, Fuad Tabba wrote: > On Tue, 25 Aug 2026 at 22:18, Itaru Kitayama <itaru.kitayama@fujitsu.com> wrote: > > > > This patch series extends the arm64 KVM selftest framework > > to support 52-bit guest virtual address (VA) modes in addition to > > the existing 52-bit physical address (PA) configurations. > > The motivation is to enable validation of LPA2 guest memory-management > > behaviour in configurations that use a 52-bit VA space. > > While the selftest framework already supports testing 52-bit PA > > configurations, it lacks the ability to exercise guests running with > > 52-bit virtual addresses, leaving part of the LPA2 functionality untested. > > The series adds three 52-bit VA guest modes, but nothing in tree maps > a guest VA high enough to use them. The mode-iterating tests map at a > fixed low GVA, so pgd_index() returns 0 and only the first entry of > the top level is ever used. > > What do you expect the modes to catch as they stand? The allocators > already take a minimum GVA, so mapping high in one of those tests > looks like a small change. I think at least a 4KB page is allocated for the level -1 translation table, and entry 0 is populated with a Table descriptor pointing to the level 0 translation table. But, no it does not test a nonzero top-level index. > > > To address this, the series introduces new guest modes for 52-bit VA > > operation, adds five-level page table support where required, and > > performs runtime detection of host 52-bit VA capability so that > > LPA2-enabled guest VA tests are executed only on supported systems. > > > > Testing: > > > > Built and tested on arm64. > > Verified on QEMU with a V52-capable guest configuration. > > Confirmed correct operation of high virtual address mappings by > > exercising guest memory accesses in the 52-bit VA range. > > I could not reproduce "exercising guest memory accesses in the 52-bit > VA range" with anything in tree either. Could you say which test you > ran, which guest modes, and on what? I just in guest_code() of existing one of the kselftests, mapped and accessed a page at 1ULL << 49 using virt_pg_map() and on QEMU TCG mode as I don't currently have access to the machines LPA and LPA2 features. Thanks, Itaru. > > Thanks, > /fuad > > > Signed-off-by: Itaru Kitayama <itaru.kitayama@fujitsu.com> > > Reviewed-by: Takayuki Okamoto <tokamoto@fujitsu.com> > > --- > > Itaru Kitayama (2): > > KVM: selftest: arm64: Support 5-level paging in stage 1 translation table > > KVM: selftests: arm64: Add 52-bit VA guest modes > > > > .../selftests/kvm/include/arm64/processor.h | 2 + > > tools/testing/selftests/kvm/include/kvm_util.h | 3 + > > tools/testing/selftests/kvm/lib/arm64/processor.c | 87 ++++++++++++++++++++-- > > tools/testing/selftests/kvm/lib/guest_modes.c | 5 ++ > > tools/testing/selftests/kvm/lib/kvm_util.c | 11 +++ > > 5 files changed, 103 insertions(+), 5 deletions(-) > > --- > > base-commit: 8d3ae59288f1e7d58d76558a6ee96d533bc5019f > > change-id: 20260825-arm64-52bit-va-32f1f4cd050d > > > > Best regards, > > -- > > Itaru Kitayama <itaru.kitayama@fujitsu.com> > >
Hi Itaru, On Tue, 8 Sept 2026 at 03:18, Itaru Kitayama <itaru.kitayama@fujitsu.com> wrote: > > Hi Fuad, > On Fri, Sep 04, 2026 at 09:14:36AM +0100, Fuad Tabba wrote: > > On Tue, 25 Aug 2026 at 22:18, Itaru Kitayama <itaru.kitayama@fujitsu.com> wrote: > > > > > > This patch series extends the arm64 KVM selftest framework > > > to support 52-bit guest virtual address (VA) modes in addition to > > > the existing 52-bit physical address (PA) configurations. > > > The motivation is to enable validation of LPA2 guest memory-management > > > behaviour in configurations that use a 52-bit VA space. > > > While the selftest framework already supports testing 52-bit PA > > > configurations, it lacks the ability to exercise guests running with > > > 52-bit virtual addresses, leaving part of the LPA2 functionality untested. > > > > The series adds three 52-bit VA guest modes, but nothing in tree maps > > a guest VA high enough to use them. The mode-iterating tests map at a > > fixed low GVA, so pgd_index() returns 0 and only the first entry of > > the top level is ever used. > > > > What do you expect the modes to catch as they stand? The allocators > > already take a minimum GVA, so mapping high in one of those tests > > looks like a small change. > > I think at least a 4KB page is allocated for the level -1 translation table, > and entry 0 is populated with a Table descriptor pointing to the level 0 translation > table. But, no it does not test a nonzero top-level index. Right, that's the gap. Every mode-iterating test maps at a fixed low GVA (0xc0000000), so the new modes only ever fill entry 0 of the top table. If the series adds the modes, it should add a test that drives a VA into the 52-bit range. > > > > > To address this, the series introduces new guest modes for 52-bit VA > > > operation, adds five-level page table support where required, and > > > performs runtime detection of host 52-bit VA capability so that > > > LPA2-enabled guest VA tests are executed only on supported systems. > > > > > > Testing: > > > > > > Built and tested on arm64. > > > Verified on QEMU with a V52-capable guest configuration. > > > Confirmed correct operation of high virtual address mappings by > > > exercising guest memory accesses in the 52-bit VA range. > > > > I could not reproduce "exercising guest memory accesses in the 52-bit > > VA range" with anything in tree either. Could you say which test you > > ran, which guest modes, and on what? > > I just in guest_code() of existing one of the kselftests, mapped and > accessed a page at 1ULL << 49 using virt_pg_map() and on QEMU TCG mode > as I don't currently have access to the machines LPA and LPA2 features. That test is what the series needs, and you've already written it. Folding a mode-iterating version in tree would exercise the modes and make the cover letter's "52-bit VA range" line reproducible. It runs under TCG, so no LPA2 hardware needed. Cheers, /fuad > Thanks, > Itaru. > > > > Thanks, > > /fuad > > > > > Signed-off-by: Itaru Kitayama <itaru.kitayama@fujitsu.com> > > > Reviewed-by: Takayuki Okamoto <tokamoto@fujitsu.com> > > > --- > > > Itaru Kitayama (2): > > > KVM: selftest: arm64: Support 5-level paging in stage 1 translation table > > > KVM: selftests: arm64: Add 52-bit VA guest modes > > > > > > .../selftests/kvm/include/arm64/processor.h | 2 + > > > tools/testing/selftests/kvm/include/kvm_util.h | 3 + > > > tools/testing/selftests/kvm/lib/arm64/processor.c | 87 ++++++++++++++++++++-- > > > tools/testing/selftests/kvm/lib/guest_modes.c | 5 ++ > > > tools/testing/selftests/kvm/lib/kvm_util.c | 11 +++ > > > 5 files changed, 103 insertions(+), 5 deletions(-) > > > --- > > > base-commit: 8d3ae59288f1e7d58d76558a6ee96d533bc5019f > > > change-id: 20260825-arm64-52bit-va-32f1f4cd050d > > > > > > Best regards, > > > -- > > > Itaru Kitayama <itaru.kitayama@fujitsu.com> > > >
On Wed, Aug 26, 2026 at 06:18:33AM +0900, Itaru Kitayama wrote: > This patch series extends the arm64 KVM selftest framework > to support 52-bit guest virtual address (VA) modes in addition to > the existing 52-bit physical address (PA) configurations. > The motivation is to enable validation of LPA2 guest memory-management > behaviour in configurations that use a 52-bit VA space. > While the selftest framework already supports testing 52-bit PA > configurations, it lacks the ability to exercise guests running with > 52-bit virtual addresses, leaving part of the LPA2 functionality untested. > To address this, the series introduces new guest modes for 52-bit VA > operation, adds five-level page table support where required, and > performs runtime detection of host 52-bit VA capability so that > LPA2-enabled guest VA tests are executed only on supported systems. > > Testing: > > Built and tested on arm64. > Verified on QEMU with a V52-capable guest configuration. > Confirmed correct operation of high virtual address mappings by > exercising guest memory accesses in the 52-bit VA range. > > Signed-off-by: Itaru Kitayama <itaru.kitayama@fujitsu.com> > Reviewed-by: Takayuki Okamoto <tokamoto@fujitsu.com> I'd appreciate any comments on this series. Thanks, Itaru. > --- > Itaru Kitayama (2): > KVM: selftest: arm64: Support 5-level paging in stage 1 translation table > KVM: selftests: arm64: Add 52-bit VA guest modes > > .../selftests/kvm/include/arm64/processor.h | 2 + > tools/testing/selftests/kvm/include/kvm_util.h | 3 + > tools/testing/selftests/kvm/lib/arm64/processor.c | 87 ++++++++++++++++++++-- > tools/testing/selftests/kvm/lib/guest_modes.c | 5 ++ > tools/testing/selftests/kvm/lib/kvm_util.c | 11 +++ > 5 files changed, 103 insertions(+), 5 deletions(-) > --- > base-commit: 8d3ae59288f1e7d58d76558a6ee96d533bc5019f > change-id: 20260825-arm64-52bit-va-32f1f4cd050d > > Best regards, > -- > Itaru Kitayama <itaru.kitayama@fujitsu.com> >
© 2016 - 2026 Red Hat, Inc.