Skip to content

genirq: Another round of tree wide cleanups

Thomas Gleixner lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest32 patches 21 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/32arm: iop13xx: Use sparse irqs for MSIarch/arm/Kconfig arch/arm/mach-iop13xx/include/mach/irqs.h arch/arm/mach-iop13xx/include/mach/time.h +5 more+19 -420 replies
2/32mips: Kill pointless destroy_irq()arch/mips/pci/msi-xlp.c arch/mips/pci/pci-xlr.c+2 -180 replies
3/32genirq: Provide generic hwirq allocation facilityinclude/linux/irq.h kernel/irq/Kconfig kernel/irq/irqdesc.c+71 -011 replies
4/32x86: Implement arch_setup/teardown_hwirq()arch/x86/Kconfig arch/x86/kernel/apic/io_apic.c+34 -00 replies
5/32x86: irq_remapping: Use irq_alloc/free_hwirq()drivers/iommu/irq_remapping.c+5 -71 reply
6/32x86: hpet: Use irq_alloc/free_hwirq()arch/x86/kernel/hpet.c+2 -30 replies
7/32x86: uv: Use irq_alloc/free_hwirq()arch/x86/platform/uv/uv_irq.c+4 -60 replies
8/32x86: htirq: Use irq_alloc/free_irq()drivers/pci/htirq.c+4 -92 replies
9/32x86: ioapic: Use irq_alloc/free_hwirq()arch/x86/kernel/apic/io_apic.c+10 -130 replies
10/32x86: Get rid of get_nr_irqs_gsi()arch/x86/include/asm/io_apic.h arch/x86/kernel/apic/io_apic.c drivers/xen/events/events_base.c+1 -230 replies
11/32iommu: dmar: Fix return value check of create_irq()drivers/iommu/dmar.c+1 -10 replies
12/32iommu: dmar: Provide arch specific irq allocationarch/ia64/include/asm/irq_remapping.h arch/x86/include/asm/irq_remapping.h drivers/iommu/dmar.c+8 -30 replies
13/32ia64: Remove unused check_irq_used()arch/ia64/include/asm/hw_irq.h arch/ia64/kernel/irq_ia64.c+0 -90 replies
14/32x86: Remove create/dstroy_irq()arch/x86/kernel/apic/io_apic.c include/linux/irq.h+1 -1090 replies
15/32tile: Implement irq_alloc/free_hwirq() for migrationarch/tile/include/asm/irq.h arch/tile/kernel/irq.c+15 -02 replies
16/32tile: usb: Use irq_alloc/free_hwirqdrivers/usb/host/ehci-tilegx.c drivers/usb/host/ohci-tilegx.c+8 -80 replies
17/32tile: net: Use irq_alloc/free_hwirqdrivers/net/ethernet/tile/tilegx.c+3 -30 replies
18/32tile: serial: Use irq_alloc/free_hwirqdrivers/tty/serial/tilegx.c+4 -40 replies
19/32tile: hvc: Use irq_alloc/free_hwirqdrivers/tty/hvc/hvc_tile.c+4 -40 replies
20/32tile: pci: Use irq_alloc/free_hwirq()arch/tile/kernel/pci_gx.c+8 -90 replies
21/32tile: Use SPARSE_IRQarch/tile/Kconfig arch/tile/include/asm/irq.h arch/tile/kernel/irq.c+9 -540 replies
22/32genirq: Make create/destroy_irq() ia64 privatearch/ia64/include/asm/irq.h include/linux/irq.h+3 -40 replies
23/32x86, irq: Remove pointless irq_reserve_irqs() callarch/x86/kernel/apic/io_apic.c+0 -30 replies
24/32sh: intc: Remove pointless irq_reserve_irqs() invocationdrivers/sh/intc/core.c+0 -61 reply
25/32s390: pci: Check return value of alloc_irq_desc() properarch/s390/pci/pci.c+3 -30 replies
26/32s390: Remove pointless arch_show_interrupts()arch/s390/kernel/irq.c+0 -50 replies
27/32s390: Avoid call to irq_reserve_irqs()arch/s390/kernel/irq.c+5 -10 replies
28/32genirq: Replace reserve_irqs in core codekernel/irq/chip.c kernel/irq/internals.h kernel/irq/irqdesc.c+15 -30 replies
29/32genirq: Remove irq_reserve_irq[s]include/linux/irq.h kernel/irq/irqdesc.c+0 -322 replies
30/32genirq: Replace dynamic_irq_init/cleanupinclude/linux/irq.h kernel/irq/Kconfig kernel/irq/irqdesc.c+15 -00 replies
31/32ia64: Use irq_init_descarch/ia64/Kconfig arch/ia64/kernel/iosapic.c arch/ia64/kernel/irq_ia64.c+5 -51 reply
32/32genirq: Remove dynamic_irq messinclude/linux/irq.h kernel/irq/irqdesc.c+7 -260 replies

Reviews trailers per patch

5 of 32 patches have a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchBjorn HelgaasTony LuckGrant LikelySimon HormanJoerg RoedelChris Metcalf
SeriesR-b
1/32
2/32
3/32A-b
4/32
5/32A-b
6/32
7/32
8/32A-b
9/32
10/32
11/32
12/32
13/32
14/32
15/32
16/32
17/32
18/32
19/32
20/32
21/32
22/32
23/32
24/32A-b
25/32
26/32
27/32
28/32
29/32A-b
30/32
31/32T-b
32/32

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 6 reviewers.

Read the v1 thread

Cover letter [patch 00/32] genirq: Another round of tree wide cleanups

This cleanup series addresses a few histerical leftovers:

1) irq_reserve_irq()

The remaining callsites are pointless except s390, but we have a better way to protect the lower interrupt space there.

It's gone for good and it will never come back. Use irq domains, if you want hot pluggable irq chips.

2) create/destroy_irq and their variants

Designed in different circles of hell we have an incompatible zoo of those.

Three different implementations with different semantics vs. the return values. Two use cases which are just reusing the global namespace. And they come along with four different flavours of dynamic irq allocation.

I created a core implementation for that and put it under GENERIC_IRQ_LEGACY_ALLOC_HWIRQ to make clear that this is not for new code. That implementation is used by x86 and tile. I gave up on converting ia64 over, so I moved the create/destroy_irq prototypes into ia64 headers and provided a wrapper for the shared dmar driver.

The core implementation is a very basic allocator and that's deliberately so. I don't want more users and every more complex than that wants to use irq domains.

3) dynamic_irq_init/cleanup

Another leftover from the past. By moving tile and iop13xx to sparse irq there is only ia64 left. I simplified the code and made this available only under a legacy config option to avoid that more people think they need this.

Full diffstat below.

Thanks,

tglx

---
 arch/arm/Kconfig                          |    1 
 arch/arm/mach-iop13xx/include/mach/irqs.h |    2 
 arch/arm/mach-iop13xx/include/mach/time.h |    3 
 arch/arm/mach-iop13xx/iq81340mc.c         |    1 
 arch/arm/mach-iop13xx/iq81340sc.c         |    1 
 arch/arm/mach-iop13xx/msi.c               |   51 ++---------
 arch/arm/mach-iop13xx/setup.c             |    1 
 arch/arm/mach-iop13xx/tpmi.c              |    1 
 arch/ia64/Kconfig                         |    1 
 arch/ia64/include/asm/hw_irq.h            |    1 
 arch/ia64/include/asm/irq.h               |    3 
 arch/ia64/include/asm/irq_remapping.h     |    2 
 arch/ia64/kernel/iosapic.c                |    2 
 arch/ia64/kernel/irq_ia64.c               |   15 ---
 arch/mips/pci/msi-xlp.c                   |   10 --
 arch/mips/pci/pci-xlr.c                   |   10 --
 arch/s390/kernel/irq.c                    |    5 -
 arch/s390/pci/pci.c                       |    6 -
 arch/tile/Kconfig                         |    2 
 arch/tile/include/asm/irq.h               |    6 -
 arch/tile/kernel/irq.c                    |   40 ---------
 arch/tile/kernel/pci_gx.c                 |   17 +--
 arch/x86/Kconfig                          |    1 
 arch/x86/include/asm/io_apic.h            |    2 
 arch/x86/include/asm/irq_remapping.h      |    3 
 arch/x86/kernel/apic/io_apic.c            |  130 +++++-------------------------
 arch/x86/kernel/hpet.c                    |    5 -
 arch/x86/platform/uv/uv_irq.c             |   10 --
 drivers/iommu/dmar.c                      |    8 -
 drivers/iommu/irq_remapping.c             |   12 +-
 drivers/net/ethernet/tile/tilegx.c        |    6 -
 drivers/pci/htirq.c                       |   13 ---
 drivers/sh/intc/core.c                    |    6 -
 drivers/tty/hvc/hvc_tile.c                |    8 -
 drivers/tty/serial/tilegx.c               |    8 -
 drivers/usb/host/ehci-tilegx.c            |    8 -
 drivers/usb/host/ohci-tilegx.c            |    8 -
 drivers/xen/events/events_base.c          |   17 ---
 include/linux/irq.h                       |   38 +++-----
 kernel/irq/Kconfig                        |    9 ++
 kernel/irq/chip.c                         |    5 -
 kernel/irq/internals.h                    |    6 +
 kernel/irq/irqdesc.c                      |   95 ++++++++++++++-------
 43 files changed, 216 insertions(+), 363 deletions(-)