]> git.baikalelectronics.ru Git - kernel.git/commit
perf/x86/core: Zero @lbr instead of returning -1 in x86_perf_get_lbr() stub
authorSean Christopherson <seanjc@google.com>
Thu, 6 Oct 2022 00:03:07 +0000 (00:03 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 May 2023 09:53:27 +0000 (11:53 +0200)
commit195d88561f14c767f521cb26088bae2fb82cd805
tree1099803ef21c084837e16183df13f393d9030f0d
parent9da6b2692ba8891cd36b86272022f0cd07655901
perf/x86/core: Zero @lbr instead of returning -1 in x86_perf_get_lbr() stub

[ Upstream commit 0b9ca98b722969660ad98b39f766a561ccb39f5f ]

Drop the return value from x86_perf_get_lbr() and have the stub zero out
the @lbr structure instead of returning -1 to indicate "no LBR support".
KVM doesn't actually check the return value, and instead subtly relies on
zeroing the number of LBRs in intel_pmu_init().

Formalize "nr=0 means unsupported" so that KVM doesn't need to add a
pointless check on the return value to fix KVM's benign bug.

Note, the stub is necessary even though KVM x86 selects PERF_EVENTS and
the caller exists only when CONFIG_KVM_INTEL=y.  Despite the name,
KVM_INTEL doesn't strictly require CPU_SUP_INTEL, it can be built with
any of INTEL || CENTAUR || ZHAOXIN CPUs.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20221006000314.73240-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Stable-dep-of: 098f4c061ea1 ("KVM: x86/pmu: Disallow legacy LBRs if architectural LBRs are available")
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/events/intel/lbr.c
arch/x86/include/asm/perf_event.h
arch/x86/kvm/vmx/capabilities.h