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:
==============
- 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


Hi Ritesh,
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