genirq: Another round of tree wide cleanups
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest32 patches 21 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/32 | arm: iop13xx: Use sparse irqs for MSIarch/ arch/ arch/ +5 more | +19 | 0 replies | |
| 2/32 | mips: Kill pointless destroy_irq()arch/ arch/ | +2 | 0 replies | |
| 3/32 | genirq: Provide generic hwirq allocation facilityinclude/ kernel/ kernel/ | +71 | 11 replies | |
| 4/32 | x86: Implement arch_setup/teardown_hwirq()arch/ arch/ | +34 | 0 replies | |
| 5/32 | x86: irq_remapping: Use irq_alloc/free_hwirq()drivers/ | +5 | 1 reply | |
| 6/32 | x86: hpet: Use irq_alloc/free_hwirq()arch/ | +2 | 0 replies | |
| 7/32 | x86: uv: Use irq_alloc/free_hwirq()arch/ | +4 | 0 replies | |
| 8/32 | x86: htirq: Use irq_alloc/free_irq()drivers/ | +4 | 2 replies | |
| 9/32 | x86: ioapic: Use irq_alloc/free_hwirq()arch/ | +10 | 0 replies | |
| 10/32 | x86: Get rid of get_nr_irqs_gsi()arch/ arch/ drivers/ | +1 | 0 replies | |
| 11/32 | iommu: dmar: Fix return value check of create_irq()drivers/ | +1 | 0 replies | |
| 12/32 | iommu: dmar: Provide arch specific irq allocationarch/ arch/ drivers/ | +8 | 0 replies | |
| 13/32 | ia64: Remove unused check_irq_used()arch/ arch/ | +0 | 0 replies | |
| 14/32 | x86: Remove create/dstroy_irq()arch/ include/ | +1 | 0 replies | |
| 15/32 | tile: Implement irq_alloc/free_hwirq() for migrationarch/ arch/ | +15 | 2 replies | |
| 16/32 | tile: usb: Use irq_alloc/free_hwirqdrivers/ drivers/ | +8 | 0 replies | |
| 17/32 | tile: net: Use irq_alloc/free_hwirqdrivers/ | +3 | 0 replies | |
| 18/32 | tile: serial: Use irq_alloc/free_hwirqdrivers/ | +4 | 0 replies | |
| 19/32 | tile: hvc: Use irq_alloc/free_hwirqdrivers/ | +4 | 0 replies | |
| 20/32 | tile: pci: Use irq_alloc/free_hwirq()arch/ | +8 | 0 replies | |
| 21/32 | tile: Use SPARSE_IRQarch/ arch/ arch/ | +9 | 0 replies | |
| 22/32 | genirq: Make create/destroy_irq() ia64 privatearch/ include/ | +3 | 0 replies | |
| 23/32 | x86, irq: Remove pointless irq_reserve_irqs() callarch/ | +0 | 0 replies | |
| 24/32 | sh: intc: Remove pointless irq_reserve_irqs() invocationdrivers/ | +0 | 1 reply | |
| 25/32 | s390: pci: Check return value of alloc_irq_desc() properarch/ | +3 | 0 replies | |
| 26/32 | s390: Remove pointless arch_show_interrupts()arch/ | +0 | 0 replies | |
| 27/32 | s390: Avoid call to irq_reserve_irqs()arch/ | +5 | 0 replies | |
| 28/32 | genirq: Replace reserve_irqs in core codekernel/ kernel/ kernel/ | +15 | 0 replies | |
| 29/32 | genirq: Remove irq_reserve_irq[s]include/ kernel/ | +0 | 2 replies | |
| 30/32 | genirq: Replace dynamic_irq_init/cleanupinclude/ kernel/ kernel/ | +15 | 0 replies | |
| 31/32 | ia64: Use irq_init_descarch/ arch/ arch/ | +5 | 1 reply | |
| 32/32 | genirq: Remove dynamic_irq messinclude/ kernel/ | +7 | 0 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.
| Patch | Bjorn Helgaas | Tony Luck | Grant Likely | Simon Horman | Joerg Roedel | Chris Metcalf |
|---|---|---|---|---|---|---|
| Series | R-b | |||||
| 1/32 | ||||||
| 2/32 | ||||||
| 3/32 | A-b | |||||
| 4/32 | ||||||
| 5/32 | A-b | |||||
| 6/32 | ||||||
| 7/32 | ||||||
| 8/32 | A-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/32 | A-b | |||||
| 25/32 | ||||||
| 26/32 | ||||||
| 27/32 | ||||||
| 28/32 | ||||||
| 29/32 | A-b | |||||
| 30/32 | ||||||
| 31/32 | T-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.
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(-)