Re: [PATCH v6 4/7] arm64: perf: Defer irq_work to IPI_IRQ_WORK
flat view
From: peterz@infradead.org
Date: 2020-08-19 14:23:51
Also in:
lkml
On Wed, Aug 19, 2020 at 02:34:16PM +0100, Alexandru Elisei wrote:
From: Julien Thierry <redacted> 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.
Makes sense, IIRC this code was written before ARM grew IPI_IRQ_WORK support and then it makes sense, but now that you have it and are moving to NMI-like context this is absolutely the right thing to do. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel