]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: Add a simplified wrapper for registering perf callbacks
authorSean Christopherson <seanjc@google.com>
Sat, 6 Dec 2025 00:16:50 +0000 (16:16 -0800)
committerSean Christopherson <seanjc@google.com>
Thu, 8 Jan 2026 19:51:39 +0000 (11:51 -0800)
Add a parameter-less API for registering perf callbacks in anticipation of
introducing another x86-only parameter for handling mediated PMU PMIs.

No functional change intended.

Acked-by: Anup Patel <anup@brainfault.org>
Tested-by: Xudong Hao <xudong.hao@intel.com>
Tested-by: Manali Shukla <manali.shukla@amd.com>
Link: https://patch.msgid.link/20251206001720.468579-15-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/arm64/kvm/arm.c
arch/loongarch/kvm/main.c
arch/riscv/kvm/main.c
arch/x86/kvm/x86.c
include/linux/kvm_host.h
virt/kvm/kvm_main.c

index 4f80da0c0d1de89abc0c0dfd90c8adf318a8c9be..3e6f184d6d042633d45c87cb088c0efb64c826ef 100644 (file)
@@ -2357,7 +2357,7 @@ static int __init init_subsystems(void)
        if (err)
                goto out;
 
-       kvm_register_perf_callbacks(NULL);
+       kvm_register_perf_callbacks();
 
 out:
        if (err)
index 80ea63d465b8ea44b224171f096e8644bd9124b6..f62326fe29fa30cc75c5a460c5f5ca80f6aa398b 100644 (file)
@@ -394,7 +394,7 @@ static int kvm_loongarch_env_init(void)
        }
 
        kvm_init_gcsr_flag();
-       kvm_register_perf_callbacks(NULL);
+       kvm_register_perf_callbacks();
 
        /* Register LoongArch IPI interrupt controller interface. */
        ret = kvm_loongarch_register_ipi_device();
index 45536af521f055e03b32ebbe8aac8c78ba3dcddf..0f3fe3986fc02ee561efe1d185dc8ad487509fe2 100644 (file)
@@ -174,7 +174,7 @@ static int __init riscv_kvm_init(void)
 
        kvm_riscv_setup_vendor_features();
 
-       kvm_register_perf_callbacks(NULL);
+       kvm_register_perf_callbacks();
 
        rc = kvm_init(sizeof(struct kvm_vcpu), 0, THIS_MODULE);
        if (rc) {
index 0c6d899d53ddc0c4e9a75a31483f517bc4d9aa58..1b2827cecf38a3726537a264a0819df9d757c944 100644 (file)
@@ -10107,7 +10107,7 @@ int kvm_x86_vendor_init(struct kvm_x86_init_ops *ops)
                set_hv_tscchange_cb(kvm_hyperv_tsc_notifier);
 #endif
 
-       kvm_register_perf_callbacks(ops->handle_intel_pt_intr);
+       __kvm_register_perf_callbacks(ops->handle_intel_pt_intr, NULL);
 
        if (IS_ENABLED(CONFIG_KVM_SW_PROTECTED_VM) && tdp_mmu_enabled)
                kvm_caps.supported_vm_types |= BIT(KVM_X86_SW_PROTECTED_VM);
index d93f75b05ae2272c1ba8e10dde8c34b38f0e2eb6..8e410d1a63dfc2ac6cd8ba30042ceb2a6956ff5f 100644 (file)
@@ -1749,10 +1749,17 @@ static inline bool kvm_arch_intc_initialized(struct kvm *kvm)
 #ifdef CONFIG_GUEST_PERF_EVENTS
 unsigned long kvm_arch_vcpu_get_ip(struct kvm_vcpu *vcpu);
 
-void kvm_register_perf_callbacks(unsigned int (*pt_intr_handler)(void));
+void __kvm_register_perf_callbacks(unsigned int (*pt_intr_handler)(void),
+                                  void (*mediated_pmi_handler)(void));
+
+static inline void kvm_register_perf_callbacks(void)
+{
+       __kvm_register_perf_callbacks(NULL, NULL);
+}
+
 void kvm_unregister_perf_callbacks(void);
 #else
-static inline void kvm_register_perf_callbacks(void *ign) {}
+static inline void kvm_register_perf_callbacks(void) {}
 static inline void kvm_unregister_perf_callbacks(void) {}
 #endif /* CONFIG_GUEST_PERF_EVENTS */
 
index 21a0d226d63f8dae8b285537a2c67c0a2d06db96..d59cb53af76a5f1ab6014b3ea91113bff225cc2d 100644 (file)
@@ -6470,10 +6470,11 @@ static struct perf_guest_info_callbacks kvm_guest_cbs = {
        .handle_mediated_pmi    = NULL,
 };
 
-void kvm_register_perf_callbacks(unsigned int (*pt_intr_handler)(void))
+void __kvm_register_perf_callbacks(unsigned int (*pt_intr_handler)(void),
+                                  void (*mediated_pmi_handler)(void))
 {
        kvm_guest_cbs.handle_intel_pt_intr = pt_intr_handler;
-       kvm_guest_cbs.handle_mediated_pmi = NULL;
+       kvm_guest_cbs.handle_mediated_pmi = mediated_pmi_handler;
 
        perf_register_guest_info_callbacks(&kvm_guest_cbs);
 }