Loading arch/x86/include/asm/irq_vectors.h +2 −5 Original line number Diff line number Diff line Loading @@ -115,14 +115,11 @@ # endif #else /* defined as a macro so nr_irqs = max_nr_irqs(nr_cpu_ids) can be used */ # define max_nr_irqs(nr_cpus) \ ((8 * nr_cpus) > (32 * MAX_IO_APICS) ? \ # define NR_IRQS \ ((8 * NR_CPUS) > (32 * MAX_IO_APICS) ? \ (NR_VECTORS + (8 * NR_CPUS)) : \ (NR_VECTORS + (32 * MAX_IO_APICS))) \ # define NR_IRQS max_nr_irqs(NR_CPUS) #endif #elif defined(CONFIG_X86_VOYAGER) Loading arch/x86/kernel/io_apic.c +16 −0 Original line number Diff line number Diff line Loading @@ -3850,6 +3850,22 @@ void __init probe_nr_irqs_gsi(void) nr_irqs_gsi = nr; } #ifdef CONFIG_SPARSE_IRQ int __init arch_probe_nr_irqs(void) { int nr; nr = ((8 * nr_cpu_ids) > (32 * nr_ioapics) ? (NR_VECTORS + (8 * nr_cpu_ids)) : (NR_VECTORS + (32 * nr_ioapics))); if (nr < nr_irqs && nr > nr_irqs_gsi) nr_irqs = nr; return 0; } #endif /* -------------------------------------------------------------------------- ACPI-based IOAPIC Configuration -------------------------------------------------------------------------- */ Loading include/linux/interrupt.h +1 −0 Original line number Diff line number Diff line Loading @@ -467,6 +467,7 @@ int show_interrupts(struct seq_file *p, void *v); struct irq_desc; extern int early_irq_init(void); extern int arch_probe_nr_irqs(void); extern int arch_early_irq_init(void); extern int arch_init_chip_data(struct irq_desc *desc, int cpu); Loading kernel/irq/handle.c +2 −7 Original line number Diff line number Diff line Loading @@ -59,10 +59,6 @@ EXPORT_SYMBOL_GPL(nr_irqs); #ifdef CONFIG_SPARSE_IRQ #ifndef max_nr_irqs #define max_nr_irqs(nr_cpus) NR_IRQS #endif static struct irq_desc irq_desc_init = { .irq = -1, .status = IRQ_DISABLED, Loading Loading @@ -138,8 +134,7 @@ int __init early_irq_init(void) int i; /* initialize nr_irqs based on nr_cpu_ids */ nr_irqs = max_nr_irqs(nr_cpu_ids); arch_probe_nr_irqs(); printk(KERN_INFO "NR_IRQS:%d nr_irqs:%d\n", NR_IRQS, nr_irqs); desc = irq_desc_legacy; Loading kernel/softirq.c +5 −0 Original line number Diff line number Diff line Loading @@ -795,6 +795,11 @@ int __init __weak early_irq_init(void) return 0; } int __init __weak arch_probe_nr_irqs(void) { return 0; } int __init __weak arch_early_irq_init(void) { return 0; Loading Loading
arch/x86/include/asm/irq_vectors.h +2 −5 Original line number Diff line number Diff line Loading @@ -115,14 +115,11 @@ # endif #else /* defined as a macro so nr_irqs = max_nr_irqs(nr_cpu_ids) can be used */ # define max_nr_irqs(nr_cpus) \ ((8 * nr_cpus) > (32 * MAX_IO_APICS) ? \ # define NR_IRQS \ ((8 * NR_CPUS) > (32 * MAX_IO_APICS) ? \ (NR_VECTORS + (8 * NR_CPUS)) : \ (NR_VECTORS + (32 * MAX_IO_APICS))) \ # define NR_IRQS max_nr_irqs(NR_CPUS) #endif #elif defined(CONFIG_X86_VOYAGER) Loading
arch/x86/kernel/io_apic.c +16 −0 Original line number Diff line number Diff line Loading @@ -3850,6 +3850,22 @@ void __init probe_nr_irqs_gsi(void) nr_irqs_gsi = nr; } #ifdef CONFIG_SPARSE_IRQ int __init arch_probe_nr_irqs(void) { int nr; nr = ((8 * nr_cpu_ids) > (32 * nr_ioapics) ? (NR_VECTORS + (8 * nr_cpu_ids)) : (NR_VECTORS + (32 * nr_ioapics))); if (nr < nr_irqs && nr > nr_irqs_gsi) nr_irqs = nr; return 0; } #endif /* -------------------------------------------------------------------------- ACPI-based IOAPIC Configuration -------------------------------------------------------------------------- */ Loading
include/linux/interrupt.h +1 −0 Original line number Diff line number Diff line Loading @@ -467,6 +467,7 @@ int show_interrupts(struct seq_file *p, void *v); struct irq_desc; extern int early_irq_init(void); extern int arch_probe_nr_irqs(void); extern int arch_early_irq_init(void); extern int arch_init_chip_data(struct irq_desc *desc, int cpu); Loading
kernel/irq/handle.c +2 −7 Original line number Diff line number Diff line Loading @@ -59,10 +59,6 @@ EXPORT_SYMBOL_GPL(nr_irqs); #ifdef CONFIG_SPARSE_IRQ #ifndef max_nr_irqs #define max_nr_irqs(nr_cpus) NR_IRQS #endif static struct irq_desc irq_desc_init = { .irq = -1, .status = IRQ_DISABLED, Loading Loading @@ -138,8 +134,7 @@ int __init early_irq_init(void) int i; /* initialize nr_irqs based on nr_cpu_ids */ nr_irqs = max_nr_irqs(nr_cpu_ids); arch_probe_nr_irqs(); printk(KERN_INFO "NR_IRQS:%d nr_irqs:%d\n", NR_IRQS, nr_irqs); desc = irq_desc_legacy; Loading
kernel/softirq.c +5 −0 Original line number Diff line number Diff line Loading @@ -795,6 +795,11 @@ int __init __weak early_irq_init(void) return 0; } int __init __weak arch_probe_nr_irqs(void) { return 0; } int __init __weak arch_early_irq_init(void) { return 0; Loading