• Sean Christopherson's avatar
    KVM: x86/pmu: Move pmc_idx => pmc translation helper to common code · b31880ca
    Sean Christopherson authored
    Add a common helper for *internal* PMC lookups, and delete the ops hook
    and Intel's implementation.  Keep AMD's implementation, but rename it to
    amd_pmu_get_pmc() to make it somewhat more obvious that it's suited for
    both KVM-internal and guest-initiated lookups.
    
    Because KVM tracks all counters in a single bitmap, getting a counter
    when iterating over a bitmap, e.g. of all valid PMCs, requires a small
    amount of math, that while simple, isn't super obvious and doesn't use the
    same semantics as PMC lookups from RDPMC!  Although AMD doesn't support
    fixed counters, the common PMU code still behaves as if there a split, the
    high half of which just happens to always be empty.
    
    Opportunstically add a comment to explain both what is going on, and why
    KVM uses a single bitmap, e.g. the boilerplate for iterating over separate
    bitmaps could be done via macros, so it's not (just) about deduplicating
    code.
    
    Link: https://lore.kernel.org/r/20231110022857.1273836-4-seanjc@google.com
    
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    b31880ca
pmu.c 6.2 KB