From: Linus Torvalds Date: Thu, 13 Jan 2022 00:26:58 +0000 (-0800) Subject: Merge tag 'perf_core_for_v5.17_rc1' of git://git.kernel.org/pub/scm/linux/kernel... X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=8e5b0adeea19309c8ce0e3c9119061554973efa9;p=linux.git Merge tag 'perf_core_for_v5.17_rc1' of git://git./linux/kernel/git/tip/tip Pull perf updates from Borislav Petkov: "Cleanup of the perf/kvm interaction." * tag 'perf_core_for_v5.17_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: perf: Drop guest callback (un)register stubs KVM: arm64: Drop perf.c and fold its tiny bits of code into arm.c KVM: arm64: Hide kvm_arm_pmu_available behind CONFIG_HW_PERF_EVENTS=y KVM: arm64: Convert to the generic perf callbacks KVM: x86: Move Intel Processor Trace interrupt handler to vmx.c KVM: Move x86's perf guest info callbacks to generic KVM KVM: x86: More precisely identify NMI from guest when handling PMI KVM: x86: Drop current_vcpu for kvm_running_vcpu + kvm_arch_vcpu variable perf/core: Use static_call to optimize perf_guest_info_callbacks perf: Force architectures to opt-in to guest callbacks perf: Add wrappers for invoking guest callbacks perf/core: Rework guest callbacks to prepare for static_call support perf: Drop dead and useless guest "support" from arm, csky, nds32 and riscv perf: Stop pretending that perf can handle multiple guest callbacks KVM: x86: Register Processor Trace interrupt hook iff PT enabled in guest KVM: x86: Register perf callbacks after calling vendor's hardware_setup() perf: Protect perf_guest_cbs with RCU --- 8e5b0adeea19309c8ce0e3c9119061554973efa9 diff --cc arch/arm64/kernel/perf_callchain.c index e9b7d99f4e3a0,db04a55cee7e0..65b196e3ca6cb --- a/arch/arm64/kernel/perf_callchain.c +++ b/arch/arm64/kernel/perf_callchain.c @@@ -141,7 -147,9 +141,7 @@@ static bool callchain_trace(void *data void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs) { - if (perf_guest_cbs && perf_guest_cbs->is_in_guest()) { - struct stackframe frame; - + if (perf_guest_state()) { /* We don't support guest os callchain now */ return; } diff --cc arch/arm64/kvm/arm.c index e4727dc771bf3,8129ee1ed3a4b..f026fd01bf7bc --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@@ -503,6 -496,11 +503,13 @@@ bool kvm_arch_vcpu_in_kernel(struct kvm return vcpu_mode_priv(vcpu); } ++#ifdef CONFIG_GUEST_PERF_EVENTS + unsigned long kvm_arch_vcpu_get_ip(struct kvm_vcpu *vcpu) + { + return *vcpu_pc(vcpu); + } ++#endif + /* Just ensure a guest exit from a particular CPU */ static void exit_vm_noop(void *info) {