mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	 Sean Christopherson <seanjc@google.com>
Subject: [GIT PULL] KVM: selftests: Add PPC support
Date: Thu, 15 Oct 2026 21:44:10 -0700	[thread overview]
Message-ID: <20261016044415.958618-6-seanjc@google.com> (raw)
In-Reply-To: <20261016044415.958618-1-seanjc@google.com>

Add PPC selftests support.  I grabbed the patches because it seemed easier
overall than coordinating a stable tag with maintainers that don't usually
send you pull requests.  The expectation going forward is that PPC selftests
changes will be routed through the KVM tree[1], since KVM selftests tend to
have a lot more cross-arch interactions/collisions than KVM proper

The memory regions rework will also show up in the "selftests" pull request
(I don't know why I didn't throw those changes in a dedicated branch), and
they have a silent conflict with kvm/master[2] due to the new vgic_its_save
arm64 test that came in through a 7.3 fixes pull request.  This is roughly
the resolution we've been using in next.

 +static void setup_memslot(size_t sz)
 +{
 +      size_t pages = sz / vm->page_size;
 +
 +      gpa_base = ((vm_compute_max_gfn(vm) + 1) * vm->page_size) - sz;
-       vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, gpa_base,
-                                   TEST_MEMSLOT_INDEX, pages, 0);
++      vm_override_mem_region(vm, MEM_REGION_TEST_EXTRA, VM_MEM_SRC_ANONYMOUS,
++                             gpa_base, TEST_MEMSLOT_INDEX, pages);
 +}
 +
 +static gpa_t alloc_64k(size_t nr)
 +{
 +      size_t pages_per_64k = vm_calc_num_guest_pages(vm->mode, SZ_64K);
-       gpa_t gpa = vm_phy_pages_alloc(vm, nr * pages_per_64k, gpa_base,
-                                      TEST_MEMSLOT_INDEX);
++      gpa_t gpa = vm_phy_pages_alloc(vm, nr * pages_per_64k,
++                                     MEM_REGION_TEST_EXTRA);
 +
 +      TEST_ASSERT(IS_ALIGNED(gpa, SZ_64K),
 +                  "Allocation at 0x%lx is not 64K aligned, GITS_BASER cannot address it",
 +                  gpa);
 +      return gpa;
 +}

[1] https://lore.kernel.org/all/ld8fjt6w.ritesh.list@gmail.com
[2] https://lore.kernel.org/all/aqqap3DngKznNrSA@sirena.org.uk

The following changes since commit d4b7fb647204f0c81dfeae2d1a708e4d858e0c94:

  Merge branch 'kvm-xen-longmode' into HEAD (2026-09-04 17:35:03 +0200)

are available in the Git repository at:

  https://github.com/kvm-x86/linux.git tags/kvm-x86-ppc_selftests-7.4

for you to fetch changes up to 23140d6e54ac31e2f4ef3bcd7fb586a14360be34:

  KVM: selftests: Enable hardware disable test PPC (without pSeries LPAR) (2026-10-13 12:07:29 -0700)

----------------------------------------------------------------
KVM PPC selftests support for 7.4

Rework KVM selftest's handling of memory regions all so that PPC can force its
page table allocations to be naturally aligned, and then add initial selftests
support for PPC.

----------------------------------------------------------------
Hisam Mehboob (1):
      KVM: selftests: Replace ulong with unsigned long

Nicholas Piggin (2):
      KVM: selftests: Use goto instead of do-while to retry finding unused physical pages
      KVM: PPC: selftests: add support for powerpc

Ritesh Harjani (IBM) (7):
      KVM: selftests: Don't limit LE dirty-bitmap bitops to s390x
      KVM: selftests: Move memslot_perf_test off the 256M ELF load address
      KVM: selftests: Skip the max vCPU ID test when KVM_CAP_PPC_SMT is set
      KVM: selftests: Add helper for checking if running on powerpc pseries LPAR
      KVM: selftests: Skip kvm_create_max_vcpus on powerpc pseries LPAR
      KVM: selftests: Enable access tracking perf test for PPC (with LPAR clause)
      KVM: selftests: Enable hardware disable test PPC (without pSeries LPAR)

Sean Christopherson (19):
      KVM: selftests: Use MEM_REGION_PT memslot instead of '0' for s390 regions/segments
      KVM: selftests: Use the common minimum GPA for page tables on LoongArch
      KVM: selftests: Use vm_alloc_page_table() to allocate LoongArch page tables
      KVM: selftests: Rename "num" param to "nr_pages" for physical page allocators
      KVM: selftests: Extend page allocator to support naturally aligned allocations
      KVM: selftests: Make the single-page allocator APIs static inline
      KVM: selftests: Use the innermost page allocator API in the memslot perf test
      KVM: selftests: Use the innermost page allocator API in s390's IRQ routing test
      KVM: selftests: Add a wrapper API to allocate multiple page table pages
      KVM: selftests: Initialize vm->memslots[] with invalid memslots during creation
      KVM: selftests: Add APIs to override memory region types with custom memslots
      KVM: selftests: Add TEST_EXTRA memory region type for "special" memslots
      KVM: selftests: Use TEST_EXTRA region in arm64's vGIC LPI stress test
      KVM: selftests: Use TEST_EXTRA region in x86's smaller MAXPHYADDR test
      KVM: selftests: Use TEST_EXTRA region in set memory region test
      KVM: selftests: Take the memory region type, not memslot, in page allocators
      KVM: selftests: Use TEST_ASSERT(), not assert(), in vm_get_mem_region()
      KVM: selftests: Automatically pick min_gpa for allocations based on region type
      KVM: selftests: Add arch hook to force page tables to be naturally aligned

 MAINTAINERS                                        |   2 +
 tools/testing/selftests/kvm/Makefile               |   2 +-
 tools/testing/selftests/kvm/Makefile.kvm           |   9 +
 .../selftests/kvm/access_tracking_perf_test.c      |  10 +
 tools/testing/selftests/kvm/arm64/hypercalls.c     |   2 +-
 .../testing/selftests/kvm/arm64/page_fault_test.c  |  18 +-
 .../testing/selftests/kvm/arm64/vgic_lpi_stress.c  |  21 +-
 tools/testing/selftests/kvm/dirty_log_test.c       |  12 +-
 .../testing/selftests/kvm/hardware_disable_test.c  |   3 +
 tools/testing/selftests/kvm/include/kvm_util.h     | 132 +++++-
 .../testing/selftests/kvm/include/powerpc/hcall.h  |  17 +
 .../selftests/kvm/include/powerpc/kvm_util_arch.h  |  22 +
 .../selftests/kvm/include/powerpc/ppc_asm.h        |  32 ++
 .../selftests/kvm/include/powerpc/processor.h      |  39 ++
 .../testing/selftests/kvm/include/powerpc/ucall.h  |  21 +
 tools/testing/selftests/kvm/include/x86/smm.h      |   2 +-
 tools/testing/selftests/kvm/kvm_create_max_vcpus.c |  14 +-
 tools/testing/selftests/kvm/lib/arm64/processor.c  |   4 +-
 tools/testing/selftests/kvm/lib/guest_modes.c      |  20 +-
 tools/testing/selftests/kvm/lib/kvm_util.c         | 135 ++++--
 .../selftests/kvm/lib/loongarch/processor.c        |   5 +-
 tools/testing/selftests/kvm/lib/powerpc/handlers.S |  93 ++++
 tools/testing/selftests/kvm/lib/powerpc/hcall.c    |  45 ++
 .../testing/selftests/kvm/lib/powerpc/processor.c  | 512 +++++++++++++++++++++
 tools/testing/selftests/kvm/lib/powerpc/ucall.c    |  22 +
 tools/testing/selftests/kvm/lib/riscv/processor.c  |   4 +-
 tools/testing/selftests/kvm/lib/s390/processor.c   |   7 +-
 tools/testing/selftests/kvm/lib/x86/processor.c    |  15 +-
 tools/testing/selftests/kvm/memslot_perf_test.c    |   7 +-
 tools/testing/selftests/kvm/s390/cmma_test.c       |  19 +-
 tools/testing/selftests/kvm/s390/irq_routing.c     |   2 +-
 .../testing/selftests/kvm/set_memory_region_test.c |   8 +-
 tools/testing/selftests/kvm/steal_time.c           |  20 +-
 tools/testing/selftests/kvm/x86/amx_test.c         |   2 +-
 tools/testing/selftests/kvm/x86/cpuid_test.c       |   2 +-
 tools/testing/selftests/kvm/x86/hyperv_clock.c     |   2 +-
 tools/testing/selftests/kvm/x86/hyperv_evmcs.c     |   4 +-
 tools/testing/selftests/kvm/x86/hyperv_svm_test.c  |   2 +-
 tools/testing/selftests/kvm/x86/set_boot_cpu_id.c  |   2 +-
 .../kvm/x86/smaller_maxphyaddr_emulation_test.c    |   9 +-
 tools/testing/selftests/kvm/x86/state_test.c       |   4 +-
 tools/testing/selftests/kvm/x86/tsc_msrs_test.c    |   2 +-
 .../selftests/kvm/x86/vmx_nested_la57_state_test.c |   2 +-
 .../selftests/kvm/x86/vmx_preemption_timer_test.c  |   4 +-
 44 files changed, 1144 insertions(+), 167 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

  parent reply	other threads:[~2026-10-16  4:44 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-16  4:44 [GIT PULL] KVM: x86: Pull requests for 7.4 Sean Christopherson
2026-10-16  4:44 ` [GIT PULL] KVM: x86: Timekeeping fixes+cleanups " Sean Christopherson
2026-10-16  4:44 ` [GIT PULL] KVM: guest_memfd and CoCo changes " Sean Christopherson
2026-10-16  4:44 ` [GIT PULL] KVM: x86: Misc " Sean Christopherson
2026-10-16  4:44 ` [GIT PULL] KVM: x86: MMU " Sean Christopherson
2026-10-16  4:44 ` Sean Christopherson [this message]
2026-10-16  4:44 ` [GIT PULL] KVM: Selftests " Sean Christopherson
2026-10-16  4:44 ` [GIT PULL] KVM: x86: SVM " Sean Christopherson
2026-10-16  4:44 ` [GIT PULL] KVM: x86: VMX+TDX " Sean Christopherson
2026-10-16  9:11 ` [GIT PULL] KVM: x86: Pull requests " Paolo Bonzini

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=20261016044415.958618-6-seanjc@google.com \
    --to=seanjc@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®