summaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2008-11-21 11:16:48 -0800
committerIngo Molnar <mingo@elte.hu>2008-11-23 11:59:52 +0100
commita1967d64414dab500e86cbbddf8eae6ad2047903 (patch)
tree301031e3ff5c9adbda6373a5ea2b4aae5e7400ea /arch/x86
parent57550b27ff5a13b00370fbfa34f2471c3456a41d (diff)
downloadlinux-a1967d64414dab500e86cbbddf8eae6ad2047903.tar.gz
linux-a1967d64414dab500e86cbbddf8eae6ad2047903.tar.bz2
linux-a1967d64414dab500e86cbbddf8eae6ad2047903.zip
x86: revert irq number limitation
Impact: fix MSIx not enough irq numbers available regression The manual revert of the sparse_irq patches missed to bring the number of possible irqs back to the .27 status. This resulted in a regression when two multichannel network cards were placed in a system with only one IO_APIC - causing the networking driver to not have the right IRQ and the device not coming up. Remove the dynamic allocation logic leftovers and simply return NR_IRQS in probe_nr_irqs() for now. Fixes: http://lkml.org/lkml/2008/11/19/354 Reported-by: Jesper Dangaard Brouer <hawk@diku.dk> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Jesper Dangaard Brouer <hawk@diku.dk> Acked-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/kernel/io_apic.c22
1 files changed, 1 insertions, 21 deletions
diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c
index c9513e1ff28d..1fec0f9b1508 100644
--- a/arch/x86/kernel/io_apic.c
+++ b/arch/x86/kernel/io_apic.c
@@ -3608,27 +3608,7 @@ int __init io_apic_get_redir_entries (int ioapic)
int __init probe_nr_irqs(void)
{
- int idx;
- int nr = 0;
-#ifndef CONFIG_XEN
- int nr_min = 32;
-#else
- int nr_min = NR_IRQS;
-#endif
-
- for (idx = 0; idx < nr_ioapics; idx++)
- nr += io_apic_get_redir_entries(idx) + 1;
-
- /* double it for hotplug and msi and nmi */
- nr <<= 1;
-
- /* something wrong ? */
- if (nr < nr_min)
- nr = nr_min;
- if (WARN_ON(nr > NR_IRQS))
- nr = NR_IRQS;
-
- return nr;
+ return NR_IRQS;
}
/* --------------------------------------------------------------------------