[PATCH] ARM: perf-events: request PMU interrupts with IRQF_NOBALANCING
Jamie Iles
jamie.iles at picochip.com
Thu Feb 25 07:31:45 EST 2010
On Thu, Feb 25, 2010 at 12:12:18PM +0000, Will Deacon wrote:
> If IRQ balancing is used on a multicore ARM system, PMU interrupt
> lines may be relocated onto CPUs other than the one causing the
> counter overflow. This can result in misattribution of events to
> the wrong core and, in the case that the CPU handling the interrupt
> has not experience counter overflow, the interrupt can be disabled
> because the handler returns IRQ_NONE.
>
> This patch adds the IRQF_NOBALANCING flag to the request_irq call
> in perf_events.c.
>
> Cc: Jamie Iles <jamie.iles at picochip.com>
> Signed-off-by: Will Deacon <will.deacon at arm.com>
> ---
> arch/arm/kernel/perf_event.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
> index c54ceb3..b44d159 100644
> --- a/arch/arm/kernel/perf_event.c
> +++ b/arch/arm/kernel/perf_event.c
> @@ -332,7 +332,8 @@ armpmu_reserve_hardware(void)
>
> for (i = 0; i < pmu_irqs->num_irqs; ++i) {
> err = request_irq(pmu_irqs->irqs[i], armpmu->handle_irq,
> - IRQF_DISABLED, "armpmu", NULL);
> + IRQF_DISABLED | IRQF_NOBALANCING,
> + "armpmu", NULL);
> if (err) {
> pr_warning("unable to request IRQ%d for ARM "
> "perf counters\n", pmu_irqs->irqs[i]);
> --
> 1.6.3.3
Hi Will,
Looks good to me.
Acked-by: Jamie Iles <jamie.iles at picochip.com>
Jamie
More information about the linux-arm-kernel
mailing list