• Paul Mackerras's avatar
    perf, powerpc: Fix power_pmu_event_init to not use event->ctx · 57fa7214
    Paul Mackerras authored
    Commit c3f00c70 ("perf: Separate find_get_context() from event
    initialization") changed the generic perf_event code to call
    perf_event_alloc, which calls the arch-specific event_init code,
    before looking up the context for the new event.  Unfortunately,
    power_pmu_event_init uses event->ctx->task to see whether the
    new event is a per-task event or a system-wide event, and thus
    crashes since event->ctx is NULL at the point where
    power_pmu_event_init gets called.
    
    (The reason it needs to know whether it is a per-task event is
    because there are some hardware events on Power systems which
    only count when the processor is not idle, and there are some
    fixed-function counters which count such events.  For example,
    the "run cycles" event counts cycles when the processor is not
    idle.  If the user asks to count cycles, we can use "run cycles"
    if this is a per-task event, since the processor is running when
    the task is running, by definition.  We can't use "run cycles"
    if the user asks for "cycles" on a system-wide counter.)
    
    Fortunately the information we need is in the
    event->attach_state field, so we just use that instead.
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    LKML-Reference: <20101019055535.GA10398@drongo>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Reported-by: default avatarAlexey Kardashevskiy <aik@au1.ibm.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    57fa7214
perf_event.c 32.9 KB