Skip to content

Decouple IRQ issues (MSI, i386, x86_64, ia64)

Eric W. Biederman linux-acpi lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest25 patches 24 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/25irq: Convert the move_irq flag from a 32bit word to a single bitinclude/linux/irq.h kernel/irq/migration.c+6 -50 replies
2/25irq: Add moved_masked_irqinclude/linux/irq.h kernel/irq/migration.c+27 -70 replies
3/25x86_64 irq: Reenable migrating irqs to other cpus.arch/x86_64/kernel/io_apic.c+28 -30 replies
4/25msi: Simplify msi enable and disable.drivers/pci/msi.c+16 -1062 replies
5/25msi: Make the msi boolean tests return either 0 or 1.drivers/pci/msi.h+2 -21 reply
6/25msi: Implement helper functions read_msi_msg and write_msi_msg.drivers/pci/msi.c drivers/pci/msi.h include/linux/pci.h+104 -1062 replies
7/25msi: Refactor the msi_ops.drivers/pci/msi-altix.c drivers/pci/msi-apic.c drivers/pci/msi.c +2 more+116 -1151 reply
8/25msi: Simplify the msi irq limit policy.arch/i386/pci/irq.c arch/ia64/pci/pci.c drivers/pci/msi.c +1 more+8 -953 replies
9/25irq: Add a dynamic irq creation APIinclude/linux/irq.h kernel/irq/chip.c+64 -16 replies
10/25ia64 irq: Dynamic irq supportarch/ia64/kernel/irq_ia64.c+23 -00 replies
11/25i386 irq: Dynamic irq supportarch/i386/kernel/io_apic.c+48 -04 replies
12/25x86_64 irq: Dynamic irq supportarch/x86_64/kernel/io_apic.c+48 -00 replies
13/25msi: Make the msi code irq based and not vector based.drivers/pci/msi.c drivers/pci/msi.h+168 -2640 replies
14/25x86_64 irq: Move msi message composition into io_apic.carch/x86_64/kernel/io_apic.c include/asm-x86_64/msi.h include/asm-x86_64/msidef.h+122 -50 replies
15/25i386 irq: Move msi message composition into io_apic.carch/i386/kernel/io_apic.c include/asm-i386/msi.h include/asm-i386/msidef.h+119 -50 replies
16/25msi: Only build msi-apic.c on ia64drivers/pci/Makefile+2 -10 replies
17/25x86_64 irq: Remove the msi assumption that irq == vectorarch/x86_64/kernel/io_apic.c include/asm-x86_64/hw_irq.h include/asm-x86_64/io_apic.h +1 more+45 -1480 replies
18/25i386 irq: Remove the msi assumption that irq == vectorarch/i386/kernel/acpi/boot.c arch/i386/kernel/io_apic.c arch/i386/pci/irq.c +4 more+47 -1850 replies
19/25irq: Remove msi hacksinclude/linux/irq.h+0 -360 replies
20/25irq: Generalize the check for HARDIRQ_BITS.include/asm-x86_64/hardirq.h include/linux/hardirq.h+9 -10 replies
21/25x86_64 irq: Make the external irq handlers report their vector, not the irq number.arch/x86_64/kernel/i8259.c arch/x86_64/kernel/io_apic.c arch/x86_64/kernel/irq.c +1 more+32 -420 replies
22/25x86_64 irq: make vector_irq per cpu.arch/x86_64/kernel/i8259.c arch/x86_64/kernel/io_apic.c arch/x86_64/kernel/irq.c +2 more+145 -550 replies
23/25x86_64 irq: Kill gsi_irq_sharing.arch/i386/kernel/acpi/boot.c arch/x86_64/kernel/io_apic.c+1 -660 replies
24/25x86_64 irq: Kill irq compression.arch/x86_64/kernel/io_apic.c arch/x86_64/kernel/mpparse.c include/asm-x86_64/io_apic.h+1 -470 replies
25/25irq: Document what an IRQ is.Documentation/IRQ.txt+22 -00 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/25] Decouple IRQ issues (MSI, i386, x86_64, ia64)

The following patchset is against 2.6.17-rc6-mm2.
It was the only easy place I could get everyones work who has been touching relevant code.

The primary aim of this patch is to remove maintenances problems caused by the irq infrastructure. The two big issues I address are an artificially small cap on the number of irqs, and that MSI assumes vector == irq. My primary focus is on x86_64 but I have touched other architectures where necessary to keep them from breaking.

- To increase the number of irqs I modify the code to look at the (cpu, vector) pair instead of just looking at the vector.

With a large number of irqs available systems with a large irq count no longer need to compress their irq numbers to fit. Removing a lot of brittle special cases.

For acpi guys the result is that irq == gsi.

- Addressing the fact that MSI assumes irq == vector takes a few more patches. But suffice it to say when I am done none of the generic irq code even knows what a vector is.

In quick testing on a large Unisys x86_64 machine we stumbled over at least one driver that assumed that NR_IRQS could always fit into an 8 bit number. This driver is clearly buggy today. But this has become a class of bugs that it is now much easier to hit.

I've done my best but if this patchset wasn't perfect it won't surprise me. But I'm pretty certain I have succeeded in decoupling any fixes should be small and well contained.

Eric