-
- Downloads
sparse irq_desc[] array: core kernel and x86 changes
Impact: new feature Problem on distro kernels: irq_desc[NR_IRQS] takes megabytes of RAM with NR_CPUS set to large values. The goal is to be able to scale up to much larger NR_IRQS value without impacting the (important) common case. To solve this, we generalize irq_desc[NR_IRQS] to an (optional) array of irq_desc pointers. When CONFIG_SPARSE_IRQ=y is used, we use kzalloc_node to get irq_desc, this also makes the IRQ descriptors NUMA-local (to the site that calls request_irq()). This gets rid of the irq_cfg[] static array on x86 as well: irq_cfg now uses desc->chip_data for x86 to store irq_cfg. Signed-off-by:Yinghai Lu <yinghai@kernel.org> Signed-off-by:
Ingo Molnar <mingo@elte.hu>
Showing
- arch/x86/Kconfig 10 additions, 0 deletionsarch/x86/Kconfig
- arch/x86/include/asm/irq_vectors.h 9 additions, 0 deletionsarch/x86/include/asm/irq_vectors.h
- arch/x86/kernel/io_apic.c 190 additions, 111 deletionsarch/x86/kernel/io_apic.c
- arch/x86/kernel/irq.c 3 additions, 0 deletionsarch/x86/kernel/irq.c
- arch/x86/kernel/irq_32.c 2 additions, 0 deletionsarch/x86/kernel/irq_32.c
- arch/x86/kernel/irq_64.c 2 additions, 0 deletionsarch/x86/kernel/irq_64.c
- arch/x86/kernel/irqinit_32.c 0 additions, 1 deletionarch/x86/kernel/irqinit_32.c
- arch/x86/kernel/irqinit_64.c 0 additions, 1 deletionarch/x86/kernel/irqinit_64.c
- drivers/char/random.c 5 additions, 17 deletionsdrivers/char/random.c
- drivers/pci/intr_remapping.c 74 additions, 2 deletionsdrivers/pci/intr_remapping.c
- drivers/xen/events.c 8 additions, 4 deletionsdrivers/xen/events.c
- fs/proc/stat.c 11 additions, 6 deletionsfs/proc/stat.c
- include/linux/interrupt.h 2 additions, 0 deletionsinclude/linux/interrupt.h
- include/linux/irq.h 53 additions, 1 deletioninclude/linux/irq.h
- include/linux/irqnr.h 3 additions, 11 deletionsinclude/linux/irqnr.h
- include/linux/kernel_stat.h 13 additions, 1 deletioninclude/linux/kernel_stat.h
- include/linux/random.h 51 additions, 0 deletionsinclude/linux/random.h
- init/main.c 11 additions, 0 deletionsinit/main.c
- kernel/irq/autoprobe.c 15 additions, 0 deletionskernel/irq/autoprobe.c
- kernel/irq/chip.c 2 additions, 1 deletionkernel/irq/chip.c
Loading
Please register or sign in to comment