Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+1 −10
Original line number Diff line number Diff line
@@ -163,6 +163,7 @@ config S390
	select NO_BOOTMEM
	select OLD_SIGACTION
	select OLD_SIGSUSPEND3
	select SPARSE_IRQ
	select SYSCTL_EXCEPTION_TRACE
	select TTY
	select VIRT_CPU_ACCOUNTING
@@ -605,16 +606,6 @@ config PCI_NR_FUNCTIONS
	  This allows you to specify the maximum number of PCI functions which
	  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"

endif	# PCI
+2 −5
Original line number Diff line number Diff line
@@ -7,11 +7,8 @@

#define NR_IRQS_BASE	3

#ifdef CONFIG_PCI_NR_MSI
# define NR_IRQS	(NR_IRQS_BASE + CONFIG_PCI_NR_MSI)
#else
#define NR_IRQS	NR_IRQS_BASE
#endif
#define NR_IRQS_LEGACY NR_IRQS_BASE

/* External interruption codes */
#define EXT_IRQ_INTERRUPT_KEY	0x0040
+4 −3
Original line number Diff line number Diff line
@@ -127,9 +127,7 @@ int show_interrupts(struct seq_file *p, void *v)
			seq_printf(p, "CPU%d       ", cpu);
		seq_putc(p, '\n');
	}
	if (index < NR_IRQS) {
		if (index >= NR_IRQS_BASE)
			goto out;
	if (index < NR_IRQS_BASE) {
		seq_printf(p, "%s: ", irqclass_main_desc[index].name);
		irq = irqclass_main_desc[index].irq;
		for_each_online_cpu(cpu)
@@ -137,6 +135,9 @@ int show_interrupts(struct seq_file *p, void *v)
		seq_putc(p, '\n');
		goto out;
	}
	if (index > NR_IRQS_BASE)
		goto out;

	for (index = 0; index < NR_ARCH_IRQS; index++) {
		seq_printf(p, "%s: ", irqclass_sub_desc[index].name);
		irq = irqclass_sub_desc[index].irq;