• Julien Thierry's avatar
    arm64: perf: Defer irq_work to IPI_IRQ_WORK · 05ab7281
    Julien Thierry authored
    When handling events, armv8pmu_handle_irq() calls perf_event_overflow(),
    and subsequently calls irq_work_run() to handle any work queued by
    perf_event_overflow(). As perf_event_overflow() raises IPI_IRQ_WORK when
    queuing the work, this isn't strictly necessary and the work could be
    handled as part of the IPI_IRQ_WORK handler.
    
    In the common case the IPI handler will run immediately after the PMU IRQ
    handler, and where the PE is heavily loaded with interrupts other handlers
    may run first, widening the window where some counters are disabled.
    
    In practice this window is unlikely to be a significant issue, and removing
    the call to irq_work_run() would make the PMU IRQ handler NMI safe in
    addition to making it simpler, so let's do that.
    
    [Alexandru E.: Reworded commit message]
    Signed-off-by: default avatarJulien Thierry <julien.thierry@arm.com>
    Signed-off-by: default avatarAlexandru Elisei <alexandru.elisei@arm.com>
    Cc: Julien Thierry <julien.thierry.kdev@gmail.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Link: https://lore.kernel.org/r/20200924110706.254996-5-alexandru.elisei@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    05ab7281
perf_event.c 39.3 KB