Re: [PATCH v5 0/9] KVM: selftests: add powerpc support
From: Anushree Mathur
Date: Tue Sep 29 2026 - 01:50:08 EST
On 22/09/26 11:58 PM, Ritesh Harjani (IBM) wrote:
Patch v4 -> v5:Hi Ritesh,
==============
- Fixed the issues reported by Anushree while running on kvm on powervm
(nested).
- Fixed memslot_perf_test on powerpc.
PATCH v3 -> PATCH v4:
==================
- Rebased on top of Sean's new page allocator patch series v2 [1]
This allowed to drop and patch-2 since it will now come from Sean's
v2.
- Addressed review comments from Sean - squashed patches 6-10 in patch-1 of
this.
- Dropped patch-5 to print vcpu_id when KVM_CREATE_VCPU ioctl fails.
- Added additional patch-3 to this series to allow dirty_log_test to run on all
big-endian machines.
[1]: https://lore.kernel.org/kvm/20260902164123.2546762-1-seanjc@xxxxxxxxxx/
[v3]: https://lore.kernel.org/linuxppc-dev/2d2c46be7f051c7f1c645afaec67f57067d37a81.1781093720.git.ritesh.list@xxxxxxxxx/
Testing updates:
================
I have done some fair amount of testing of the selftests both on real HW and
using various combinations on qemu (powernv+LE (default), pseries+cap-nested-hv,
pseries+cap-nested-papr, powernv+BE). There were few powerpc kvm kernel fixes
which were identified as part of this work. I will send those patches separately
as those anyway needs to go in separately.
<pasted snippet of cover letter from previous versions>
=======================================================
Hi All,
This series primarly adds KVM selftests support for powerpc (64-bit, BookS,
radix MMU).
This patch series is originally Nick's work. I have mainly only rebased it on
the latest upstream tree. Since the rebase required few changes to all the four
patches (Patch 1-4), I have dropped the earlier Acked-by from Michael Ellerman.
Since the last series was posted three years ago [1], I am resetting the version
to RFC. This rebase was done as part of a larger effort to improve the selftests
infrastructure for Linux on PowerPC tree. Thanks to Harsh and Maddy for their
help on this.
Nicholas Piggin (1):
KVM: PPC: selftests: add support for powerpc
Ritesh Harjani (IBM) (8):
KVM: selftests: Enable kvm_create_max_vcpus test for powerpc
KVM: selftests: Don't limit LE dirty-bitmap bitops to s390x
KVM: selftests: Split out a KVM_CREATE_VCPU helper that can fail
KVM: selftests: Make kvm_create_max_vcpus tolerate ENOMEM
KVM: selftests: Limit the number of VM creates in hardware_disable_test
KVM: PPC: selftests: Make nested case on pseries LPARs as resource constrained
KVM: PPC: selftests: Skip idle-page check when running nested on pseries LPAR
KVM: selftests: Move memslot_perf_test off the 256M ELF load address
MAINTAINERS | 2 +
tools/testing/selftests/kvm/Makefile | 2 +-
tools/testing/selftests/kvm/Makefile.kvm | 10 +
.../selftests/kvm/access_tracking_perf_test.c | 11 +
tools/testing/selftests/kvm/dirty_log_test.c | 12 +-
.../selftests/kvm/hardware_disable_test.c | 7 +-
.../testing/selftests/kvm/include/kvm_util.h | 13 +
.../selftests/kvm/include/powerpc/hcall.h | 17 +
.../kvm/include/powerpc/kvm_util_arch.h | 22 +
.../selftests/kvm/include/powerpc/ppc_asm.h | 32 ++
.../selftests/kvm/include/powerpc/processor.h | 46 ++
.../selftests/kvm/include/powerpc/ucall.h | 21 +
.../selftests/kvm/kvm_create_max_vcpus.c | 29 +-
tools/testing/selftests/kvm/lib/guest_modes.c | 20 +-
tools/testing/selftests/kvm/lib/kvm_util.c | 39 +-
.../selftests/kvm/lib/powerpc/handlers.S | 93 ++++
.../testing/selftests/kvm/lib/powerpc/hcall.c | 45 ++
.../selftests/kvm/lib/powerpc/processor.c | 522 ++++++++++++++++++
.../testing/selftests/kvm/lib/powerpc/ucall.c | 22 +
.../testing/selftests/kvm/memslot_perf_test.c | 2 +-
20 files changed, 942 insertions(+), 25 deletions(-)
create mode 100644 tools/testing/selftests/kvm/include/powerpc/hcall.h
create mode 100644 tools/testing/selftests/kvm/include/powerpc/kvm_util_arch.h
create mode 100644 tools/testing/selftests/kvm/include/powerpc/ppc_asm.h
create mode 100644 tools/testing/selftests/kvm/include/powerpc/processor.h
create mode 100644 tools/testing/selftests/kvm/include/powerpc/ucall.h
create mode 100644 tools/testing/selftests/kvm/lib/powerpc/handlers.S
create mode 100644 tools/testing/selftests/kvm/lib/powerpc/hcall.c
create mode 100644 tools/testing/selftests/kvm/lib/powerpc/processor.c
create mode 100644 tools/testing/selftests/kvm/lib/powerpc/ucall.c
--
2.39.5
Thanks for working on the fixes, I tested this series (v5) on top of Sean's pre-enabling series (v2) [1]
on two real PowerPC systems. All patches applied cleanly and the tests
work correctly on both PowerVM LPAR and PowerNV bare-metal.
[1]: https://lore.kernel.org/kvm/20260902164123.2546762-1-seanjc@xxxxxxxxxx/
Full test suite summary (make run_tests):
-----------------------------------------
LPAR bare-metal
demand_paging_test PASS PASS
dirty_log_test PASS PASS
dirty_log_perf_test PASS PASS
guest_print_test PASS PASS
hardware_disable_test PASS PASS
kvm_binary_stats_test PASS PASS
kvm_create_max_vcpus PASS PASS
kvm_page_table_test PASS PASS
set_memory_region_test PASS PASS
memslot_modification_stress_test PASS PASS
memslot_perf_test PASS PASS
access_tracking_perf_test PASS PASS
irqfd_test SKIP SKIP
vm_types_test SKIP SKIP
--------------------------------------------------
Total 12 PASS 12 PASS
2 SKIP 2 SKIP
Per-patch validation:
---------------------
Patch 1 [KVM: PPC: selftests: add support for powerpc]
All 14 tests built and ran successfully on PowerPC — the core
infrastructure (lib/powerpc/processor.c, handlers.S, ucall.c,
hcall.c) works correctly on both systems.
Patch 2 [KVM: selftests: Enable kvm_create_max_vcpus test for powerpc]
kvm_create_max_vcpus ran successfully on both systems.
Patch 3 [KVM: selftests: Don't limit LE dirty-bitmap bitops to s390x]
dirty_log_test ran successfully on both systems for both 4K and
64K page modes (big-endian dirty-bitmap bitops working correctly).
Patch 4 [KVM: selftests: Split out a KVM_CREATE_VCPU helper that can fail]
KVM_CREATE_VCPU helper exercised by kvm_create_max_vcpus on both
systems — clean failure path confirmed on LPAR (ENOMEM at vCPU 72).
Patch 5 [KVM: selftests: Make kvm_create_max_vcpus tolerate ENOMEM]
LPAR: Created 72 vCPUs before ENOMEM at id 72 — test
completed gracefully without crash or assert.
bare-metal: Successfully created all 2048 vCPUs — no ENOMEM hit.
Patch 6 [KVM: selftests: Limit the number of VM creates in hardware_disable_test]
hardware_disable_test ran successfully on both systems without
hitting OOM — VM create limiting working correctly on LPAR.
Patch 7 [KVM: PPC: selftests: Make nested case on pseries LPARs as resource constrained]
access_tracking_perf_test correctly identified the LPAR as a
resource-constrained nested environment and adjusted accordingly.
Patch 8 [KVM: PPC: selftests: Skip idle-page check when running nested on pseries LPAR]
LPAR:
Skipping idle page count sanity check, because the test is run nested
[idle-page check correctly skipped on nested pseries LPAR]
bare-metal:
[No skip message — idle-page sanity check ran in full on PowerNV]
Patch 9 [KVM: selftests: Move memslot_perf_test off the 256M ELF load address]
memslot_perf_test ran successfully on both systems — ELF load
address conflict with PPC's 256M region resolved correctly.
Notes on SKIPs:
---------------
- irqfd_test: PowerPC has no in-kernel irqchip.
1..0 # SKIP - Requirement not met: kvm_arch_has_default_irqchip()
Pre-existing, unrelated to this series.
- vm_types_test: KVM_CAP_VM_TYPES is x86-only (SEV-SNP/TDX).
1..0 # SKIP - Requirement not met: kvm_has_cap(KVM_CAP_VM_TYPES)
Pre-existing, unrelated to this series.
Please feel free to add :
Tested-by: Anushree Mathur <anushree.mathur@xxxxxxxxxxxxx>
Thank you,
Anushree Mathur