* cpu_pm breaks 3.2 boot on platforms with cascading GICs
@ 2011-11-24 16:13 Will Deacon
2011-11-24 16:38 ` Marc Zyngier
0 siblings, 1 reply; 3+ messages in thread
From: Will Deacon @ 2011-11-24 16:13 UTC (permalink / raw)
To: linux-arm-kernel
Hi Colin,
Commit 254056f3 ("ARM: gic: Use cpu pm notifiers to save gic state") adds
cpu_pm notifier support to the GIC. The problem is that you register a notifier
for each GIC registered via gic_init, so on a platform with cascading GICs the
notifier is registered multiple times.
The fun part about this is that the way the notifier chain is constructed
you end up with the GIC notifier pointing to itself as the next node, so you
get a cycle in the chain. The next poor subsystem that tries to register a
notifier (in my case, VFP) gets stuck in notifier_chain_register because the
loop:
while ((*nl) != NULL) {
if (n->priority > (*nl)->priority)
break;
nl = &((*nl)->next);
}
will never exit!
I'm not sure how you want to handle this. Clearly you should only register one
notifier for the GIC, but it does need to handle the cascading situation
properly.
This affects current mainline, so we need a solution for 3.2.
Will
^ permalink raw reply [flat|nested] 3+ messages in thread
* cpu_pm breaks 3.2 boot on platforms with cascading GICs
2011-11-24 16:13 cpu_pm breaks 3.2 boot on platforms with cascading GICs Will Deacon
@ 2011-11-24 16:38 ` Marc Zyngier
2011-11-24 16:53 ` Will Deacon
0 siblings, 1 reply; 3+ messages in thread
From: Marc Zyngier @ 2011-11-24 16:38 UTC (permalink / raw)
To: linux-arm-kernel
On 24/11/11 16:13, Will Deacon wrote:
>
> I'm not sure how you want to handle this. Clearly you should only register one
> notifier for the GIC, but it does need to handle the cascading situation
> properly.
>
> This affects current mainline, so we need a solution for 3.2.
I quickly hacked the attached patch, which allows me to boot on PB11MP.
M.
--
Jazz is not dead. It just smells funny...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ARM-cpu_pm-register-GIC-PM-notifier-only-once.patch
Type: text/x-patch
Size: 1241 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20111124/caea2993/attachment-0001.bin>
^ permalink raw reply [flat|nested] 3+ messages in thread
* cpu_pm breaks 3.2 boot on platforms with cascading GICs
2011-11-24 16:38 ` Marc Zyngier
@ 2011-11-24 16:53 ` Will Deacon
0 siblings, 0 replies; 3+ messages in thread
From: Will Deacon @ 2011-11-24 16:53 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Nov 24, 2011 at 04:38:43PM +0000, Marc Zyngier wrote:
> On 24/11/11 16:13, Will Deacon wrote:
> >
> > I'm not sure how you want to handle this. Clearly you should only register one
> > notifier for the GIC, but it does need to handle the cascading situation
> > properly.
> >
> > This affects current mainline, so we need a solution for 3.2.
>
> I quickly hacked the attached patch, which allows me to boot on PB11MP.
Great, this fixes my boot problem, thanks! I can't confirm the cpu_pm stuff
works correctly, but it looks like the notifier walks all of the GICs
anyway.
Tested-by: Will Deacon <will.deacon@arm.com>
Will
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-11-24 16:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-24 16:13 cpu_pm breaks 3.2 boot on platforms with cascading GICs Will Deacon
2011-11-24 16:38 ` Marc Zyngier
2011-11-24 16:53 ` Will Deacon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox