Patch: Fix regression. Make hot unlplug of CPU0 work again.

Milton Miller miltonm at bga.com
Sat Oct 6 03:16:01 EST 2007


On Fri, Oct 05, 2007 at 05:05:21PM, Tony Breeds wrote:
>> On Fri, Oct 05, 2007 at 01:52:41PM +1000, Tony Breeds wrote:
>> Early in the 2.6.23 cycle we broke the ability to offline cpu0
>> (7ccb4a662462616f6be5053e26b79580e02f1529).  This patch fixes that by
>> ensuring that the (xics)  default irq server, will not be 0 when taking
>> cpu0 offline.
>> 
>> Also catches a use of irq, when virq should be used (I think that the
>> last one).
> 
> Hmm testing, this on a JS21 shows that it doesn't work.  I guess I'll go
> back to the drawing board.


Reviewing the first patch, xics_set_affinity no longer looks at the
cpu_mask arg, instead get_irq_server reads it from the irq descriptor.

Signed-off-by: Milton Miller <miltonm at bga.com>
--- 
On top of tonys patch (13926)

I don't have a system to test hotplug, so this is only compile tested.

A more complete fix might be to pass the cpu_mask struct to get_irq_server,
but kernel/irq/manage.c currently sets the descriptor first.

Index: kernel/arch/powerpc/platforms/pseries/xics.c
===================================================================
--- kernel.orig/arch/powerpc/platforms/pseries/xics.c	2007-10-05 11:37:01.000000000 -0500
+++ kernel/arch/powerpc/platforms/pseries/xics.c	2007-10-05 11:37:16.000000000 -0500
@@ -890,8 +890,8 @@ void xics_migrate_irqs_away(void)
 		       virq, cpu);
 
 		/* Reset affinity to all cpus */
-		desc->chip->set_affinity(virq, CPU_MASK_ALL);
 		irq_desc[virq].affinity = CPU_MASK_ALL;
+		desc->chip->set_affinity(virq, CPU_MASK_ALL);
 unlock:
 		spin_unlock_irqrestore(&desc->lock, flags);
 	}



More information about the Linuxppc-dev mailing list