Skip to content

RFC Optimize irq flow handler

Jiang Liu linux-acpi linux-alpha linux-arm-kernel linux-arm-msm linux-gpio linux-m68k linux-mediatek linux-metag linux-mips linux-omap linux-pci linux-rockchip linux-samsung-soc linux-sh linux-tegra linuxppc-dev lkml sparclinux 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest25 patches 45 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/25ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_descarch/arm/common/locomo.c arch/arm/common/sa1111.c arch/arm/plat-orion/gpio.c+3 -31 reply
2/25avr32, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_descarch/avr32/mach-at32ap/pio.c+1 -11 reply
3/25MIPS, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_descarch/mips/ath25/ar2315.c arch/mips/ath25/ar5312.c arch/mips/cavium-octeon/octeon-irq.c +5 more+10 -80 replies
4/25powerpc, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_descarch/powerpc/platforms/52xx/mpc52xx_gpt.c arch/powerpc/platforms/cell/axon_msi.c arch/powerpc/platforms/embedded6xx/hlwd-pic.c +2 more+5 -51 reply
5/25gpio: Use irq_desc_get_xxx() to avoid redundant lookup of irq_descdrivers/gpio/gpio-bcm-kona.c drivers/gpio/gpio-dwapb.c drivers/gpio/gpio-mvebu.c +7 more+12 -142 replies
6/25pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_descdrivers/pinctrl/intel/pinctrl-cherryview.c drivers/pinctrl/intel/pinctrl-intel.c drivers/pinctrl/mediatek/pinctrl-mtk-common.c +13 more+46 -501 reply
7/25irqchip: Use irq_desc_get_xxx() to avoid redundant lookup of irq_descdrivers/irqchip/exynos-combiner.c drivers/irqchip/irq-armada-370-xp.c drivers/irqchip/irq-dw-apb-ictl.c +4 more+10 -100 replies
8/25mfd: Use irq_desc_get_xxx() to avoid redundant lookup of irq_descdrivers/mfd/ezx-pcap.c drivers/mfd/max8997-irq.c drivers/mfd/mt6397-core.c +3 more+12 -121 reply
9/25ipu: Use irq_desc_get_xxx() to avoid redundant lookup of irq_descdrivers/dma/ipu/ipu_irq.c drivers/gpu/ipu-v3/ipu-common.c+3 -30 replies
10/25sh: intc: Use irq_desc_get_xxx() to avoid redundant lookup of irq_descdrivers/sh/intc/core.c drivers/sh/intc/virq.c+9 -72 replies
11/25keystone, irq: Use irq_data_get_xxx() to avoid redundant lookup of irq_datadrivers/pci/host/pci-keystone-dw.c+6 -90 replies
12/25spmi: Use irq_desc_get_xxx() to avoid redundant lookup of irq_descdrivers/spmi/spmi-pmic-arb.c+2 -20 replies
13/25genirq: Kill the parameter 'irq' of kstat_incr_irqs_this_cpu()kernel/irq/chip.c kernel/irq/handle.c kernel/irq/internals.h +1 more+11 -111 reply
14/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tinclude/linux/irq.h include/linux/irqdesc.h include/linux/irqhandler.h +3 more+27 -2823 replies
15/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tarch/arm/common/it8152.c arch/arm/common/locomo.c arch/arm/common/sa1111.c +21 more+39 -325 replies
16/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tarch/powerpc/include/asm/qe_ic.h arch/powerpc/include/asm/tsi108_pci.h arch/powerpc/platforms/512x/mpc5121_ads_cpld.c +20 more+36 -370 replies
17/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tarch/mips/alchemy/common/irq.c arch/mips/alchemy/devboards/bcsr.c arch/mips/ath25/ar2315.c +11 more+28 -230 replies
18/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tarch/m68k/amiga/amiints.c arch/m68k/coldfire/intc-5272.c arch/m68k/include/asm/mac_via.h +4 more+15 -140 replies
18/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tarch/m68k/amiga/amiints.c arch/m68k/coldfire/intc-5272.c arch/m68k/include/asm/mac_via.h +4 more+15 -140 replies
19/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tarch/sh/boards/mach-se/7343/irq.c arch/sh/boards/mach-se/7722/irq.c arch/sh/boards/mach-se/7724/irq.c +4 more+14 -110 replies
20/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tarch/alpha/kernel/irq.c arch/avr32/mach-at32ap/extint.c arch/avr32/mach-at32ap/pio.c +9 more+16 -141 reply
21/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tdrivers/pinctrl/bcm/pinctrl-cygnus-gpio.c drivers/pinctrl/intel/pinctrl-baytrail.c drivers/pinctrl/intel/pinctrl-cherryview.c +16 more+37 -320 replies
22/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tdrivers/gpio/gpio-altera.c drivers/gpio/gpio-bcm-kona.c drivers/gpio/gpio-davinci.c +19 more+31 -300 replies
23/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tdrivers/irqchip/exynos-combiner.c drivers/irqchip/irq-bcm7038-l1.c drivers/irqchip/irq-bcm7120-l2.c +16 more+30 -280 replies
24/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tdrivers/mfd/asic3.c drivers/mfd/ezx-pcap.c drivers/mfd/htc-egpio.c +5 more+9 -91 reply
25/25genirq: Kill the first parameter 'irq' of irq_flow_handler_tdrivers/dma/ipu/ipu_irq.c drivers/gpu/ipu-v3/ipu-common.c drivers/pci/host/pci-keystone.c +1 more+11 -83 replies

Reviews trailers per patch

7 of 26 patches have a Reviewed-by or Acked-by.

PatchHans-Christian EgtvedtLee JonesRussell KingLinus Walleij
1/25A-b
2/25A-b
3/25
4/25
5/25A-b
6/25A-b
7/25
8/25A-b
9/25
10/25
11/25
12/25
13/25
14/25
15/25
16/25
17/25
18/25
18/25
19/25
20/25A-b
21/25
22/25
23/25
24/25A-b
25/25

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

Read the v1 thread

Cover letter [RFC v1 00/25] Optimize irq flow handler

This is an patch set to optimize irq flow handler. It could be split into three part.
1) Patch 1-12 get rid of redundant looking up of irq_desc and irq_data when we already had an pointer to corresponding irq_desc in irq flow handler. This part should be pretty safe.
2) Patch 13 is a perparation patch.
3) Patch 14-25 should be merge into one big fat patch, which kills the first parameter 'irq' of irq_flow_handler_t. I hope I have made all needed changes, but there are still some handler missed. After the conversion, there are only about 20 irq handlers which really access the irq number. This part is still in early stage and may cause building failures.

Please comment on whether we should be go on with the third part to kill 'irq' of irq_flow_handler_t.

Thanks!
Gerry

Jiang Liu (25):
ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of
irq_desc
avr32, irq: Use irq_desc_get_xxx() to avoid redundant lookup of
irq_desc
MIPS, irq: Use irq_desc_get_xxx() to avoid redundant lookup of
irq_desc
powerpc, irq: Use irq_desc_get_xxx() to avoid redundant lookup of
irq_desc
gpio: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
irqchip: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
mfd: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
ipu: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
sh: intc: Use irq_desc_get_xxx() to avoid redundant lookup of
irq_desc
keystone, irq: Use irq_data_get_xxx() to avoid redundant lookup of
irq_data
spmi: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
genirq: Kill the parameter 'irq' of kstat_incr_irqs_this_cpu()
genirq: Kill the first parameter 'irq' of irq_flow_handler_t
genirq: Kill the first parameter 'irq' of irq_flow_handler_t
genirq: Kill the first parameter 'irq' of irq_flow_handler_t
genirq: Kill the first parameter 'irq' of irq_flow_handler_t
genirq: Kill the first parameter 'irq' of irq_flow_handler_t
genirq: Kill the first parameter 'irq' of irq_flow_handler_t
genirq: Kill the first parameter 'irq' of irq_flow_handler_t
genirq: Kill the first parameter 'irq' of irq_flow_handler_t
genirq: Kill the first parameter 'irq' of irq_flow_handler_t
genirq: Kill the first parameter 'irq' of irq_flow_handler_t
genirq: Kill the first parameter 'irq' of irq_flow_handler_t
genirq: Kill the first parameter 'irq' of irq_flow_handler_t

 arch/alpha/kernel/irq.c                         |    2 +-
 arch/arm/common/it8152.c                        |    2 +-
 arch/arm/common/locomo.c                        |    5 +--
 arch/arm/common/sa1111.c                        |    6 ++--
 arch/arm/include/asm/hardware/it8152.h          |    2 +-
 arch/arm/include/asm/mach/irq.h                 |    4 +--
 arch/arm/mach-dove/irq.c                        |    5 +--
 arch/arm/mach-footbridge/isa-irq.c              |    4 +--
 arch/arm/mach-gemini/gpio.c                     |    2 +-
 arch/arm/mach-imx/3ds_debugboard.c              |    2 +-
 arch/arm/mach-imx/mach-mx31ads.c                |    2 +-
 arch/arm/mach-iop13xx/msi.c                     |    2 +-
 arch/arm/mach-lpc32xx/irq.c                     |    4 +--
 arch/arm/mach-omap1/fpga.c                      |    2 +-
 arch/arm/mach-omap2/prm_common.c                |    2 +-
 arch/arm/mach-pxa/balloon3.c                    |    3 +-
 arch/arm/mach-pxa/cm-x2xx-pci.c                 |    4 +--
 arch/arm/mach-pxa/lpd270.c                      |    3 +-
 arch/arm/mach-pxa/pcm990-baseboard.c            |    1 +
 arch/arm/mach-pxa/viper.c                       |    3 +-
 arch/arm/mach-pxa/zeus.c                        |    3 +-
 arch/arm/mach-rpc/ecard.c                       |    2 +-
 arch/arm/mach-s3c64xx/common.c                  |    8 ++---
 arch/arm/mach-sa1100/neponset.c                 |    2 +-
 arch/arm/plat-orion/gpio.c                      |    4 +--
 arch/avr32/mach-at32ap/extint.c                 |    2 +-
 arch/avr32/mach-at32ap/pio.c                    |    4 +--
 arch/blackfin/kernel/ipipe.c                    |    4 +--
 arch/c6x/platforms/megamod-pic.c                |    3 +-
 arch/m68k/amiga/amiints.c                       |    8 ++---
 arch/m68k/coldfire/intc-5272.c                  |    4 +--
 arch/m68k/include/asm/mac_via.h                 |    2 +-
 arch/m68k/mac/baboon.c                          |    2 +-
 arch/m68k/mac/oss.c                             |    4 +--
 arch/m68k/mac/psc.c                             |    3 +-
 arch/m68k/mac/via.c                             |    6 ++--
 arch/mips/alchemy/common/irq.c                  |    4 +--
 arch/mips/alchemy/devboards/bcsr.c              |    3 +-
 arch/mips/ath25/ar2315.c                        |    4 +--
 arch/mips/ath25/ar5312.c                        |    4 +--
 arch/mips/ath79/irq.c                           |   11 ++++---
 arch/mips/cavium-octeon/octeon-irq.c            |   12 ++++---
 arch/mips/include/asm/netlogic/common.h         |    4 +--
 arch/mips/jz4740/gpio.c                         |    2 +-
 arch/mips/netlogic/common/smp.c                 |    4 +--
 arch/mips/pci/pci-ar2315.c                      |    4 +--
 arch/mips/pci/pci-ar71xx.c                      |    4 +--
 arch/mips/pci/pci-ar724x.c                      |    4 +--
 arch/mips/pci/pci-rt3883.c                      |    5 +--
 arch/mips/ralink/irq.c                          |    4 +--
 arch/powerpc/include/asm/qe_ic.h                |   23 ++++++--------
 arch/powerpc/include/asm/tsi108_pci.h           |    2 +-
 arch/powerpc/platforms/512x/mpc5121_ads_cpld.c  |    4 ++-
 arch/powerpc/platforms/52xx/media5200.c         |    2 +-
 arch/powerpc/platforms/52xx/mpc52xx_gpt.c       |    4 +--
 arch/powerpc/platforms/82xx/pq2ads-pci-pic.c    |    2 +-
 arch/powerpc/platforms/85xx/common.c            |    2 +-
 arch/powerpc/platforms/85xx/mpc85xx_ds.c        |    2 +-
 arch/powerpc/platforms/85xx/socrates_fpga_pic.c |    3 +-
 arch/powerpc/platforms/86xx/pic.c               |    2 +-
 arch/powerpc/platforms/8xx/m8xx_setup.c         |    2 +-
 arch/powerpc/platforms/cell/axon_msi.c          |    4 +--
 arch/powerpc/platforms/cell/interrupt.c         |    3 +-
 arch/powerpc/platforms/cell/spider-pic.c        |    2 +-
 arch/powerpc/platforms/chrp/setup.c             |    2 +-
 arch/powerpc/platforms/embedded6xx/hlwd-pic.c   |    2 +-
 arch/powerpc/platforms/embedded6xx/mvme5100.c   |    2 +-
 arch/powerpc/platforms/pseries/setup.c          |    2 +-
 arch/powerpc/sysdev/ge/ge_pic.c                 |    2 +-
 arch/powerpc/sysdev/mpic.c                      |    2 +-
 arch/powerpc/sysdev/qe_lib/qe_ic.c              |    4 +--
 arch/powerpc/sysdev/tsi108_pci.c                |    2 +-
 arch/powerpc/sysdev/uic.c                       |    4 +--
 arch/powerpc/sysdev/xics/xics-common.c          |    2 +-
 arch/powerpc/sysdev/xilinx_intc.c               |    2 +-
 arch/sh/boards/mach-se/7343/irq.c               |    4 +--
 arch/sh/boards/mach-se/7722/irq.c               |    3 +-
 arch/sh/boards/mach-se/7724/irq.c               |    3 +-
 arch/sh/boards/mach-x3proto/gpio.c              |    4 +--
 arch/sh/cchips/hd6446x/hd64461.c                |    2 +-
 arch/sparc/kernel/leon_kernel.c                 |    2 +-
 arch/sparc/kernel/leon_pci_grpci1.c             |    2 +-
 arch/sparc/kernel/leon_pci_grpci2.c             |    2 +-
 arch/tile/kernel/pci_gx.c                       |    4 +--
 arch/unicore32/kernel/irq.c                     |    3 +-
 arch/x86/kernel/irq_64.c                        |    2 +-
 arch/x86/lguest/boot.c                          |    2 +-
 drivers/dma/ipu/ipu_irq.c                       |    8 +++--
 drivers/gpio/gpio-altera.c                      |    6 ++--
 drivers/gpio/gpio-bcm-kona.c                    |    4 +--
 drivers/gpio/gpio-davinci.c                     |    3 +-
 drivers/gpio/gpio-dwapb.c                       |    4 +--
 drivers/gpio/gpio-ep93xx.c                      |    5 +--
 drivers/gpio/gpio-intel-mid.c                   |    2 +-
 drivers/gpio/gpio-lynxpoint.c                   |    2 +-
 drivers/gpio/gpio-mpc8xxx.c                     |    2 +-
 drivers/gpio/gpio-msic.c                        |    2 +-
 drivers/gpio/gpio-msm-v2.c                      |    2 +-
 drivers/gpio/gpio-mvebu.c                       |    4 +--
 drivers/gpio/gpio-mxc.c                         |   10 +++---
 drivers/gpio/gpio-mxs.c                         |    4 +--
 drivers/gpio/gpio-omap.c                        |    4 +--
 drivers/gpio/gpio-pl061.c                       |    2 +-
 drivers/gpio/gpio-pxa.c                         |    2 +-
 drivers/gpio/gpio-sa1100.c                      |    4 +--
 drivers/gpio/gpio-tegra.c                       |    6 ++--
 drivers/gpio/gpio-timberdale.c                  |    7 +++--
 drivers/gpio/gpio-tz1090.c                      |    4 +--
 drivers/gpio/gpio-vf610.c                       |    4 +--
 drivers/gpio/gpio-zynq.c                        |    4 +--
 drivers/gpu/ipu-v3/ipu-common.c                 |    8 ++---
 drivers/irqchip/exynos-combiner.c               |    8 ++---
 drivers/irqchip/irq-armada-370-xp.c             |    2 +-
 drivers/irqchip/irq-bcm7038-l1.c                |    2 +-
 drivers/irqchip/irq-bcm7120-l2.c                |    2 +-
 drivers/irqchip/irq-brcmstb-l2.c                |    6 ++--
 drivers/irqchip/irq-dw-apb-ictl.c               |    6 ++--
 drivers/irqchip/irq-gic.c                       |    6 ++--
 drivers/irqchip/irq-imgpdc.c                    |    5 +--
 drivers/irqchip/irq-keystone.c                  |    3 +-
 drivers/irqchip/irq-metag-ext.c                 |    3 +-
 drivers/irqchip/irq-metag.c                     |    3 +-
 drivers/irqchip/irq-mips-gic.c                  |    2 +-
 drivers/irqchip/irq-mmp.c                       |    3 +-
 drivers/irqchip/irq-orion.c                     |    4 +--
 drivers/irqchip/irq-s3c24xx.c                   |    3 +-
 drivers/irqchip/irq-sunxi-nmi.c                 |    4 +--
 drivers/irqchip/irq-tb10x.c                     |    4 +--
 drivers/irqchip/irq-versatile-fpga.c            |    6 ++--
 drivers/irqchip/irq-vic.c                       |    2 +-
 drivers/irqchip/spear-shirq.c                   |    4 +--
 drivers/mfd/asic3.c                             |    2 +-
 drivers/mfd/ezx-pcap.c                          |    4 +--
 drivers/mfd/htc-egpio.c                         |    2 +-
 drivers/mfd/jz4740-adc.c                        |    2 +-
 drivers/mfd/max8997-irq.c                       |    8 ++---
 drivers/mfd/mt6397-core.c                       |    8 ++---
 drivers/mfd/pm8921-core.c                       |    2 +-
 drivers/mfd/t7l66xb.c                           |    4 +--
 drivers/mfd/tc6393xb.c                          |    4 +--
 drivers/mfd/twl6030-irq.c                       |    2 +-
 drivers/mfd/ucb1x00-core.c                      |    4 +--
 drivers/pci/host/pci-keystone-dw.c              |   15 ++++-----
 drivers/pci/host/pci-keystone.c                 |    7 +++--
 drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c       |    2 +-
 drivers/pinctrl/intel/pinctrl-baytrail.c        |    2 +-
 drivers/pinctrl/intel/pinctrl-cherryview.c      |    4 +--
 drivers/pinctrl/intel/pinctrl-intel.c           |    4 +--
 drivers/pinctrl/mediatek/pinctrl-mtk-common.c   |    6 ++--
 drivers/pinctrl/nomadik/pinctrl-nomadik.c       |   14 ++++-----
 drivers/pinctrl/pinctrl-amd.c                   |    7 +++--
 drivers/pinctrl/pinctrl-at91.c                  |    4 +--
 drivers/pinctrl/pinctrl-coh901.c                |    7 +++--
 drivers/pinctrl/pinctrl-rockchip.c              |    7 +++--
 drivers/pinctrl/pinctrl-single.c                |    4 +--
 drivers/pinctrl/pinctrl-st.c                    |   10 +++---
 drivers/pinctrl/qcom/pinctrl-msm.c              |    6 ++--
 drivers/pinctrl/samsung/pinctrl-exynos.c        |   12 +++----
 drivers/pinctrl/samsung/pinctrl-s3c24xx.c       |   26 ++++++++--------
 drivers/pinctrl/samsung/pinctrl-s3c64xx.c       |   32 +++++++++----------
 drivers/pinctrl/sirf/pinctrl-sirf.c             |    7 +++--
 drivers/pinctrl/spear/pinctrl-plgpio.c          |    2 +-
 drivers/pinctrl/sunxi/pinctrl-sunxi.c           |    7 +++--
 drivers/sh/intc/core.c                          |    4 +--
 drivers/sh/intc/virq.c                          |   17 +++++-----
 drivers/spmi/spmi-pmic-arb.c                    |    6 ++--
 include/linux/irq.h                             |   16 +++++-----
 include/linux/irqdesc.h                         |    9 ++++--
 include/linux/irqhandler.h                      |    2 +-
 kernel/irq/chip.c                               |   38 ++++++++++-------------
 kernel/irq/handle.c                             |    6 ++--
 kernel/irq/internals.h                          |    2 +-
 kernel/irq/irqdesc.c                            |    4 +--
 173 files changed, 420 insertions(+), 398 deletions(-)
Signature · 1 line
1.7.10.4