mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:24:47 +01:00
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>
This commit is contained in:
parent
01122b8936
commit
4b24910c05
6 changed files with 16 additions and 8 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue