lkml.org 
[lkml]   [2019]   [Nov]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/2] Thunderx2, uncore: Add workaround for ThunderX2 erratum 221
    Date
    When perf tried with more events than the PMU supported counters, the perf
    core uses event multiplexing to accommodate all events. This results in
    burst of PMU register read and writes and causes the system hang, when
    executed along with the CPU intensive applications.

    Adding software workaround by disabling event multiplexing.

    Signed-off-by: Ganapatrao Prabhakerrao Kulkarni <gkulkarni@marvell.com>
    ---
    Documentation/admin-guide/perf/thunderx2-pmu.rst | 9 +++++++++
    drivers/perf/thunderx2_pmu.c | 3 ++-
    2 files changed, 11 insertions(+), 1 deletion(-)

    diff --git a/Documentation/admin-guide/perf/thunderx2-pmu.rst b/Documentation/admin-guide/perf/thunderx2-pmu.rst
    index 08e33675853a..fff65382c887 100644
    --- a/Documentation/admin-guide/perf/thunderx2-pmu.rst
    +++ b/Documentation/admin-guide/perf/thunderx2-pmu.rst
    @@ -40,3 +40,12 @@ Examples::
    uncore_l3c_0/read_hit/,\
    uncore_l3c_0/inv_request/,\
    uncore_l3c_0/inv_hit/ sleep 1
    +
    +ThunderX2 erratum 221:
    +When perf tried with more events than the PMU supported counters, the perf core
    +uses event multiplexing to accommodate all events. This results in burst of PMU
    +registers read and write and leading to system hang when executed along with
    +CPU intensive applications.
    +
    +
    +Disabling PMUs event multiplexing capability.
    diff --git a/drivers/perf/thunderx2_pmu.c b/drivers/perf/thunderx2_pmu.c
    index 43d76c85da56..c443be8bd449 100644
    --- a/drivers/perf/thunderx2_pmu.c
    +++ b/drivers/perf/thunderx2_pmu.c
    @@ -563,7 +563,8 @@ static int tx2_uncore_pmu_register(
    .start = tx2_uncore_event_start,
    .stop = tx2_uncore_event_stop,
    .read = tx2_uncore_event_read,
    - .capabilities = PERF_PMU_CAP_NO_EXCLUDE,
    + .capabilities = PERF_PMU_CAP_NO_EXCLUDE |
    + PERF_PMU_CAP_NO_MUX_EVENTS,
    };

    tx2_pmu->pmu.name = devm_kasprintf(dev, GFP_KERNEL,
    --
    2.17.1
    \
     
     \ /
      Last update: 2019-11-06 02:02    [W:3.119 / U:0.368 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site