lkml.org 
[lkml]   [2011]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RESEND PATCH v4 3/5] MIPS/Perf-events: Fix event check in validate_event()
    Date
    Ignore events that are in off/error state or belong to a different PMU.

    This patch originates from the following commit for ARM by Will Deacon:

    - 65b4711ff513767341aa1915c822de6ec0de65cb
    ARM: 6352/1: perf: fix event validation

    The validate_event function in the ARM perf events backend has the
    following problems:

    1.) Events that are disabled count towards the cost.
    2.) Events associated with other PMUs [for example, software events or
    breakpoints] do not count towards the cost, but do fail validation,
    causing the group to fail.

    This patch changes validate_event so that it ignores events in the
    PERF_EVENT_STATE_OFF state or that are scheduled for other PMUs.

    Acked-by: Will Deacon <will.deacon@arm.com>
    Acked-by: David Daney <ddaney@caviumnetworks.com>
    Signed-off-by: Deng-Cheng Zhu <dengcheng.zhu@gmail.com>
    ---
    Changes:
    v4 - v3:
    o None
    v3 - v2:
    o Keep all mentioned commits in the form of number + title + original
    summary + (MIPS specific info when needed).
    v2 - v1:
    o Corrected the return value of the event check in validate_event().

    arch/mips/kernel/perf_event.c | 5 +++--
    1 files changed, 3 insertions(+), 2 deletions(-)

    diff --git a/arch/mips/kernel/perf_event.c b/arch/mips/kernel/perf_event.c
    index 1ee44a3..3d55761 100644
    --- a/arch/mips/kernel/perf_event.c
    +++ b/arch/mips/kernel/perf_event.c
    @@ -486,8 +486,9 @@ static int validate_event(struct cpu_hw_events *cpuc,
    {
    struct hw_perf_event fake_hwc = event->hw;

    - if (event->pmu && event->pmu != &pmu)
    - return 0;
    + /* Allow mixed event group. So return 1 to pass validation. */
    + if (event->pmu != &pmu || event->state <= PERF_EVENT_STATE_OFF)
    + return 1;

    return mipspmu->alloc_counter(cpuc, &fake_hwc) >= 0;
    }
    --
    1.7.1


    \
     
     \ /
      Last update: 2011-01-24 08:39    [W:0.021 / U:59.188 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site