[PATCH] irqchip: gic: Allow setting affinity to offline CPUs
Tomasz Figa
t.figa at samsung.com
Tue Aug 20 12:57:17 EDT 2013
On Tuesday 20 of August 2013 09:48:25 Stephen Boyd wrote:
> On 08/20/13 09:41, Tomasz Figa wrote:
> > On Tuesday 20 of August 2013 09:33:31 Stephen Boyd wrote:
> >> On 08/20/13 09:11, Tomasz Figa wrote:
> >>> Sometimes it is necessary to fix interrupt affinity to an offline
> >>> CPU,
> >>> for example in initialization of local timers. This patch modifies
> >>> .set_affinity() operation of irq-gic driver to fall back to any
> >>> possible
> >>> CPU if no online CPU can be found in requested CPU mask.
> >>>
> >>> This fixes broken Exynos4210 support since commit
> >>>
> >>> ee98d27df6 ARM: EXYNOS4: Divorce mct from local timer API
> >>>
> >>> caused by timer initialization code unable to set affinity for local
> >>> timer interrupts.
> >>
> >> Care to elaborate further? I don't see how the interrupt affinity is
> >> set
> >> for a CPU that isn't online because the mct code runs on the CPU that
> >> the affinity is being set to.
> >
> > Well, please look at secondary_start_kernel() in arch/arm/kernel/smp.c
> > [1]. You can see that notify_cpu_starting() (line 348) that fires the
> > notifier registered in MCT driver is called before set_cpu_online()
> > (line 359) that marks the CPU as online. Also notice that, originally,
> > local timer initialization was happening after set_cpu_online() - see
> > line 365.
> Great, thank you. Please put this information in the commit text next
> time.
Right, I could have added a sentence or two about this.
> I wonder if we shouldn't make the cpumask_any_and() work on the present
> mask instead? If we ever support physical hotplug on ARM I think we
> wouldn't want to allow interrupts to go to CPUs that aren't even present
> (but still possible).
Yes, cpu_present_mask might be better indeed.
Best regards,
Tomasz
More information about the linux-arm-kernel
mailing list