lkml.org 
[lkml]   [2013]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 4/6][v4]: perf/POWER7: Make some POWER7 events available in sysfs

    [PATCH 4/6][v4]: perf/POWER7: Make some POWER7 events available in sysfs

    Make some POWER7-specific perf events available in sysfs.

    $ /bin/ls -1 /sys/bus/event_source/devices/cpu/events/
    branch-instructions
    branch-misses
    cache-misses
    cache-references
    cpu-cycles
    instructions
    PM_BRU_FIN
    PM_BRU_MPRED
    PM_CMPLU_STALL
    PM_CYC
    PM_GCT_NOSLOT_CYC
    PM_INST_CMPL
    PM_LD_MISS_L1
    PM_LD_REF_L1
    stalled-cycles-backend
    stalled-cycles-frontend

    where the 'PM_*' events are POWER specific and the others are the
    generic events.

    This will enable users to specify these events with their symbolic
    names rather than with their raw code.

    perf stat -e 'cpu/PM_CYC' ...

    Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
    ---
    arch/powerpc/include/asm/perf_event_server.h | 2 ++
    arch/powerpc/perf/power7-pmu.c | 18 ++++++++++++++++++
    2 files changed, 20 insertions(+), 0 deletions(-)

    diff --git a/arch/powerpc/include/asm/perf_event_server.h b/arch/powerpc/include/asm/perf_event_server.h
    index 3f21d89..b29fcc6 100644
    --- a/arch/powerpc/include/asm/perf_event_server.h
    +++ b/arch/powerpc/include/asm/perf_event_server.h
    @@ -133,3 +133,5 @@ extern ssize_t power_events_sysfs_show(struct device *dev,
    #define GENERIC_EVENT_ATTR(_name, _id) EVENT_ATTR(_name, _id, _g)
    #define GENERIC_EVENT_PTR(_id) EVENT_PTR(_id, _g)

    +#define POWER_EVENT_ATTR(_name, _id) EVENT_ATTR(PM_##_name, _id, _p)
    +#define POWER_EVENT_PTR(_id) EVENT_PTR(_id, _p)
    diff --git a/arch/powerpc/perf/power7-pmu.c b/arch/powerpc/perf/power7-pmu.c
    index ae5d757..5627940 100644
    --- a/arch/powerpc/perf/power7-pmu.c
    +++ b/arch/powerpc/perf/power7-pmu.c
    @@ -373,6 +373,15 @@ GENERIC_EVENT_ATTR(cache-misses, LD_MISS_L1);
    GENERIC_EVENT_ATTR(branch-instructions, BRU_FIN);
    GENERIC_EVENT_ATTR(branch-misses, BRU_MPRED);

    +POWER_EVENT_ATTR(CYC, CYC);
    +POWER_EVENT_ATTR(GCT_NOSLOT_CYC, GCT_NOSLOT_CYC);
    +POWER_EVENT_ATTR(CMPLU_STALL, CMPLU_STALL);
    +POWER_EVENT_ATTR(INST_CMPL, INST_CMPL);
    +POWER_EVENT_ATTR(LD_REF_L1, LD_REF_L1);
    +POWER_EVENT_ATTR(LD_MISS_L1, LD_MISS_L1);
    +POWER_EVENT_ATTR(BRU_FIN, BRU_FIN)
    +POWER_EVENT_ATTR(BRU_MPRED, BRU_MPRED);
    +
    static struct attribute *power7_events_attr[] = {
    GENERIC_EVENT_PTR(CYC),
    GENERIC_EVENT_PTR(GCT_NOSLOT_CYC),
    @@ -382,6 +391,15 @@ static struct attribute *power7_events_attr[] = {
    GENERIC_EVENT_PTR(LD_MISS_L1),
    GENERIC_EVENT_PTR(BRU_FIN),
    GENERIC_EVENT_PTR(BRU_MPRED),
    +
    + POWER_EVENT_PTR(CYC),
    + POWER_EVENT_PTR(GCT_NOSLOT_CYC),
    + POWER_EVENT_PTR(CMPLU_STALL),
    + POWER_EVENT_PTR(INST_CMPL),
    + POWER_EVENT_PTR(LD_REF_L1),
    + POWER_EVENT_PTR(LD_MISS_L1),
    + POWER_EVENT_PTR(BRU_FIN),
    + POWER_EVENT_PTR(BRU_MPRED),
    NULL
    };

    --
    1.7.1


    \
     
     \ /
      Last update: 2013-01-23 08:01    [W:3.359 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site