Subject: Re: [PATCH] powerpc/cell: Only iterate over online nodes in cbe_init_pm_irq()

From: Dennis Schridde <[email-masked]>
Date: Fri, 17 May 2013 17:45:05 +0200

Hello!

Just wanted to remind you: The patchto fix cbe_init_pm_irq() that Michael and 
Grant sent me is still not included in Linux 3.8.12.

--Dennis

Am Dienstag, 23. April 2013, 22:14:51 schrieb Michael Ellerman:
> None of the cell platforms support CPU hotplug, so we should iterate
> only over online nodes when setting PMU interrupts.
> 
> This also fixes a warning during boot when NODES_SHIFT is large enough:
> 
> WARNING: at /scratch/michael/src/kmk/linus/kernel/irq/irqdomain.c:766
> ...
> NIP [c0000000000db278] .irq_linear_revmap+0x30/0x58
> LR [c0000000000dc2a0] .irq_create_mapping+0x38/0x1a8
> Call Trace:
> [c0000003fc9c3af0] [c0000000000dc2a0] .irq_create_mapping+0x38/0x1a8
> (unreliable) [c0000003fc9c3b80] [c000000000655c1c]
> .__machine_initcall_cell_cbe_init_pm_irq+0x84/0x158 [c0000003fc9c3c20]
> [c00000000000afb4] .do_one_initcall+0x5c/0x1e0
> [c0000003fc9c3cd0] [c000000000644580] .kernel_init_freeable+0x238/0x328
> [c0000003fc9c3db0] [c00000000000b784] .kernel_init+0x1c/0x120
> [c0000003fc9c3e30] [c000000000009fb8] .ret_from_kernel_thread+0x64/0xac
> 
> This is caused by us overflowing our linear revmap because we're
> requesting too many interrupts.
> 
> Reported-by: Dennis Schridde <[email-masked]>
> Signed-off-by: Michael Ellerman <[email-masked]>
> ---
>  arch/powerpc/platforms/cell/pmu.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/platforms/cell/pmu.c
> b/arch/powerpc/platforms/cell/pmu.c index 59c1a16..348a27b 100644
> --- a/arch/powerpc/platforms/cell/pmu.c
> +++ b/arch/powerpc/platforms/cell/pmu.c
> @@ -382,7 +382,7 @@ static int __init cbe_init_pm_irq(void)
>  	unsigned int irq;
>  	int rc, node;
> 
> -	for_each_node(node) {
> +	for_each_online_node(node) {
>  		irq = irq_create_mapping(NULL, IIC_IRQ_IOEX_PMI |
>  					       (node << IIC_IRQ_NODE_SHIFT));
>  		if (irq == NO_IRQ) {