[PATCH v2 34/36] KVM: selftests: Add a global option to disable in-kernel irqchip

From: isaku . yamahata

Date: Thu Mar 05 2026 - 12:56:42 EST


From: Isaku Yamahata <isaku.yamahata@xxxxxxxxx>

For test cases with in-kernel irqchip/apic disabled.

Signed-off-by: Isaku Yamahata <isaku.yamahata@xxxxxxxxx>
--
Changes v1 -> v2:
- Newly added.
---
tools/testing/selftests/kvm/include/x86/kvm_util_arch.h | 1 +
tools/testing/selftests/kvm/lib/x86/processor.c | 5 ++++-
2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/kvm/include/x86/kvm_util_arch.h b/tools/testing/selftests/kvm/include/x86/kvm_util_arch.h
index be35d26bb320..fe502956b2ad 100644
--- a/tools/testing/selftests/kvm/include/x86/kvm_util_arch.h
+++ b/tools/testing/selftests/kvm/include/x86/kvm_util_arch.h
@@ -9,6 +9,7 @@
#include "test_util.h"

extern bool is_forced_emulation_enabled;
+extern bool disable_inkernel_irqchip;

struct pte_masks {
uint64_t present;
diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c b/tools/testing/selftests/kvm/lib/x86/processor.c
index f4e8649071b6..2342ea227638 100644
--- a/tools/testing/selftests/kvm/lib/x86/processor.c
+++ b/tools/testing/selftests/kvm/lib/x86/processor.c
@@ -27,6 +27,7 @@ bool host_cpu_is_hygon;
bool host_cpu_is_amd_compatible;
bool is_forced_emulation_enabled;
uint64_t guest_tsc_khz;
+bool disable_inkernel_irqchip;

const char *ex_str(int vector)
{
@@ -789,7 +790,8 @@ void kvm_arch_vm_post_create(struct kvm_vm *vm, unsigned int nr_vcpus)
TEST_ASSERT(kvm_has_cap(KVM_CAP_GET_TSC_KHZ),
"Require KVM_GET_TSC_KHZ to provide udelay() to guest.");

- vm_create_irqchip(vm);
+ if (!disable_inkernel_irqchip)
+ vm_create_irqchip(vm);
vm_init_descriptor_tables(vm);

sync_global_to_guest(vm, host_cpu_is_intel);
@@ -798,6 +800,7 @@ void kvm_arch_vm_post_create(struct kvm_vm *vm, unsigned int nr_vcpus)
sync_global_to_guest(vm, host_cpu_is_amd_compatible);
sync_global_to_guest(vm, is_forced_emulation_enabled);
sync_global_to_guest(vm, pmu_errata_mask);
+ sync_global_to_guest(vm, disable_inkernel_irqchip);

if (is_sev_vm(vm)) {
struct kvm_sev_init init = { 0 };
--
2.45.2