> And the total patch is: > > --- > arch/x86/kvm/pmu.c | 2 +- > arch/x86/kvm/pmu.h | 2 ++ > arch/x86/kvm/svm/pmu.c | 2 ++ > arch/x86/kvm/vmx/pmu_intel.c | 2 ++ > 4 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c > index d9b9a0f0db17..d0e2c7eda65b 100644 > --- a/arch/x86/kvm/pmu.c > +++ b/arch/x86/kvm/pmu.c > @@ -273,7 +273,7 @@ static bool check_pmu_event_filter(struct kvm_pmc *pmc) > goto out; > > if (pmc_is_gp(pmc)) { > - key = pmc->eventsel & AMD64_RAW_EVENT_MASK_NB; > + key = pmc->eventsel & kvm_pmu_ops.EVENTSEL_MASK; > if (bsearch(&key, filter->events, filter->nevents, > sizeof(__u64), cmp_u64)) > allow_event = filter->action == KVM_PMU_EVENT_ALLOW; > diff --git a/arch/x86/kvm/pmu.h b/arch/x86/kvm/pmu.h > index 5cc5721f260b..45a7dd24125d 100644 > --- a/arch/x86/kvm/pmu.h > +++ b/arch/x86/kvm/pmu.h > @@ -40,6 +40,8 @@ struct kvm_pmu_ops { > void (*reset)(struct kvm_vcpu *vcpu); > void (*deliver_pmi)(struct kvm_vcpu *vcpu); > void (*cleanup)(struct kvm_vcpu *vcpu); > + > + const u64 EVENTSEL_MASK; Agreed, a constant is better. Had I realized I could do that, that would have been my first choice. What about calling it EVENTSEL_RAW_MASK to make it more descriptive though? It's a little too generic given there is EVENTSEL_UMASK and EVENTSEL_CMASK, also there is precedent for using the term 'raw event' for (eventsel+umask), i.e. https://man7.org/linux/man-pages/man1/perf-record.1.html. > }; > > void kvm_pmu_ops_update(const struct kvm_pmu_ops *pmu_ops); > diff --git a/arch/x86/kvm/svm/pmu.c b/arch/x86/kvm/svm/pmu.c > index b68956299fa8..6ef7d1fcdbc2 100644 > --- a/arch/x86/kvm/svm/pmu.c > +++ b/arch/x86/kvm/svm/pmu.c > @@ -228,4 +228,6 @@ struct kvm_pmu_ops amd_pmu_ops __initdata = { > .refresh = amd_pmu_refresh, > .init = amd_pmu_init, > .reset = amd_pmu_reset, > + .EVENTSEL_MASK = AMD64_EVENTSEL_EVENT | > + ARCH_PERFMON_EVENTSEL_UMASK, > }; > diff --git a/arch/x86/kvm/vmx/pmu_intel.c b/arch/x86/kvm/vmx/pmu_intel.c > index 25b70a85bef5..0a1c95b64ef1 100644 > --- a/arch/x86/kvm/vmx/pmu_intel.c > +++ b/arch/x86/kvm/vmx/pmu_intel.c > @@ -811,4 +811,6 @@ struct kvm_pmu_ops intel_pmu_ops __initdata = { > .reset = intel_pmu_reset, > .deliver_pmi = intel_pmu_deliver_pmi, > .cleanup = intel_pmu_cleanup, > + .EVENTSEL_MASK = ARCH_PERFMON_EVENTSEL_EVENT | > + ARCH_PERFMON_EVENTSEL_UMASK, > }; > > base-commit: e18d6152ff0f41b7f01f9817372022df04e0d354 > -- >