A recent request to export kstat_irqs() pointed to a copy of the same in the i915 code, which made me look for further usage of irq descriptors in drivers. The usage in drivers ranges from creative to broken in all colours. irqdesc.h clearly says that this is core functionality and the fact C does not allow full encapsulation is not a justification to fiddle with it just because. It took us a lot of effort to make the core functionality provide what drivers need. If there is a shortcoming, it's not asked too much to talk to the relevant maintainers instead of going off and fiddling with the guts of interrupt descriptors and often enough without understanding lifetime and locking rules. As people insist on not respecting boundaries, this series cleans up the (ab)use and at the end removes the export of irq_to_desc() to make it at least harder. All legitimate users of this are built in. While at it I stumbled over some other oddities related to interrupt counting and cleaned them up as well. The series applies on top of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core and is also available from git: git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git genirq Thanks, tglx --- arch/alpha/kernel/sys_jensen.c | 2 arch/arm/kernel/smp.c | 2 arch/parisc/kernel/irq.c | 7 arch/s390/kernel/irq.c | 2 arch/x86/kernel/topology.c | 1 arch/arm64/kernel/smp.c | 2 drivers/gpu/drm/i915/display/intel_lpe_audio.c | 4 drivers/gpu/drm/i915/i915_irq.c | 34 +++ drivers/gpu/drm/i915/i915_pmu.c | 18 - drivers/gpu/drm/i915/i915_pmu.h | 8 drivers/mfd/ab8500-debugfs.c | 16 - drivers/net/ethernet/mellanox/mlx4/en_cq.c | 8 drivers/net/ethernet/mellanox/mlx4/en_rx.c | 6 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 3 drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c | 6 drivers/ntb/msi.c | 4 drivers/pci/controller/mobiveil/pcie-mobiveil-host.c | 8 drivers/pci/controller/pcie-xilinx-nwl.c | 8 drivers/pinctrl/nomadik/pinctrl-nomadik.c | 3 drivers/xen/events/events_base.c | 172 +++++++++++-------- drivers/xen/evtchn.c | 34 --- include/linux/interrupt.h | 1 include/linux/irq.h | 7 include/linux/irqdesc.h | 40 +--- include/linux/kernel_stat.h | 1 kernel/irq/irqdesc.c | 42 ++-- kernel/irq/manage.c | 37 ++++ kernel/irq/proc.c | 5 30 files changed, 263 insertions(+), 222 deletions(-)