Skip to content

Commit 4b24910

Browse files
committed
KVM: Add a simplified wrapper for registering perf callbacks
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>
1 parent 01122b8 commit 4b24910

6 files changed

Lines changed: 16 additions & 8 deletions

File tree

arch/arm64/kvm/arm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2357,7 +2357,7 @@ static int __init init_subsystems(void)
23572357
if (err)
23582358
goto out;
23592359

2360-
kvm_register_perf_callbacks(NULL);
2360+
kvm_register_perf_callbacks();
23612361

23622362
out:
23632363
if (err)

arch/loongarch/kvm/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ static int kvm_loongarch_env_init(void)
394394
}
395395

396396
kvm_init_gcsr_flag();
397-
kvm_register_perf_callbacks(NULL);
397+
kvm_register_perf_callbacks();
398398

399399
/* Register LoongArch IPI interrupt controller interface. */
400400
ret = kvm_loongarch_register_ipi_device();

arch/riscv/kvm/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ static int __init riscv_kvm_init(void)
174174

175175
kvm_riscv_setup_vendor_features();
176176

177-
kvm_register_perf_callbacks(NULL);
177+
kvm_register_perf_callbacks();
178178

179179
rc = kvm_init(sizeof(struct kvm_vcpu), 0, THIS_MODULE);
180180
if (rc) {

arch/x86/kvm/x86.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10107,7 +10107,7 @@ int kvm_x86_vendor_init(struct kvm_x86_init_ops *ops)
1010710107
set_hv_tscchange_cb(kvm_hyperv_tsc_notifier);
1010810108
#endif
1010910109

10110-
kvm_register_perf_callbacks(ops->handle_intel_pt_intr);
10110+
__kvm_register_perf_callbacks(ops->handle_intel_pt_intr, NULL);
1011110111

1011210112
if (IS_ENABLED(CONFIG_KVM_SW_PROTECTED_VM) && tdp_mmu_enabled)
1011310113
kvm_caps.supported_vm_types |= BIT(KVM_X86_SW_PROTECTED_VM);

include/linux/kvm_host.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1749,10 +1749,17 @@ static inline bool kvm_arch_intc_initialized(struct kvm *kvm)
17491749
#ifdef CONFIG_GUEST_PERF_EVENTS
17501750
unsigned long kvm_arch_vcpu_get_ip(struct kvm_vcpu *vcpu);
17511751

1752-
void kvm_register_perf_callbacks(unsigned int (*pt_intr_handler)(void));
1752+
void __kvm_register_perf_callbacks(unsigned int (*pt_intr_handler)(void),
1753+
void (*mediated_pmi_handler)(void));
1754+
1755+
static inline void kvm_register_perf_callbacks(void)
1756+
{
1757+
__kvm_register_perf_callbacks(NULL, NULL);
1758+
}
1759+
17531760
void kvm_unregister_perf_callbacks(void);
17541761
#else
1755-
static inline void kvm_register_perf_callbacks(void *ign) {}
1762+
static inline void kvm_register_perf_callbacks(void) {}
17561763
static inline void kvm_unregister_perf_callbacks(void) {}
17571764
#endif /* CONFIG_GUEST_PERF_EVENTS */
17581765

virt/kvm/kvm_main.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6470,10 +6470,11 @@ static struct perf_guest_info_callbacks kvm_guest_cbs = {
64706470
.handle_mediated_pmi = NULL,
64716471
};
64726472

6473-
void kvm_register_perf_callbacks(unsigned int (*pt_intr_handler)(void))
6473+
void __kvm_register_perf_callbacks(unsigned int (*pt_intr_handler)(void),
6474+
void (*mediated_pmi_handler)(void))
64746475
{
64756476
kvm_guest_cbs.handle_intel_pt_intr = pt_intr_handler;
6476-
kvm_guest_cbs.handle_mediated_pmi = NULL;
6477+
kvm_guest_cbs.handle_mediated_pmi = mediated_pmi_handler;
64776478

64786479
perf_register_guest_info_callbacks(&kvm_guest_cbs);
64796480
}

0 commit comments

Comments
 (0)