]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: x86/pmu: Do a single atomic OR when reprogramming counters
authorYosry Ahmed <yosry@kernel.org>
Wed, 27 May 2026 23:47:01 +0000 (23:47 +0000)
committerSean Christopherson <seanjc@google.com>
Thu, 28 May 2026 01:45:49 +0000 (18:45 -0700)
Do a single atomic OR using the atomic overlay of reprogram_pmi bitmask,
instead of one atomic set_bit() call per counter.

Signed-off-by: Yosry Ahmed <yosry@kernel.org>
Link: https://patch.msgid.link/20260527234711.4175166-8-yosry@kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/pmu.h

index f8286067722b02c2b3e93d8301eeb782988db9b8..0e99022168a85c264bd81aae91ced90a9ce336bf 100644 (file)
@@ -213,13 +213,10 @@ static inline void kvm_pmu_request_counter_reprogram(struct kvm_pmc *pmc)
 static inline void kvm_pmu_request_counters_reprogram(struct kvm_pmu *pmu,
                                                      u64 counters)
 {
-       int bit;
-
        if (!counters)
                return;
 
-       for_each_set_bit(bit, (unsigned long *)&counters, X86_PMC_IDX_MAX)
-               set_bit(bit, pmu->reprogram_pmi);
+       atomic64_or(counters, &pmu->__reprogram_pmi);
        kvm_make_request(KVM_REQ_PMU, pmu_to_vcpu(pmu));
 }