|
@@ -3876,6 +3876,28 @@ void __init probe_nr_irqs_gsi(void)
|
|
|
printk(KERN_DEBUG "nr_irqs_gsi: %d\n", nr_irqs_gsi);
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_SPARSE_IRQ
|
|
|
+int __init arch_probe_nr_irqs(void)
|
|
|
+{
|
|
|
+ int nr;
|
|
|
+
|
|
|
+ if (nr_irqs > (NR_VECTORS * nr_cpu_ids))
|
|
|
+ nr_irqs = NR_VECTORS * nr_cpu_ids;
|
|
|
+
|
|
|
+ nr = nr_irqs_gsi + 8 * nr_cpu_ids;
|
|
|
+#if defined(CONFIG_PCI_MSI) || defined(CONFIG_HT_IRQ)
|
|
|
+ /*
|
|
|
+ * for MSI and HT dyn irq
|
|
|
+ */
|
|
|
+ nr += nr_irqs_gsi * 16;
|
|
|
+#endif
|
|
|
+ if (nr < nr_irqs)
|
|
|
+ nr_irqs = nr;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
static int __io_apic_set_pci_routing(struct device *dev, int irq,
|
|
|
struct io_apic_irq_attr *irq_attr)
|
|
|
{
|