[PATCH 0/3] KVM: VMX: Disable LBRs if CPU doesn't have callstacks

Sean Christopherson
2024-03-07T01:13:47Z

Disable LBR virtualization if the CPU (or I guess perf) doesn't support
LBR callstacks, as KVM unconditionally creates the associated perf LBR
event with PERF_SAMPLE_BRANCH_CALL_STACK. That results in perf rejecting
the event, and cause LBR virtualization to silently fail.

This was detected by running vmx_pmu_caps_test on older hardware. I didn't
tag it for stable because I can't imagine anyone is trying to use KVM's LBR
virtualization on pre-HSW.

Sean Christopherson (3):
KVM: VMX: Snapshot LBR capabilities during module initialization
perf/x86/intel: Expose existence of callback support to KVM
KVM: VMX: Disable LBR virtualization if the CPU doesn't support LBR
callstacks

arch/x86/events/intel/lbr.c | 1 +
arch/x86/include/asm/perf_event.h | 1 +
arch/x86/kvm/vmx/pmu_intel.c | 2 +-
arch/x86/kvm/vmx/vmx.c | 17 +++++++++++++----
arch/x86/kvm/vmx/vmx.h | 2 ++
5 files changed, 18 insertions(+), 5 deletions(-)

base-commit: 0c64952fec3ea01cb5b09f00134200f3e7ab40d5
--
2.44.0.278.ge034bb2e1d-goog