• Eric Hankland's avatar
    KVM: x86: Update vPMCs when retiring instructions · 9cd803d4
    Eric Hankland authored
    When KVM retires a guest instruction through emulation, increment any
    vPMCs that are configured to monitor "instructions retired," and
    update the sample period of those counters so that they will overflow
    at the right time.
    Signed-off-by: default avatarEric Hankland <ehankland@google.com>
    [jmattson:
      - Split the code to increment "branch instructions retired" into a
        separate commit.
      - Added 'static' to kvm_pmu_incr_counter() definition.
      - Modified kvm_pmu_incr_counter() to check pmc->perf_event->state ==
        PERF_EVENT_STATE_ACTIVE.
    ]
    Fixes: f5132b01 ("KVM: Expose a version 2 architectural PMU to a guests")
    Signed-off-by: default avatarJim Mattson <jmattson@google.com>
    [likexu:
      - Drop checks for pmc->perf_event or event state or event type
      - Increase a counter once its umask bits and the first 8 select bits are matched
      - Rewrite kvm_pmu_incr_counter() with a less invasive approach to the host perf;
      - Rename kvm_pmu_record_event to kvm_pmu_trigger_event;
      - Add counter enable and CPL check for kvm_pmu_trigger_event();
    ]
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: default avatarLike Xu <likexu@tencent.com>
    Message-Id: <20211130074221.93635-6-likexu@tencent.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    9cd803d4
x86.c 333 KB