|
@@ -155,18 +155,22 @@ static inline int invalid_vm86_irq(int irq)
|
|
* static arrays.
|
|
* static arrays.
|
|
*/
|
|
*/
|
|
|
|
|
|
-#define NR_IRQS_LEGACY 16
|
|
|
|
|
|
+#define NR_IRQS_LEGACY 16
|
|
|
|
|
|
-#define IO_APIC_VECTOR_LIMIT ( 32 * MAX_IO_APICS )
|
|
|
|
|
|
+#define CPU_VECTOR_LIMIT (64 * NR_CPUS)
|
|
|
|
+#define IO_APIC_VECTOR_LIMIT (32 * MAX_IO_APICS)
|
|
|
|
|
|
-#ifdef CONFIG_X86_IO_APIC
|
|
|
|
-# define CPU_VECTOR_LIMIT (64 * NR_CPUS)
|
|
|
|
-# define NR_IRQS \
|
|
|
|
|
|
+#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_PCI_MSI)
|
|
|
|
+#define NR_IRQS \
|
|
(CPU_VECTOR_LIMIT > IO_APIC_VECTOR_LIMIT ? \
|
|
(CPU_VECTOR_LIMIT > IO_APIC_VECTOR_LIMIT ? \
|
|
(NR_VECTORS + CPU_VECTOR_LIMIT) : \
|
|
(NR_VECTORS + CPU_VECTOR_LIMIT) : \
|
|
(NR_VECTORS + IO_APIC_VECTOR_LIMIT))
|
|
(NR_VECTORS + IO_APIC_VECTOR_LIMIT))
|
|
-#else /* !CONFIG_X86_IO_APIC: */
|
|
|
|
-# define NR_IRQS NR_IRQS_LEGACY
|
|
|
|
|
|
+#elif defined(CONFIG_X86_IO_APIC)
|
|
|
|
+#define NR_IRQS (NR_VECTORS + IO_APIC_VECTOR_LIMIT)
|
|
|
|
+#elif defined(CONFIG_PCI_MSI)
|
|
|
|
+#define NR_IRQS (NR_VECTORS + CPU_VECTOR_LIMIT)
|
|
|
|
+#else
|
|
|
|
+#define NR_IRQS NR_IRQS_LEGACY
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#endif /* _ASM_X86_IRQ_VECTORS_H */
|
|
#endif /* _ASM_X86_IRQ_VECTORS_H */
|