On 10/10/2010 02:32 AM, Thomas Gleixner wrote: > On Sat, 9 Oct 2010, Yinghai Lu wrote: >> On 10/08/2010 11:34 PM, Thomas Gleixner wrote: >>> On Fri, 8 Oct 2010, Yinghai Lu wrote: >>>> + /* only handle fall out from setup_IO_APIC_irqs() */ >>> >>> What's the fallout ? And why are we coming here in the first place >>> when the irq is < 16 ? >> >> setup_IO_APIC_irqs only handle apic_id == 0 or apic_id > 0 but irq < 16 via acpi override. >> >> it seems IBM's system have apic_id == 1, and sci irq is using 30. >> >> so at that time add that setup_IO_APIC_irq_extra() to workaround it. >> but it seems we set that two time when irq < 16. >> >>> >>>> + if (!((apic_id > 0) && (irq > 16))) >>>> + return; > > I added this into the queue, but simplified it to > > if (apic_id == 0 || irq < NR_IRQS_LEGACY) > > Folded in the other fix and pushed out an updated tree. > ok. please check another small fix. diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c index b3805f3..2fb9df4 100644 --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c @@ -130,10 +130,11 @@ static struct irq_desc *alloc_desc(int irq, int node) desc = kzalloc_node(sizeof(*desc), gfp, node); if (!desc) return NULL; + /* allocate based on nr_cpu_ids */ desc->kstat_irqs = kzalloc_node(nr_cpu_ids * sizeof(*desc->kstat_irqs), gfp, node); - if (!desc) + if (!desc->kstat_irqs) goto err_desc; if (alloc_masks(desc, gfp, node)) @@ -226,6 +227,7 @@ struct irq_desc irq_desc[NR_IRQS] __cacheline_aligned_in_smp = { static unsigned int kstat_irqs_all[NR_IRQS][NR_CPUS]; int __init early_irq_init(void) { + int node = first_online_node; struct irq_desc *desc; int count; int i; @@ -241,8 +243,8 @@ int __init early_irq_init(void) desc[i].irq_data.irq = i; desc[i].irq_data.chip = &no_irq_chip; desc[i].kstat_irqs = kstat_irqs_all[i]; - alloc_masks(desc + i, GFP_KERNEL, first_online_node); - desc_smp_init(desc + i, first_online_node); + alloc_masks(desc + i, GFP_KERNEL, node); + desc_smp_init(desc + i, node); lockdep_set_class(&desc[i].lock, &irq_desc_lock_class); } return arch_early_irq_init(); -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html