default IRQ affinity change in v2.6.27 (breaking several SMP PPC based systems)

Kumar Gala galak at kernel.crashing.org
Sat Oct 25 03:36:42 EST 2008


On Oct 24, 2008, at 11:09 AM, Chris Snook wrote:

> Kumar Gala wrote:
>> On Oct 24, 2008, at 10:17 AM, Chris Snook wrote:
>>> Kumar Gala wrote:
>>>> It appears the default IRQ affinity changes from being just cpu 0  
>>>> to all cpu's.  This breaks several PPC SMP systems in which only  
>>>> a single processor is allowed to be selected as the destination  
>>>> of the IRQ.
>>>> What is the right answer in fixing this?  Should we:
>>>>   cpumask_t irq_default_affinity = 1;
>>>> instead of
>>>>   cpumask_t irq_default_affinity = CPU_MASK_ALL?
>>>
>>> On those systems, perhaps, but not universally.  There's plenty of  
>>> hardware where the physical topology of the machine is abstracted  
>>> away from the OS, and you need to leave the mask wide open and let  
>>> the APIC figure out where to map the IRQs.  Ideally, we should  
>>> probably make this decision based on the APIC, but if there's no  
>>> PPC hardware that uses this technique, then it would suffice to  
>>> make this arch-specific.
>> What did those systems do before this patch?  Its one thing to  
>> expose a mask in the ability to change the default mask in /proc/ 
>> irq/default_smp_affinity.  Its another (and a regression in my  
>> opinion) to change the mask value itself.
>
> Before the patch they took an extremely long time to boot if they  
> had storage attached to each node of a multi-chassis system,  
> performed poorly unless special irqbalance hackery or manual  
> assignment was used, and imposed artificial restrictions on the  
> granularity of hardware partitioning to ensure that CPU 0 would  
> always be a CPU that could service all interrupts necessary to boot  
> the OS.
>
>> As for making it ARCH specific, that doesn't really help since not  
>> all PPC hw has the limitation I spoke of.  Not even all MPIC (in  
>> our cases) have the limitation.
>
> What did those systems do before this patch? :)
>
> Making it arch-specific is an extremely simple way to solve your  
> problem without making trouble for the people who wanted this patch  
> in the first place.  If PPC needs further refinement to handle  
> particular *PICs, you can implement that without touching any arch- 
> generic code.


So why not just have x86 startup code set irq_default_affinity =  
CPU_MASK_ALL than?

- k



More information about the Linuxppc-dev mailing list