x86, irq: Only support sparseirq
PATCH 1/1 x86, irq: Only support sparseirq
Sparseirq is introduced from 2.6.28 and Thomas did huge cleanup around 2.6.38.
We could remove non sparseirq support now.
Suggested-by Thomas Gleixner <[email protected]>
Signed-off-by Yinghai Lu <[email protected]>
--- arch/x86/Kconfig | 1 + arch/x86/include/asm/irq_vectors.h | 12 ++---------- arch/x86/kernel/apic/io_apic.c | 23 ----------------------- 3 files changed, 3 insertions(+), 33 deletions(-)
arch/x86/Kconfig +1 -0
@@ -64,6 +64,7 @@ config X86 select HAVE_TEXT_POKE_SMP select HAVE_GENERIC_HARDIRQS select HAVE_SPARSE_IRQ + select SPARSE_IRQ select GENERIC_FIND_FIRST_BIT select GENERIC_IRQ_PROBE select GENERIC_PENDING_IRQ if SMP
arch/x86/include/asm/irq_vectors.h +2 -10
@@ -160,19 +160,11 @@ static inline int invalid_vm86_irq(int i#define IO_APIC_VECTOR_LIMIT ( 32 * MAX_IO_APICS )#ifdef CONFIG_X86_IO_APIC -# ifdef CONFIG_SPARSE_IRQ -# define CPU_VECTOR_LIMIT (64 * NR_CPUS) -# define NR_IRQS \ +# define CPU_VECTOR_LIMIT (64 * NR_CPUS) +# define NR_IRQS \ (CPU_VECTOR_LIMIT > IO_APIC_VECTOR_LIMIT ? \ (NR_VECTORS + CPU_VECTOR_LIMIT) : \ (NR_VECTORS + IO_APIC_VECTOR_LIMIT)) -# else -# define CPU_VECTOR_LIMIT (32 * NR_CPUS) -# define NR_IRQS \ - (CPU_VECTOR_LIMIT < IO_APIC_VECTOR_LIMIT ? \ - (NR_VECTORS + CPU_VECTOR_LIMIT) : \ - (NR_VECTORS + IO_APIC_VECTOR_LIMIT)) -# endif #else /* !CONFIG_X86_IO_APIC: */ # define NR_IRQS NR_IRQS_LEGACY#endif
arch/x86/kernel/apic/io_apic.c +0 -23
@@ -186,11 +186,7 @@ static struct irq_pin_list *alloc_irq_pi/* irq_cfg is indexed by the sum of all RTEs in all I/O APICs. */ -#ifdef CONFIG_SPARSE_IRQ static struct irq_cfg irq_cfgx[NR_IRQS_LEGACY ]; -#else -static struct irq_cfg irq_cfgx[NR_IRQS ]; -#endif int __init arch_early_irq_init (void ) {
@@ -234,7 +230,6 @@ int __init arch_early_irq_init(void)return 0 ; } -#ifdef CONFIG_SPARSE_IRQ static struct irq_cfg *irq_cfg (unsigned int irq) {return irq_get_chip_data (irq);
@@ -269,22 +264,6 @@ static void free_irq_cfg(unsigned int atkfree (cfg); } -#else - -struct irq_cfg *irq_cfg (unsigned int irq) -{ -return irq < nr_irqs ? irq_cfgx + irq :NULL ; -} - -static struct irq_cfg *alloc_irq_cfg (unsigned int irq,int node) -{ -return irq_cfgx + irq; -} - -static inline void free_irq_cfg (unsigned int at,struct irq_cfg *cfg) { } - -#endif -static struct irq_cfg *alloc_irq_and_cfg_at (unsigned int at,int node) {int res =irq_alloc_desc_at (at, node);
@@ -3636,7 +3615,6 @@ int get_nr_irqs_gsi(void)return nr_irqs_gsi; } -#ifdef CONFIG_SPARSE_IRQ int __init arch_probe_nr_irqs (void ) {int nr;
@@ -3656,7 +3634,6 @@ int __init arch_probe_nr_irqs(void)return NR_IRQS_LEGACY ; } -#endif int io_apic_set_pci_routing (struct device *dev,int irq,struct io_apic_irq_attr *irq_attr)