diff options
Diffstat (limited to 'arch/x86/kernel/io_apic.c')
-rw-r--r-- | arch/x86/kernel/io_apic.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c index 0a7f6d6b1206..f61d945620b3 100644 --- a/arch/x86/kernel/io_apic.c +++ b/arch/x86/kernel/io_apic.c | |||
@@ -3846,14 +3846,24 @@ int __init io_apic_get_redir_entries (int ioapic) | |||
3846 | 3846 | ||
3847 | void __init probe_nr_irqs_gsi(void) | 3847 | void __init probe_nr_irqs_gsi(void) |
3848 | { | 3848 | { |
3849 | int idx; | ||
3850 | int nr = 0; | 3849 | int nr = 0; |
3851 | 3850 | ||
3852 | for (idx = 0; idx < nr_ioapics; idx++) | 3851 | nr = acpi_probe_gsi(); |
3853 | nr += io_apic_get_redir_entries(idx) + 1; | 3852 | if (nr > nr_irqs_gsi) { |
3854 | |||
3855 | if (nr > nr_irqs_gsi) | ||
3856 | nr_irqs_gsi = nr; | 3853 | nr_irqs_gsi = nr; |
3854 | } else { | ||
3855 | /* for acpi=off or acpi is not compiled in */ | ||
3856 | int idx; | ||
3857 | |||
3858 | nr = 0; | ||
3859 | for (idx = 0; idx < nr_ioapics; idx++) | ||
3860 | nr += io_apic_get_redir_entries(idx) + 1; | ||
3861 | |||
3862 | if (nr > nr_irqs_gsi) | ||
3863 | nr_irqs_gsi = nr; | ||
3864 | } | ||
3865 | |||
3866 | printk(KERN_DEBUG "nr_irqs_gsi: %d\n", nr_irqs_gsi); | ||
3857 | } | 3867 | } |
3858 | 3868 | ||
3859 | #ifdef CONFIG_SPARSE_IRQ | 3869 | #ifdef CONFIG_SPARSE_IRQ |