Commit bb98f396 authored by Sebastian Ott's avatar Sebastian Ott Committed by Martin Schwidefsky

s390: use SPARSE_IRQ

Use dynamically allocated irq descriptors on s390 which allows
us to get rid of the s390 specific config option PCI_NR_MSI and
exploit more MSI interrupts. Also the size of the kernel image
is reduced by 131K (using performance_defconfig).
Signed-off-by: default avatarSebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 1b8b9c81
...@@ -163,6 +163,7 @@ config S390 ...@@ -163,6 +163,7 @@ config S390
select NO_BOOTMEM select NO_BOOTMEM
select OLD_SIGACTION select OLD_SIGACTION
select OLD_SIGSUSPEND3 select OLD_SIGSUSPEND3
select SPARSE_IRQ
select SYSCTL_EXCEPTION_TRACE select SYSCTL_EXCEPTION_TRACE
select TTY select TTY
select VIRT_CPU_ACCOUNTING select VIRT_CPU_ACCOUNTING
...@@ -605,16 +606,6 @@ config PCI_NR_FUNCTIONS ...@@ -605,16 +606,6 @@ config PCI_NR_FUNCTIONS
This allows you to specify the maximum number of PCI functions which This allows you to specify the maximum number of PCI functions which
this kernel will support. this kernel will support.
config PCI_NR_MSI
int "Maximum number of MSI interrupts (64-32768)"
range 64 32768
default "256"
help
This defines the number of virtual interrupts the kernel will
provide for MSI interrupts. If you configure your system to have
too few drivers will fail to allocate MSI interrupts for all
PCI devices.
source "drivers/pci/Kconfig" source "drivers/pci/Kconfig"
endif # PCI endif # PCI
......
...@@ -7,11 +7,8 @@ ...@@ -7,11 +7,8 @@
#define NR_IRQS_BASE 3 #define NR_IRQS_BASE 3
#ifdef CONFIG_PCI_NR_MSI #define NR_IRQS NR_IRQS_BASE
# define NR_IRQS (NR_IRQS_BASE + CONFIG_PCI_NR_MSI) #define NR_IRQS_LEGACY NR_IRQS_BASE
#else
# define NR_IRQS NR_IRQS_BASE
#endif
/* External interruption codes */ /* External interruption codes */
#define EXT_IRQ_INTERRUPT_KEY 0x0040 #define EXT_IRQ_INTERRUPT_KEY 0x0040
......
...@@ -127,9 +127,7 @@ int show_interrupts(struct seq_file *p, void *v) ...@@ -127,9 +127,7 @@ int show_interrupts(struct seq_file *p, void *v)
seq_printf(p, "CPU%d ", cpu); seq_printf(p, "CPU%d ", cpu);
seq_putc(p, '\n'); seq_putc(p, '\n');
} }
if (index < NR_IRQS) { if (index < NR_IRQS_BASE) {
if (index >= NR_IRQS_BASE)
goto out;
seq_printf(p, "%s: ", irqclass_main_desc[index].name); seq_printf(p, "%s: ", irqclass_main_desc[index].name);
irq = irqclass_main_desc[index].irq; irq = irqclass_main_desc[index].irq;
for_each_online_cpu(cpu) for_each_online_cpu(cpu)
...@@ -137,6 +135,9 @@ int show_interrupts(struct seq_file *p, void *v) ...@@ -137,6 +135,9 @@ int show_interrupts(struct seq_file *p, void *v)
seq_putc(p, '\n'); seq_putc(p, '\n');
goto out; goto out;
} }
if (index > NR_IRQS_BASE)
goto out;
for (index = 0; index < NR_ARCH_IRQS; index++) { for (index = 0; index < NR_ARCH_IRQS; index++) {
seq_printf(p, "%s: ", irqclass_sub_desc[index].name); seq_printf(p, "%s: ", irqclass_sub_desc[index].name);
irq = irqclass_sub_desc[index].irq; irq = irqclass_sub_desc[index].irq;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment