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

isaku.yamahata@intel.com posted 36 patches 3 weeks, 6 days ago
[PATCH v2 34/36] KVM: selftests: Add a global option to disable in-kernel irqchip
Posted by isaku.yamahata@intel.com 3 weeks, 6 days ago
From: Isaku Yamahata <isaku.yamahata@intel.com>

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

Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
--
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