lkml.org 
[lkml]   [2020]   [Aug]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip: perf/core] perf/x86: Use event_base_rdpmc for the RDPMC userspace support
    The following commit has been merged into the perf/core branch of tip:

    Commit-ID: 75608cb02ea5dd997990e2998eca3670cb71a18c
    Gitweb: https://git.kernel.org/tip/75608cb02ea5dd997990e2998eca3670cb71a18c
    Author: Kan Liang <kan.liang@linux.intel.com>
    AuthorDate: Thu, 23 Jul 2020 10:11:04 -07:00
    Committer: Peter Zijlstra <peterz@infradead.org>
    CommitterDate: Tue, 18 Aug 2020 16:34:34 +02:00

    perf/x86: Use event_base_rdpmc for the RDPMC userspace support

    The RDPMC index is always re-calculated for the RDPMC userspace support,
    which is unnecessary.

    The RDPMC index value is stored in the variable event_base_rdpmc for
    the kernel usage, which can be used for RDPMC userspace support as well.

    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20200723171117.9918-2-kan.liang@linux.intel.com
    ---
    arch/x86/events/core.c | 11 +++--------
    1 file changed, 3 insertions(+), 8 deletions(-)

    diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
    index 1cbf57d..8e108ea 100644
    --- a/arch/x86/events/core.c
    +++ b/arch/x86/events/core.c
    @@ -2208,17 +2208,12 @@ static void x86_pmu_event_unmapped(struct perf_event *event, struct mm_struct *m

    static int x86_pmu_event_idx(struct perf_event *event)
    {
    - int idx = event->hw.idx;
    + struct hw_perf_event *hwc = &event->hw;

    - if (!(event->hw.flags & PERF_X86_EVENT_RDPMC_ALLOWED))
    + if (!(hwc->flags & PERF_X86_EVENT_RDPMC_ALLOWED))
    return 0;

    - if (x86_pmu.num_counters_fixed && idx >= INTEL_PMC_IDX_FIXED) {
    - idx -= INTEL_PMC_IDX_FIXED;
    - idx |= 1 << 30;
    - }
    -
    - return idx + 1;
    + return hwc->event_base_rdpmc + 1;
    }

    static ssize_t get_attr_rdpmc(struct device *cdev,
    \
     
     \ /
      Last update: 2020-08-19 10:57    [W:4.489 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site