On Mon, Sep 11, 2023, Mingwei Zhang wrote: > Use atomic bit operations for pmu->global_status because it may suffer from > race conditions between emulated overflow in KVM vPMU and PEBS overflow in > host PMI handler. Only if the host PMI occurs on a different pCPU, and if that can happen don't we have a much larger problem? > Fixes: f331601c65ad ("KVM: x86/pmu: Don't generate PEBS records for emulated instructions") > Signed-off-by: Mingwei Zhang <mizhang@xxxxxxxxxx> > --- > arch/x86/kvm/pmu.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c > index edb89b51b383..00b48f25afdb 100644 > --- a/arch/x86/kvm/pmu.c > +++ b/arch/x86/kvm/pmu.c > @@ -117,11 +117,11 @@ static inline void __kvm_perf_overflow(struct kvm_pmc *pmc, bool in_pmi) > skip_pmi = true; > } else { > /* Indicate PEBS overflow PMI to guest. */ > - skip_pmi = __test_and_set_bit(GLOBAL_STATUS_BUFFER_OVF_BIT, > - (unsigned long *)&pmu->global_status); > + skip_pmi = test_and_set_bit(GLOBAL_STATUS_BUFFER_OVF_BIT, > + (unsigned long *)&pmu->global_status); > } > } else { > - __set_bit(pmc->idx, (unsigned long *)&pmu->global_status); > + set_bit(pmc->idx, (unsigned long *)&pmu->global_status); > } > > if (!pmc->intr || skip_pmi) > > base-commit: e2013f46ee2e721567783557c301e5c91d0b74ff > -- > 2.42.0.283.g2d96d420d3-goog >