From: Sean Christopherson <seanjc@google.com>
To: Paolo Bonzini <pbonzini@redhat.com>,
Marc Zyngier <maz@kernel.org>, Oliver Upton <oupton@kernel.org>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
Sean Christopherson <seanjc@google.com>
Cc: Joey Gouly <joey.gouly@arm.com>,
Steffen Eiden <seiden@linux.ibm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Zenghui Yu <yuzenghui@huawei.com>,
David Hildenbrand <david@kernel.org>,
kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: [PATCH 0/9] KVM: selftests: Add more syscall wrappers, fix hardware_disable_test
Date: Thu, 30 Jul 2026 12:18:59 -0700 [thread overview]
Message-ID: <20260730191908.2084803-1-seanjc@google.com> (raw)
Buried in the middle of this is a fix for the hardware_disable_test where
it can end up with a runtime of multiple minutes on preemptible kernels due
to blindly pinning 68 spinning tasks to pCPUs 0-4, which is "mildly"
problematic if the parent is also affined to those CPUs (or the scheduler
keeps trying to run the parent on those CPUs for whatever reason).
After wasting almost half a day bisecting the kernel to the auto-enablement
of PREEMPT_LAZY, I got fed up with the test and went scorched earth on it,
to try and clean up its many warts.
The vast, vast majority of the changes are adding kvm_xxx() syscall wrappers
so that tests don't need to manually assert that a syscall succeeds (the
hardware disable test had some ugly equivalents).
Note, this somewhat unfortunately applies on top of the bad-in-hindsight
"irq_test" branch in kvm-x86, as I didn't want to re-invent the "pick a
random CPU from a cpuset" functionality. Luckily, AFAICT none of the nearly
tree-wide changes conflict with anything else that's in-flight in other
KVM arch trees, so I'm planning on smashing the "I'm Feeling Lucky" button
on this and throwing it on top of the irq_test (though I'll rename the branch
so it's not completely ridiculous).
Tested on x86 and arm64, compile tested on other architectures.
Sean Christopherson (9):
KVM: selftests: Return the target CPU from pin_task_to_random_cpu()
KVM: selftests: Extract picking of random CPU from cpu_set_t to
separate API
KVM: selftests: Affine child tasks to other pCPUs in hardware disable
test
KVM: selftests: Drop unreachable, dead code from hardware disable test
KVM: selftests: Add KVM syscall wrapper for pthread_create()
KVM: selftests: Add KVM syscall wrappers for pthread_{cancel,join}()
KVM: selftests: Add helper APIs to cancel+join pthreads
KVM: selftests: Add KVM syscall wrappers for
pthread_{g,s}etaffinity_np()
KVM: selftests: Clean up global constants in hardware disable test
tools/testing/selftests/kvm/arch_timer.c | 18 ++--
tools/testing/selftests/kvm/arm64/vgic_irq.c | 14 +--
.../selftests/kvm/arm64/vgic_lpi_stress.c | 8 +-
tools/testing/selftests/kvm/dirty_log_test.c | 4 +-
.../selftests/kvm/hardware_disable_test.c | 101 ++++++++----------
.../selftests/kvm/include/kvm_syscalls.h | 47 ++++++++
.../testing/selftests/kvm/include/kvm_util.h | 11 +-
tools/testing/selftests/kvm/irq_test.c | 4 +-
tools/testing/selftests/kvm/irqfd_test.c | 4 +-
.../selftests/kvm/kvm_page_table_test.c | 6 +-
tools/testing/selftests/kvm/lib/kvm_util.c | 10 +-
tools/testing/selftests/kvm/lib/memstress.c | 4 +-
.../selftests/kvm/lib/userfaultfd_util.c | 7 +-
.../testing/selftests/kvm/memslot_perf_test.c | 4 +-
tools/testing/selftests/kvm/mmu_stress_test.c | 4 +-
.../selftests/kvm/pre_fault_memory_test.c | 4 +-
tools/testing/selftests/kvm/rseq_test.c | 6 +-
tools/testing/selftests/kvm/s390/memop.c | 4 +-
.../selftests/kvm/set_memory_region_test.c | 6 +-
tools/testing/selftests/kvm/steal_time.c | 6 +-
tools/testing/selftests/kvm/x86/hyperv_ipi.c | 32 ++----
.../selftests/kvm/x86/hyperv_tlb_flush.c | 30 +-----
.../kvm/x86/private_mem_conversions_test.c | 4 +-
.../kvm/x86/private_mem_kvm_exits_test.c | 7 +-
.../selftests/kvm/x86/recalc_apic_map_test.c | 5 +-
.../selftests/kvm/x86/sev_migrate_tests.c | 4 +-
.../selftests/kvm/x86/sync_regs_test.c | 5 +-
.../selftests/kvm/x86/tsc_scaling_sync.c | 4 +-
.../selftests/kvm/x86/xapic_ipi_test.c | 31 +-----
.../selftests/kvm/x86/xen_shinfo_test.c | 10 +-
30 files changed, 179 insertions(+), 225 deletions(-)
base-commit: 3c7d7f908d574277a845423ec32250a8d8df44c8
--
2.55.0.508.g3f0d502094-goog
next reply other threads:[~2026-07-30 19:19 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-30 19:18 Sean Christopherson [this message]
2026-07-30 19:19 ` [PATCH 1/9] KVM: selftests: Return the target CPU from pin_task_to_random_cpu() Sean Christopherson
2026-07-30 19:19 ` [PATCH 2/9] KVM: selftests: Extract picking of random CPU from cpu_set_t to separate API Sean Christopherson
2026-07-30 19:19 ` [PATCH 3/9] KVM: selftests: Affine child tasks to other pCPUs in hardware disable test Sean Christopherson
2026-07-30 19:33 ` sashiko-bot
2026-07-30 19:19 ` [PATCH 4/9] KVM: selftests: Drop unreachable, dead code from " Sean Christopherson
2026-07-30 19:30 ` sashiko-bot
2026-07-30 19:19 ` [PATCH 5/9] KVM: selftests: Add KVM syscall wrapper for pthread_create() Sean Christopherson
2026-07-30 19:30 ` sashiko-bot
2026-07-30 19:19 ` [PATCH 6/9] KVM: selftests: Add KVM syscall wrappers for pthread_{cancel,join}() Sean Christopherson
2026-07-30 19:19 ` [PATCH 7/9] KVM: selftests: Add helper APIs to cancel+join pthreads Sean Christopherson
2026-07-30 19:19 ` [PATCH 8/9] KVM: selftests: Add KVM syscall wrappers for pthread_{g,s}etaffinity_np() Sean Christopherson
2026-07-30 19:29 ` sashiko-bot
2026-07-30 20:24 ` Sean Christopherson
2026-07-30 19:19 ` [PATCH 9/9] KVM: selftests: Clean up global constants in hardware disable test Sean Christopherson
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=20260730191908.2084803-1-seanjc@google.com \
--to=seanjc@google.com \
--cc=borntraeger@linux.ibm.com \
--cc=david@kernel.org \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=joey.gouly@arm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=oupton@kernel.org \
--cc=pbonzini@redhat.com \
--cc=seiden@linux.ibm.com \
--cc=suzuki.poulose@arm.com \
--cc=yuzenghui@huawei.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