All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC v1 00/25] Optimize irq flow handler
@ 2015-05-20  9:59 ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Matthias Brugger
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi, linux-arm-kernel, linux-mediatek

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(-)

-- 
1.7.10.4


^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 00/25] Optimize irq flow handler
@ 2015-05-20  9:59 ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: linux-arm-kernel

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(-)

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 01/25] ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20  9:59   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Russell King, Jason Cooper,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement, Jiang Liu
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, Russell King, linux-arm-kernel

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/arm/common/locomo.c   |    2 +-
 arch/arm/common/sa1111.c   |    2 +-
 arch/arm/plat-orion/gpio.c |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index b55c3625d7ee..02af4a07ceca 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -140,7 +140,7 @@ static struct locomo_dev_info locomo_devices[] = {
 
 static void locomo_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct locomo *lchip = irq_get_chip_data(irq);
+	struct locomo *lchip = irq_desc_get_chip_data(desc);
 	int req, i;
 
 	/* Acknowledge the parent IRQ */
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 5cc779c8e9c6..0d0844fa54c2 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -200,7 +200,7 @@ static void
 sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	unsigned int stat0, stat1, i;
-	struct sa1111 *sachip = irq_get_handler_data(irq);
+	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
 	void __iomem *mapbase = sachip->base + SA1111_INTC;
 
 	stat0 = sa1111_readl(mapbase + SA1111_INTSTATCLR0);
diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
index 5168a52a17f9..caba04340619 100644
--- a/arch/arm/plat-orion/gpio.c
+++ b/arch/arm/plat-orion/gpio.c
@@ -409,7 +409,7 @@ static int gpio_irq_set_type(struct irq_data *d, u32 type)
 
 static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct orion_gpio_chip *ochip = irq_get_handler_data(irq);
+	struct orion_gpio_chip *ochip = irq_desc_get_handler_data(desc);
 	u32 cause, type;
 	int i;
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 01/25] ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-05-20  9:59   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: linux-arm-kernel

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/arm/common/locomo.c   |    2 +-
 arch/arm/common/sa1111.c   |    2 +-
 arch/arm/plat-orion/gpio.c |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index b55c3625d7ee..02af4a07ceca 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -140,7 +140,7 @@ static struct locomo_dev_info locomo_devices[] = {
 
 static void locomo_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct locomo *lchip = irq_get_chip_data(irq);
+	struct locomo *lchip = irq_desc_get_chip_data(desc);
 	int req, i;
 
 	/* Acknowledge the parent IRQ */
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 5cc779c8e9c6..0d0844fa54c2 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -200,7 +200,7 @@ static void
 sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	unsigned int stat0, stat1, i;
-	struct sa1111 *sachip = irq_get_handler_data(irq);
+	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
 	void __iomem *mapbase = sachip->base + SA1111_INTC;
 
 	stat0 = sa1111_readl(mapbase + SA1111_INTSTATCLR0);
diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
index 5168a52a17f9..caba04340619 100644
--- a/arch/arm/plat-orion/gpio.c
+++ b/arch/arm/plat-orion/gpio.c
@@ -409,7 +409,7 @@ static int gpio_irq_set_type(struct irq_data *d, u32 type)
 
 static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct orion_gpio_chip *ochip = irq_get_handler_data(irq);
+	struct orion_gpio_chip *ochip = irq_desc_get_handler_data(desc);
 	u32 cause, type;
 	int i;
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 02/25] avr32, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` Jiang Liu
  (?)
  (?)
@ 2015-05-20  9:59 ` Jiang Liu
  2015-05-20 10:15   ` Hans-Christian Egtvedt
  -1 siblings, 1 reply; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Haavard Skinnemoen,
	Hans-Christian Egtvedt
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/avr32/mach-at32ap/pio.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/avr32/mach-at32ap/pio.c b/arch/avr32/mach-at32ap/pio.c
index 903c7d81d0d5..2583e6cc44e9 100644
--- a/arch/avr32/mach-at32ap/pio.c
+++ b/arch/avr32/mach-at32ap/pio.c
@@ -286,7 +286,7 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 	struct pio_device	*pio = irq_desc_get_chip_data(desc);
 	unsigned		gpio_irq;
 
-	gpio_irq = (unsigned) irq_get_handler_data(irq);
+	gpio_irq = (unsigned) irq_desc_get_handler_data(desc);
 	for (;;) {
 		u32		isr;
 
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 03/25] MIPS, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` Jiang Liu
                   ` (2 preceding siblings ...)
  (?)
@ 2015-05-20  9:59 ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Ralf Baechle, Sergey Ryazanov,
	Aleksey Makarov, David Daney, Jiang Liu, Christoph Lameter,
	John Crispin, Andrew Bresticker
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-mips

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/mips/ath25/ar2315.c             |    2 +-
 arch/mips/ath25/ar5312.c             |    2 +-
 arch/mips/cavium-octeon/octeon-irq.c |    4 +++-
 arch/mips/pci/pci-ar2315.c           |    2 +-
 arch/mips/pci/pci-ar71xx.c           |    2 +-
 arch/mips/pci/pci-ar724x.c           |    2 +-
 arch/mips/pci/pci-rt3883.c           |    2 +-
 arch/mips/ralink/irq.c               |    2 +-
 8 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/arch/mips/ath25/ar2315.c b/arch/mips/ath25/ar2315.c
index 2befa7d766a6..8742e1cee492 100644
--- a/arch/mips/ath25/ar2315.c
+++ b/arch/mips/ath25/ar2315.c
@@ -76,7 +76,7 @@ static void ar2315_misc_irq_handler(unsigned irq, struct irq_desc *desc)
 	unsigned nr, misc_irq = 0;
 
 	if (pending) {
-		struct irq_domain *domain = irq_get_handler_data(irq);
+		struct irq_domain *domain = irq_desc_get_handler_data(desc);
 
 		nr = __ffs(pending);
 		misc_irq = irq_find_mapping(domain, nr);
diff --git a/arch/mips/ath25/ar5312.c b/arch/mips/ath25/ar5312.c
index b6887f75144c..094b938fd603 100644
--- a/arch/mips/ath25/ar5312.c
+++ b/arch/mips/ath25/ar5312.c
@@ -80,7 +80,7 @@ static void ar5312_misc_irq_handler(unsigned irq, struct irq_desc *desc)
 	unsigned nr, misc_irq = 0;
 
 	if (pending) {
-		struct irq_domain *domain = irq_get_handler_data(irq);
+		struct irq_domain *domain = irq_desc_get_handler_data(desc);
 
 		nr = __ffs(pending);
 		misc_irq = irq_find_mapping(domain, nr);
diff --git a/arch/mips/cavium-octeon/octeon-irq.c b/arch/mips/cavium-octeon/octeon-irq.c
index 0643ae614284..18bf3dcb9d1b 100644
--- a/arch/mips/cavium-octeon/octeon-irq.c
+++ b/arch/mips/cavium-octeon/octeon-irq.c
@@ -699,7 +699,9 @@ static void octeon_irq_ciu_gpio_ack(struct irq_data *data)
 
 static void octeon_irq_handle_trigger(unsigned int irq, struct irq_desc *desc)
 {
-	if (irq_get_trigger_type(irq) & IRQ_TYPE_EDGE_BOTH)
+	struct irq_data *data = irq_desc_get_irq_data(desc);
+
+	if (irqd_get_trigger_type(data) & IRQ_TYPE_EDGE_BOTH)
 		handle_edge_irq(irq, desc);
 	else
 		handle_level_irq(irq, desc);
diff --git a/arch/mips/pci/pci-ar2315.c b/arch/mips/pci/pci-ar2315.c
index 07a18228e63a..dadb30306a0a 100644
--- a/arch/mips/pci/pci-ar2315.c
+++ b/arch/mips/pci/pci-ar2315.c
@@ -320,7 +320,7 @@ static int ar2315_pci_host_setup(struct ar2315_pci_ctrl *apc)
 
 static void ar2315_pci_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct ar2315_pci_ctrl *apc = irq_get_handler_data(irq);
+	struct ar2315_pci_ctrl *apc = irq_desc_get_handler_data(desc);
 	u32 pending = ar2315_pci_reg_read(apc, AR2315_PCI_ISR) &
 		      ar2315_pci_reg_read(apc, AR2315_PCI_IMR);
 	unsigned pci_irq = 0;
diff --git a/arch/mips/pci/pci-ar71xx.c b/arch/mips/pci/pci-ar71xx.c
index 9e62ad31d4b5..dac6a07c45bf 100644
--- a/arch/mips/pci/pci-ar71xx.c
+++ b/arch/mips/pci/pci-ar71xx.c
@@ -232,7 +232,7 @@ static void ar71xx_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
 	void __iomem *base = ath79_reset_base;
 	u32 pending;
 
-	apc = irq_get_handler_data(irq);
+	apc = irq_desc_get_handler_data(desc);
 
 	pending = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_STATUS) &
 		  __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
diff --git a/arch/mips/pci/pci-ar724x.c b/arch/mips/pci/pci-ar724x.c
index a1b7d2a1b0d5..0af362b5af92 100644
--- a/arch/mips/pci/pci-ar724x.c
+++ b/arch/mips/pci/pci-ar724x.c
@@ -231,7 +231,7 @@ static void ar724x_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
 	void __iomem *base;
 	u32 pending;
 
-	apc = irq_get_handler_data(irq);
+	apc = irq_desc_get_handler_data(desc);
 	base = apc->ctrl_base;
 
 	pending = __raw_readl(base + AR724X_PCI_REG_INT_STATUS) &
diff --git a/arch/mips/pci/pci-rt3883.c b/arch/mips/pci/pci-rt3883.c
index ec9be8ca4ada..80fafe646e74 100644
--- a/arch/mips/pci/pci-rt3883.c
+++ b/arch/mips/pci/pci-rt3883.c
@@ -134,7 +134,7 @@ static void rt3883_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
 	struct rt3883_pci_controller *rpc;
 	u32 pending;
 
-	rpc = irq_get_handler_data(irq);
+	rpc = irq_desc_get_handler_data(desc);
 
 	pending = rt3883_pci_r32(rpc, RT3883_PCI_REG_PCIINT) &
 		  rt3883_pci_r32(rpc, RT3883_PCI_REG_PCIENA);
diff --git a/arch/mips/ralink/irq.c b/arch/mips/ralink/irq.c
index 7cf91b92e9d1..da301e0a2f1f 100644
--- a/arch/mips/ralink/irq.c
+++ b/arch/mips/ralink/irq.c
@@ -100,7 +100,7 @@ static void ralink_intc_irq_handler(unsigned int irq, struct irq_desc *desc)
 	u32 pending = rt_intc_r32(INTC_REG_STATUS0);
 
 	if (pending) {
-		struct irq_domain *domain = irq_get_handler_data(irq);
+		struct irq_domain *domain = irq_desc_get_handler_data(desc);
 		generic_handle_irq(irq_find_mapping(domain, __ffs(pending)));
 	} else {
 		spurious_interrupt();
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 04/25] powerpc, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20  9:59   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Anatolij Gustschin, Paul Mackerras,
	Michael Ellerman, Arnd Bergmann
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi, linuxppc-dev, cbe-oss-dev

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/powerpc/platforms/52xx/mpc52xx_gpt.c     |    2 +-
 arch/powerpc/platforms/cell/axon_msi.c        |    2 +-
 arch/powerpc/platforms/embedded6xx/hlwd-pic.c |    2 +-
 arch/powerpc/sysdev/uic.c                     |    2 +-
 arch/powerpc/sysdev/xics/xics-common.c        |    2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
index c949ca055712..63016621aff8 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
@@ -193,7 +193,7 @@ static struct irq_chip mpc52xx_gpt_irq_chip = {
 
 void mpc52xx_gpt_irq_cascade(unsigned int virq, struct irq_desc *desc)
 {
-	struct mpc52xx_gpt_priv *gpt = irq_get_handler_data(virq);
+	struct mpc52xx_gpt_priv *gpt = irq_desc_get_handler_data(desc);
 	int sub_virq;
 	u32 status;
 
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c
index 623bd961465a..817d0e6747ea 100644
--- a/arch/powerpc/platforms/cell/axon_msi.c
+++ b/arch/powerpc/platforms/cell/axon_msi.c
@@ -95,7 +95,7 @@ static void msic_dcr_write(struct axon_msic *msic, unsigned int dcr_n, u32 val)
 static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
-	struct axon_msic *msic = irq_get_handler_data(irq);
+	struct axon_msic *msic = irq_desc_get_handler_data(desc);
 	u32 write_offset, msi;
 	int idx;
 	int retry = 0;
diff --git a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
index c269caee58f9..9dd154d6f89a 100644
--- a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
+++ b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
@@ -124,7 +124,7 @@ static void hlwd_pic_irq_cascade(unsigned int cascade_virq,
 				      struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
-	struct irq_domain *irq_domain = irq_get_handler_data(cascade_virq);
+	struct irq_domain *irq_domain = irq_desc_get_handler_data(desc);
 	unsigned int virq;
 
 	raw_spin_lock(&desc->lock);
diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
index 7c37157d4c24..e763fe215cf5 100644
--- a/arch/powerpc/sysdev/uic.c
+++ b/arch/powerpc/sysdev/uic.c
@@ -198,7 +198,7 @@ void uic_irq_cascade(unsigned int virq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_data *idata = irq_desc_get_irq_data(desc);
-	struct uic *uic = irq_get_handler_data(virq);
+	struct uic *uic = irq_desc_get_handler_data(desc);
 	u32 msr;
 	int src;
 	int subvirq;
diff --git a/arch/powerpc/sysdev/xics/xics-common.c b/arch/powerpc/sysdev/xics/xics-common.c
index 878a54036a25..76be7b00dd80 100644
--- a/arch/powerpc/sysdev/xics/xics-common.c
+++ b/arch/powerpc/sysdev/xics/xics-common.c
@@ -227,7 +227,7 @@ void xics_migrate_irqs_away(void)
 
 		/* Locate interrupt server */
 		server = -1;
-		ics = irq_get_chip_data(virq);
+		ics = irq_desc_get_chip_data(desc);
 		if (ics)
 			server = ics->get_server(ics, irq);
 		if (server < 0) {
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 04/25] powerpc, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-05-20  9:59   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Anatolij Gustschin, Paul Mackerras,
	Michael Ellerman, Arnd Bergmann
  Cc: cbe-oss-dev, Tony Luck, Konrad Rzeszutek Wilk, linux-pci, x86,
	linux-kernel, linux-acpi, linuxppc-dev, Jiang Liu

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/powerpc/platforms/52xx/mpc52xx_gpt.c     |    2 +-
 arch/powerpc/platforms/cell/axon_msi.c        |    2 +-
 arch/powerpc/platforms/embedded6xx/hlwd-pic.c |    2 +-
 arch/powerpc/sysdev/uic.c                     |    2 +-
 arch/powerpc/sysdev/xics/xics-common.c        |    2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
index c949ca055712..63016621aff8 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
@@ -193,7 +193,7 @@ static struct irq_chip mpc52xx_gpt_irq_chip = {
 
 void mpc52xx_gpt_irq_cascade(unsigned int virq, struct irq_desc *desc)
 {
-	struct mpc52xx_gpt_priv *gpt = irq_get_handler_data(virq);
+	struct mpc52xx_gpt_priv *gpt = irq_desc_get_handler_data(desc);
 	int sub_virq;
 	u32 status;
 
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c
index 623bd961465a..817d0e6747ea 100644
--- a/arch/powerpc/platforms/cell/axon_msi.c
+++ b/arch/powerpc/platforms/cell/axon_msi.c
@@ -95,7 +95,7 @@ static void msic_dcr_write(struct axon_msic *msic, unsigned int dcr_n, u32 val)
 static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
-	struct axon_msic *msic = irq_get_handler_data(irq);
+	struct axon_msic *msic = irq_desc_get_handler_data(desc);
 	u32 write_offset, msi;
 	int idx;
 	int retry = 0;
diff --git a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
index c269caee58f9..9dd154d6f89a 100644
--- a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
+++ b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
@@ -124,7 +124,7 @@ static void hlwd_pic_irq_cascade(unsigned int cascade_virq,
 				      struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
-	struct irq_domain *irq_domain = irq_get_handler_data(cascade_virq);
+	struct irq_domain *irq_domain = irq_desc_get_handler_data(desc);
 	unsigned int virq;
 
 	raw_spin_lock(&desc->lock);
diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
index 7c37157d4c24..e763fe215cf5 100644
--- a/arch/powerpc/sysdev/uic.c
+++ b/arch/powerpc/sysdev/uic.c
@@ -198,7 +198,7 @@ void uic_irq_cascade(unsigned int virq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_data *idata = irq_desc_get_irq_data(desc);
-	struct uic *uic = irq_get_handler_data(virq);
+	struct uic *uic = irq_desc_get_handler_data(desc);
 	u32 msr;
 	int src;
 	int subvirq;
diff --git a/arch/powerpc/sysdev/xics/xics-common.c b/arch/powerpc/sysdev/xics/xics-common.c
index 878a54036a25..76be7b00dd80 100644
--- a/arch/powerpc/sysdev/xics/xics-common.c
+++ b/arch/powerpc/sysdev/xics/xics-common.c
@@ -227,7 +227,7 @@ void xics_migrate_irqs_away(void)
 
 		/* Locate interrupt server */
 		server = -1;
-		ics = irq_get_chip_data(virq);
+		ics = irq_desc_get_chip_data(desc);
 		if (ics)
 			server = ics->get_server(ics, irq);
 		if (server < 0) {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 05/25] gpio: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20  9:59   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Ray Jui, Linus Walleij,
	Alexandre Courbot, Javier Martinez Canillas, Santosh Shilimkar,
	Kevin Hilman, Stephen Warren, Thierry Reding, Michal Simek,
	Sören Brinkmann
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi, bcm-kernel-feedback-list, linux-gpio,
	linux-omap, linux-tegra, linux-arm-kernel

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/gpio/gpio-bcm-kona.c   |    2 +-
 drivers/gpio/gpio-dwapb.c      |    2 +-
 drivers/gpio/gpio-mvebu.c      |    2 +-
 drivers/gpio/gpio-mxc.c        |    6 +++---
 drivers/gpio/gpio-mxs.c        |    2 +-
 drivers/gpio/gpio-omap.c       |    2 +-
 drivers/gpio/gpio-tegra.c      |    4 +---
 drivers/gpio/gpio-timberdale.c |    2 +-
 drivers/gpio/gpio-vf610.c      |    2 +-
 drivers/gpio/gpio-zynq.c       |    2 +-
 10 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/drivers/gpio/gpio-bcm-kona.c b/drivers/gpio/gpio-bcm-kona.c
index b164ce837b43..2e7a8c66fe57 100644
--- a/drivers/gpio/gpio-bcm-kona.c
+++ b/drivers/gpio/gpio-bcm-kona.c
@@ -432,7 +432,7 @@ static void bcm_kona_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	void __iomem *reg_base;
 	int bit, bank_id;
 	unsigned long sta;
-	struct bcm_kona_gpio_bank *bank = irq_get_handler_data(irq);
+	struct bcm_kona_gpio_bank *bank = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	chained_irq_enter(chip, desc);
diff --git a/drivers/gpio/gpio-dwapb.c b/drivers/gpio/gpio-dwapb.c
index 58faf04fce5d..649be07a845d 100644
--- a/drivers/gpio/gpio-dwapb.c
+++ b/drivers/gpio/gpio-dwapb.c
@@ -149,7 +149,7 @@ static u32 dwapb_do_irq(struct dwapb_gpio *gpio)
 
 static void dwapb_irq_handler(u32 irq, struct irq_desc *desc)
 {
-	struct dwapb_gpio *gpio = irq_get_handler_data(irq);
+	struct dwapb_gpio *gpio = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	dwapb_do_irq(gpio);
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
index 1a54205860f5..a8c302ef7bc4 100644
--- a/drivers/gpio/gpio-mvebu.c
+++ b/drivers/gpio/gpio-mvebu.c
@@ -460,7 +460,7 @@ static int mvebu_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 
 static void mvebu_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct mvebu_gpio_chip *mvchip = irq_get_handler_data(irq);
+	struct mvebu_gpio_chip *mvchip = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	u32 cause, type;
 	int i;
diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
index 9f7446a7ac64..f10948c04f7c 100644
--- a/drivers/gpio/gpio-mxc.c
+++ b/drivers/gpio/gpio-mxc.c
@@ -275,8 +275,8 @@ static void mxc_gpio_irq_handler(struct mxc_gpio_port *port, u32 irq_stat)
 static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 {
 	u32 irq_stat;
-	struct mxc_gpio_port *port = irq_get_handler_data(irq);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct mxc_gpio_port *port = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	chained_irq_enter(chip, desc);
 
@@ -292,7 +292,7 @@ static void mx2_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 {
 	u32 irq_msk, irq_stat;
 	struct mxc_gpio_port *port;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	chained_irq_enter(chip, desc);
 
diff --git a/drivers/gpio/gpio-mxs.c b/drivers/gpio/gpio-mxs.c
index 84cbda6acdda..039c7d50e64f 100644
--- a/drivers/gpio/gpio-mxs.c
+++ b/drivers/gpio/gpio-mxs.c
@@ -157,7 +157,7 @@ static void mxs_flip_edge(struct mxs_gpio_port *port, u32 gpio)
 static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 {
 	u32 irq_stat;
-	struct mxs_gpio_port *port = irq_get_handler_data(irq);
+	struct mxs_gpio_port *port = irq_desc_get_handler_data(desc);
 
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
 
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index b232397ad7ec..acbf3feff1e2 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -719,7 +719,7 @@ static void omap_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	struct gpio_bank *bank;
 	int unmasked = 0;
 	struct irq_chip *irqchip = irq_desc_get_chip(desc);
-	struct gpio_chip *chip = irq_get_handler_data(irq);
+	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 
 	chained_irq_enter(irqchip, desc);
 
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index 1741981d53c8..89ed8a56eb0b 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -268,16 +268,14 @@ static void tegra_gpio_irq_shutdown(struct irq_data *d)
 
 static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct tegra_gpio_bank *bank;
 	int port;
 	int pin;
 	int unmasked = 0;
 	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct tegra_gpio_bank *bank = irq_desc_get_handler_data(desc);
 
 	chained_irq_enter(chip, desc);
 
-	bank = irq_get_handler_data(irq);
-
 	for (port = 0; port < 4; port++) {
 		int gpio = tegra_gpio_compose(bank->bank, port, 0);
 		unsigned long sta = tegra_gpio_readl(GPIO_INT_STA(gpio)) &
diff --git a/drivers/gpio/gpio-timberdale.c b/drivers/gpio/gpio-timberdale.c
index e8f97e03c9bb..d4e8cb4f2e53 100644
--- a/drivers/gpio/gpio-timberdale.c
+++ b/drivers/gpio/gpio-timberdale.c
@@ -194,7 +194,7 @@ out:
 
 static void timbgpio_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct timbgpio *tgpio = irq_get_handler_data(irq);
+	struct timbgpio *tgpio = irq_desc_get_handler_data(desc);
 	unsigned long ipr;
 	int offset;
 
diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
index 7bd9f209ffa8..fa344388f4da 100644
--- a/drivers/gpio/gpio-vf610.c
+++ b/drivers/gpio/gpio-vf610.c
@@ -120,7 +120,7 @@ static int vf610_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
 
 static void vf610_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 {
-	struct vf610_gpio_port *port = irq_get_handler_data(irq);
+	struct vf610_gpio_port *port = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int pin;
 	unsigned long irq_isfr;
diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c
index aea6075e5b2e..70e3a568b1cb 100644
--- a/drivers/gpio/gpio-zynq.c
+++ b/drivers/gpio/gpio-zynq.c
@@ -499,7 +499,7 @@ static void zynq_gpio_irqhandler(unsigned int irq, struct irq_desc *desc)
 {
 	u32 int_sts, int_enb;
 	unsigned int bank_num;
-	struct zynq_gpio *gpio = irq_get_handler_data(irq);
+	struct zynq_gpio *gpio = irq_desc_get_handler_data(desc);
 	struct irq_chip *irqchip = irq_desc_get_chip(desc);
 
 	chained_irq_enter(irqchip, desc);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 05/25] gpio: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-05-20  9:59   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: linux-arm-kernel

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/gpio/gpio-bcm-kona.c   |    2 +-
 drivers/gpio/gpio-dwapb.c      |    2 +-
 drivers/gpio/gpio-mvebu.c      |    2 +-
 drivers/gpio/gpio-mxc.c        |    6 +++---
 drivers/gpio/gpio-mxs.c        |    2 +-
 drivers/gpio/gpio-omap.c       |    2 +-
 drivers/gpio/gpio-tegra.c      |    4 +---
 drivers/gpio/gpio-timberdale.c |    2 +-
 drivers/gpio/gpio-vf610.c      |    2 +-
 drivers/gpio/gpio-zynq.c       |    2 +-
 10 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/drivers/gpio/gpio-bcm-kona.c b/drivers/gpio/gpio-bcm-kona.c
index b164ce837b43..2e7a8c66fe57 100644
--- a/drivers/gpio/gpio-bcm-kona.c
+++ b/drivers/gpio/gpio-bcm-kona.c
@@ -432,7 +432,7 @@ static void bcm_kona_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	void __iomem *reg_base;
 	int bit, bank_id;
 	unsigned long sta;
-	struct bcm_kona_gpio_bank *bank = irq_get_handler_data(irq);
+	struct bcm_kona_gpio_bank *bank = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	chained_irq_enter(chip, desc);
diff --git a/drivers/gpio/gpio-dwapb.c b/drivers/gpio/gpio-dwapb.c
index 58faf04fce5d..649be07a845d 100644
--- a/drivers/gpio/gpio-dwapb.c
+++ b/drivers/gpio/gpio-dwapb.c
@@ -149,7 +149,7 @@ static u32 dwapb_do_irq(struct dwapb_gpio *gpio)
 
 static void dwapb_irq_handler(u32 irq, struct irq_desc *desc)
 {
-	struct dwapb_gpio *gpio = irq_get_handler_data(irq);
+	struct dwapb_gpio *gpio = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	dwapb_do_irq(gpio);
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
index 1a54205860f5..a8c302ef7bc4 100644
--- a/drivers/gpio/gpio-mvebu.c
+++ b/drivers/gpio/gpio-mvebu.c
@@ -460,7 +460,7 @@ static int mvebu_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 
 static void mvebu_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct mvebu_gpio_chip *mvchip = irq_get_handler_data(irq);
+	struct mvebu_gpio_chip *mvchip = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	u32 cause, type;
 	int i;
diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
index 9f7446a7ac64..f10948c04f7c 100644
--- a/drivers/gpio/gpio-mxc.c
+++ b/drivers/gpio/gpio-mxc.c
@@ -275,8 +275,8 @@ static void mxc_gpio_irq_handler(struct mxc_gpio_port *port, u32 irq_stat)
 static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 {
 	u32 irq_stat;
-	struct mxc_gpio_port *port = irq_get_handler_data(irq);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct mxc_gpio_port *port = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	chained_irq_enter(chip, desc);
 
@@ -292,7 +292,7 @@ static void mx2_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 {
 	u32 irq_msk, irq_stat;
 	struct mxc_gpio_port *port;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	chained_irq_enter(chip, desc);
 
diff --git a/drivers/gpio/gpio-mxs.c b/drivers/gpio/gpio-mxs.c
index 84cbda6acdda..039c7d50e64f 100644
--- a/drivers/gpio/gpio-mxs.c
+++ b/drivers/gpio/gpio-mxs.c
@@ -157,7 +157,7 @@ static void mxs_flip_edge(struct mxs_gpio_port *port, u32 gpio)
 static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 {
 	u32 irq_stat;
-	struct mxs_gpio_port *port = irq_get_handler_data(irq);
+	struct mxs_gpio_port *port = irq_desc_get_handler_data(desc);
 
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
 
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index b232397ad7ec..acbf3feff1e2 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -719,7 +719,7 @@ static void omap_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	struct gpio_bank *bank;
 	int unmasked = 0;
 	struct irq_chip *irqchip = irq_desc_get_chip(desc);
-	struct gpio_chip *chip = irq_get_handler_data(irq);
+	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 
 	chained_irq_enter(irqchip, desc);
 
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index 1741981d53c8..89ed8a56eb0b 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -268,16 +268,14 @@ static void tegra_gpio_irq_shutdown(struct irq_data *d)
 
 static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct tegra_gpio_bank *bank;
 	int port;
 	int pin;
 	int unmasked = 0;
 	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct tegra_gpio_bank *bank = irq_desc_get_handler_data(desc);
 
 	chained_irq_enter(chip, desc);
 
-	bank = irq_get_handler_data(irq);
-
 	for (port = 0; port < 4; port++) {
 		int gpio = tegra_gpio_compose(bank->bank, port, 0);
 		unsigned long sta = tegra_gpio_readl(GPIO_INT_STA(gpio)) &
diff --git a/drivers/gpio/gpio-timberdale.c b/drivers/gpio/gpio-timberdale.c
index e8f97e03c9bb..d4e8cb4f2e53 100644
--- a/drivers/gpio/gpio-timberdale.c
+++ b/drivers/gpio/gpio-timberdale.c
@@ -194,7 +194,7 @@ out:
 
 static void timbgpio_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct timbgpio *tgpio = irq_get_handler_data(irq);
+	struct timbgpio *tgpio = irq_desc_get_handler_data(desc);
 	unsigned long ipr;
 	int offset;
 
diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
index 7bd9f209ffa8..fa344388f4da 100644
--- a/drivers/gpio/gpio-vf610.c
+++ b/drivers/gpio/gpio-vf610.c
@@ -120,7 +120,7 @@ static int vf610_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
 
 static void vf610_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 {
-	struct vf610_gpio_port *port = irq_get_handler_data(irq);
+	struct vf610_gpio_port *port = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int pin;
 	unsigned long irq_isfr;
diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c
index aea6075e5b2e..70e3a568b1cb 100644
--- a/drivers/gpio/gpio-zynq.c
+++ b/drivers/gpio/gpio-zynq.c
@@ -499,7 +499,7 @@ static void zynq_gpio_irqhandler(unsigned int irq, struct irq_desc *desc)
 {
 	u32 int_sts, int_enb;
 	unsigned int bank_num;
-	struct zynq_gpio *gpio = irq_get_handler_data(irq);
+	struct zynq_gpio *gpio = irq_desc_get_handler_data(desc);
 	struct irq_chip *irqchip = irq_desc_get_chip(desc);
 
 	chained_irq_enter(irqchip, desc);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 06/25] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20  9:59   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Mika Westerberg, Heikki Krogerus,
	Linus Walleij, Matthias Brugger, Alessandro Rubini,
	Jean-Christophe Plagniol-Villard, Heiko Stuebner,
	Srinivas Kandagatla, Maxime Coquelin, Patrice Chotard,
	Tomasz Figa, Thomas Abraham, Kukji
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, Barry Song, linux-gpio, linux-arm-kernel,
	linux-mediatek, linux-rockchip, kernel, linux-samsung-soc

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/pinctrl/intel/pinctrl-cherryview.c    |    2 +-
 drivers/pinctrl/intel/pinctrl-intel.c         |    2 +-
 drivers/pinctrl/mediatek/pinctrl-mtk-common.c |    4 ++--
 drivers/pinctrl/nomadik/pinctrl-nomadik.c     |   12 +++++-------
 drivers/pinctrl/pinctrl-amd.c                 |    2 +-
 drivers/pinctrl/pinctrl-at91.c                |    2 +-
 drivers/pinctrl/pinctrl-coh901.c              |    4 ++--
 drivers/pinctrl/pinctrl-rockchip.c            |    4 ++--
 drivers/pinctrl/pinctrl-single.c              |    2 +-
 drivers/pinctrl/pinctrl-st.c                  |    6 +++---
 drivers/pinctrl/qcom/pinctrl-msm.c            |    2 +-
 drivers/pinctrl/samsung/pinctrl-exynos.c      |    8 ++++----
 drivers/pinctrl/samsung/pinctrl-s3c24xx.c     |   18 +++++++++---------
 drivers/pinctrl/samsung/pinctrl-s3c64xx.c     |   22 ++++++++++------------
 drivers/pinctrl/sirf/pinctrl-sirf.c           |    2 +-
 drivers/pinctrl/sunxi/pinctrl-sunxi.c         |    4 ++--
 16 files changed, 46 insertions(+), 50 deletions(-)

diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c
index 82f691eeeec4..878e798bcb56 100644
--- a/drivers/pinctrl/intel/pinctrl-cherryview.c
+++ b/drivers/pinctrl/intel/pinctrl-cherryview.c
@@ -1368,7 +1368,7 @@ static void chv_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct chv_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned long pending;
 	u32 intr_line;
 
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
index 00768e53deec..a40681097402 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -840,7 +840,7 @@ static void intel_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct intel_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int i;
 
 	chained_irq_enter(chip, desc);
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
index 474812e2b0cb..fd05ca6125b0 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
@@ -1018,8 +1018,8 @@ mtk_eint_debounce_process(struct mtk_pinctrl *pctl, int index)
 
 static void mtk_eint_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct mtk_pinctrl *pctl = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct mtk_pinctrl *pctl = irq_desc_get_handler_data(desc);
 	unsigned int status, eint_num;
 	int offset, index, virq;
 	const struct mtk_eint_offsets *eint_offsets =
diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik.c b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
index a6a22054c0ba..902f53b855bf 100644
--- a/drivers/pinctrl/nomadik/pinctrl-nomadik.c
+++ b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
@@ -854,10 +854,9 @@ static struct irq_chip nmk_gpio_irq_chip = {
 	.flags		= IRQCHIP_MASK_ON_SUSPEND,
 };
 
-static void __nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc,
-				   u32 status)
+static void __nmk_gpio_irq_handler(struct irq_desc *desc, u32 status)
 {
-	struct irq_chip *host_chip = irq_get_chip(irq);
+	struct irq_chip *host_chip = irq_desc_get_chip(desc);
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 
 	chained_irq_enter(host_chip, desc);
@@ -882,17 +881,16 @@ static void nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	status = readl(nmk_chip->addr + NMK_GPIO_IS);
 	clk_disable(nmk_chip->clk);
 
-	__nmk_gpio_irq_handler(irq, desc, status);
+	__nmk_gpio_irq_handler(desc, status);
 }
 
-static void nmk_gpio_latent_irq_handler(unsigned int irq,
-					   struct irq_desc *desc)
+static void nmk_gpio_latent_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct nmk_gpio_chip *nmk_chip = container_of(chip, struct nmk_gpio_chip, chip);
 	u32 status = nmk_chip->get_latent_status(nmk_chip->bank);
 
-	__nmk_gpio_irq_handler(irq, desc, status);
+	__nmk_gpio_irq_handler(desc, status);
 }
 
 /* I/O Functions */
diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c
index 7de3b64bf142..639cd77c1fbb 100644
--- a/drivers/pinctrl/pinctrl-amd.c
+++ b/drivers/pinctrl/pinctrl-amd.c
@@ -501,7 +501,7 @@ static void amd_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	u64 reg64;
 	int handled = 0;
 	unsigned long flags;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct amd_gpio *gpio_dev = to_amd_gpio(gc);
 
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index 2f797cb7e205..92d5f9ec1cce 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -1581,7 +1581,7 @@ static struct irq_chip gpio_irqchip = {
 
 static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gpio_chip = irq_desc_get_handler_data(desc);
 	struct at91_gpio_chip *at91_gpio = container_of(gpio_chip,
 					   struct at91_gpio_chip, chip);
diff --git a/drivers/pinctrl/pinctrl-coh901.c b/drivers/pinctrl/pinctrl-coh901.c
index 29cbbab8c3a6..9579442a221d 100644
--- a/drivers/pinctrl/pinctrl-coh901.c
+++ b/drivers/pinctrl/pinctrl-coh901.c
@@ -521,8 +521,8 @@ static struct irq_chip u300_gpio_irqchip = {
 
 static void u300_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *parent_chip = irq_get_chip(irq);
-	struct gpio_chip *chip = irq_get_handler_data(irq);
+	struct irq_chip *parent_chip = irq_desc_get_chip(desc);
+	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct u300_gpio *gpio = to_u300_gpio(chip);
 	struct u300_gpio_port *port = &gpio->ports[irq - chip->base];
 	int pinoffset = port->number << 3; /* get the right stride */
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index dee7d5f06c60..97a4a3dddb30 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -1396,8 +1396,8 @@ static const struct gpio_chip rockchip_gpiolib_chip = {
 
 static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct rockchip_pin_bank *bank = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct rockchip_pin_bank *bank = irq_desc_get_handler_data(desc);
 	u32 pend;
 
 	dev_dbg(bank->drvdata->dev, "got irq for bank %s\n", bank->name);
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index 13b45f297727..a8db57db5f5b 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -1684,7 +1684,7 @@ static void pcs_irq_chain_handler(unsigned int irq, struct irq_desc *desc)
 	struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip;
 
-	chip = irq_get_chip(irq);
+	chip = irq_desc_get_chip(desc);
 	chained_irq_enter(chip, desc);
 	pcs_irq_handle(pcs_soc);
 	/* REVISIT: export and add handle_bad_irq(irq, desc)? */
diff --git a/drivers/pinctrl/pinctrl-st.c b/drivers/pinctrl/pinctrl-st.c
index 65bf73b70e34..a4f8d38ed7be 100644
--- a/drivers/pinctrl/pinctrl-st.c
+++ b/drivers/pinctrl/pinctrl-st.c
@@ -1463,7 +1463,7 @@ static void __gpio_irq_handler(struct st_gpio_bank *bank)
 static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
 	/* interrupt dedicated per bank */
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct st_gpio_bank *bank = gpio_chip_to_bank(gc);
 
@@ -1474,8 +1474,8 @@ static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 
 static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct st_pinctrl *info = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct st_pinctrl *info = irq_desc_get_handler_data(desc);
 	unsigned long status;
 	int n;
 
diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
index f3d800f796c2..7439d19af0dd 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -769,7 +769,7 @@ static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	const struct msm_pingroup *g;
 	struct msm_pinctrl *pctrl = to_msm_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int irq_pin;
 	int handled = 0;
 	u32 val;
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c
index 0b7afa50121a..66fb5ee5a8ae 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -422,9 +422,9 @@ static const struct of_device_id exynos_wkup_irq_ids[] = {
 /* interrupt handler for wakeup interrupts 0..15 */
 static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
 {
-	struct exynos_weint_data *eintd = irq_get_handler_data(irq);
+	struct exynos_weint_data *eintd = irq_desc_get_handler_data(desc);
 	struct samsung_pin_bank *bank = eintd->bank;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int eint_irq;
 
 	chained_irq_enter(chip, desc);
@@ -454,8 +454,8 @@ static inline void exynos_irq_demux_eint(unsigned long pend,
 /* interrupt handler for wakeup interrupt 16 */
 static void exynos_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct exynos_muxed_weint_data *eintd = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct exynos_muxed_weint_data *eintd = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *d = eintd->banks[0]->drvdata;
 	unsigned long pend;
 	unsigned long mask;
diff --git a/drivers/pinctrl/samsung/pinctrl-s3c24xx.c b/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
index f1993f42114c..f83e4aeff42c 100644
--- a/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
+++ b/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
@@ -243,7 +243,7 @@ static struct irq_chip s3c2410_eint0_3_chip = {
 static void s3c2410_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
-	struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
+	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
 	unsigned int virq;
 
 	/* the first 4 eints have a simple 1 to 1 mapping */
@@ -297,9 +297,9 @@ static struct irq_chip s3c2412_eint0_3_chip = {
 
 static void s3c2412_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
-	struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned int virq;
 
 	chained_irq_enter(chip, desc);
@@ -357,11 +357,11 @@ static struct irq_chip s3c24xx_eint_chip = {
 	.irq_set_type	= s3c24xx_eint_type,
 };
 
-static inline void s3c24xx_demux_eint(unsigned int irq, struct irq_desc *desc,
+static inline void s3c24xx_demux_eint(struct irq_desc *desc,
 				      u32 offset, u32 range)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c24xx_eint_data *data = irq_get_handler_data(irq);
+	struct s3c24xx_eint_data *data = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_irq_chip(desc);
 	struct samsung_pinctrl_drv_data *d = data->drvdata;
 	unsigned int pend, mask;
 
@@ -375,8 +375,8 @@ static inline void s3c24xx_demux_eint(unsigned int irq, struct irq_desc *desc,
 
 	while (pend) {
 		unsigned int virq;
+		unsigned int irq = __ffs(pend);
 
-		irq = __ffs(pend);
 		pend &= ~(1 << irq);
 		virq = irq_linear_revmap(data->domains[irq], irq - offset);
 		/* Something is really wrong if an unmapped EINT is unmasked */
@@ -390,12 +390,12 @@ static inline void s3c24xx_demux_eint(unsigned int irq, struct irq_desc *desc,
 
 static void s3c24xx_demux_eint4_7(unsigned int irq, struct irq_desc *desc)
 {
-	s3c24xx_demux_eint(irq, desc, 0, 0xf0);
+	s3c24xx_demux_eint(desc, 0, 0xf0);
 }
 
 static void s3c24xx_demux_eint8_23(unsigned int irq, struct irq_desc *desc)
 {
-	s3c24xx_demux_eint(irq, desc, 8, 0xffff00);
+	s3c24xx_demux_eint(desc, 8, 0xffff00);
 }
 
 static irq_flow_handler_t s3c2410_eint_handlers[NUM_EINT_IRQ] = {
diff --git a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
index 7756c1e9e763..0ffe5db216f7 100644
--- a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
+++ b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
@@ -410,8 +410,8 @@ static const struct irq_domain_ops s3c64xx_gpio_irqd_ops = {
 
 static void s3c64xx_eint_gpio_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c64xx_eint_gpio_data *data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct s3c64xx_eint_gpio_data *data = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
 
 	chained_irq_enter(chip, desc);
@@ -600,11 +600,10 @@ static struct irq_chip s3c64xx_eint0_irq_chip = {
 	.irq_set_type	= s3c64xx_eint0_irq_set_type,
 };
 
-static inline void s3c64xx_irq_demux_eint(unsigned int irq,
-					struct irq_desc *desc, u32 range)
+static inline void s3c64xx_irq_demux_eint(struct irq_desc *desc, u32 range)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c64xx_eint0_data *data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct s3c64xx_eint0_data *data = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
 	unsigned int pend, mask;
 
@@ -618,10 +617,9 @@ static inline void s3c64xx_irq_demux_eint(unsigned int irq,
 
 	while (pend) {
 		unsigned int virq;
+		unsigned int irq = fls(pend) - 1;
 
-		irq = fls(pend) - 1;
 		pend &= ~(1 << irq);
-
 		virq = irq_linear_revmap(data->domains[irq], data->pins[irq]);
 		/*
 		 * Something must be really wrong if an unmapped EINT
@@ -637,22 +635,22 @@ static inline void s3c64xx_irq_demux_eint(unsigned int irq,
 
 static void s3c64xx_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xf);
+	s3c64xx_irq_demux_eint(desc, 0xf);
 }
 
 static void s3c64xx_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff0);
+	s3c64xx_irq_demux_eint(desc, 0xff0);
 }
 
 static void s3c64xx_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff000);
+	s3c64xx_irq_demux_eint(desc, 0xff000);
 }
 
 static void s3c64xx_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff00000);
+	s3c64xx_irq_demux_eint(desc, 0xff00000);
 }
 
 static irq_flow_handler_t s3c64xx_eint0_handlers[NUM_EINT0_IRQ] = {
diff --git a/drivers/pinctrl/sirf/pinctrl-sirf.c b/drivers/pinctrl/sirf/pinctrl-sirf.c
index e2efbbae4061..46cafde08ebf 100644
--- a/drivers/pinctrl/sirf/pinctrl-sirf.c
+++ b/drivers/pinctrl/sirf/pinctrl-sirf.c
@@ -552,7 +552,7 @@ static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc)
 	struct sirfsoc_gpio_bank *bank;
 	u32 status, ctrl;
 	int idx = 0;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int i;
 
 	for (i = 0; i < SIRFSOC_GPIO_NO_OF_BANKS; i++) {
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index f8e171b76693..563cec6dc24e 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -711,8 +711,8 @@ static struct irq_chip sunxi_pinctrl_level_irq_chip = {
 
 static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct sunxi_pinctrl *pctl = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct sunxi_pinctrl *pctl = irq_desc_get_handler_data(desc);
 	unsigned long bank, reg, val;
 
 	for (bank = 0; bank < pctl->desc->irq_banks; bank++)
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 06/25] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-05-20  9:59   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Mika Westerberg, Heikki Krogerus,
	Linus Walleij, Matthias Brugger, Alessandro Rubini,
	Jean-Christophe Plagniol-Villard, Heiko Stuebner,
	Srinivas Kandagatla, Maxime Coquelin, Patrice Chotard,
	Tomasz Figa, Thomas Abraham, Kukjin Kim, Krzysztof Kozlowski,
	Barry Song, Maxime Ripard, Hongzhou Yang, Maoguang Meng,
	Yingjoe Chen, Axel Lin, Jiang Liu, Bjorn Andersson,
	Stanimir Varbanov, Stephen Boyd, Bin Shi, Fan Wu, Hans de Goede,
	Chen-Yu Tsai
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, Barry Song, linux-gpio, linux-arm-kernel,
	linux-mediatek, linux-rockchip, kernel, linux-samsung-soc

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/pinctrl/intel/pinctrl-cherryview.c    |    2 +-
 drivers/pinctrl/intel/pinctrl-intel.c         |    2 +-
 drivers/pinctrl/mediatek/pinctrl-mtk-common.c |    4 ++--
 drivers/pinctrl/nomadik/pinctrl-nomadik.c     |   12 +++++-------
 drivers/pinctrl/pinctrl-amd.c                 |    2 +-
 drivers/pinctrl/pinctrl-at91.c                |    2 +-
 drivers/pinctrl/pinctrl-coh901.c              |    4 ++--
 drivers/pinctrl/pinctrl-rockchip.c            |    4 ++--
 drivers/pinctrl/pinctrl-single.c              |    2 +-
 drivers/pinctrl/pinctrl-st.c                  |    6 +++---
 drivers/pinctrl/qcom/pinctrl-msm.c            |    2 +-
 drivers/pinctrl/samsung/pinctrl-exynos.c      |    8 ++++----
 drivers/pinctrl/samsung/pinctrl-s3c24xx.c     |   18 +++++++++---------
 drivers/pinctrl/samsung/pinctrl-s3c64xx.c     |   22 ++++++++++------------
 drivers/pinctrl/sirf/pinctrl-sirf.c           |    2 +-
 drivers/pinctrl/sunxi/pinctrl-sunxi.c         |    4 ++--
 16 files changed, 46 insertions(+), 50 deletions(-)

diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c
index 82f691eeeec4..878e798bcb56 100644
--- a/drivers/pinctrl/intel/pinctrl-cherryview.c
+++ b/drivers/pinctrl/intel/pinctrl-cherryview.c
@@ -1368,7 +1368,7 @@ static void chv_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct chv_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned long pending;
 	u32 intr_line;
 
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
index 00768e53deec..a40681097402 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -840,7 +840,7 @@ static void intel_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct intel_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int i;
 
 	chained_irq_enter(chip, desc);
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
index 474812e2b0cb..fd05ca6125b0 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
@@ -1018,8 +1018,8 @@ mtk_eint_debounce_process(struct mtk_pinctrl *pctl, int index)
 
 static void mtk_eint_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct mtk_pinctrl *pctl = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct mtk_pinctrl *pctl = irq_desc_get_handler_data(desc);
 	unsigned int status, eint_num;
 	int offset, index, virq;
 	const struct mtk_eint_offsets *eint_offsets =
diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik.c b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
index a6a22054c0ba..902f53b855bf 100644
--- a/drivers/pinctrl/nomadik/pinctrl-nomadik.c
+++ b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
@@ -854,10 +854,9 @@ static struct irq_chip nmk_gpio_irq_chip = {
 	.flags		= IRQCHIP_MASK_ON_SUSPEND,
 };
 
-static void __nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc,
-				   u32 status)
+static void __nmk_gpio_irq_handler(struct irq_desc *desc, u32 status)
 {
-	struct irq_chip *host_chip = irq_get_chip(irq);
+	struct irq_chip *host_chip = irq_desc_get_chip(desc);
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 
 	chained_irq_enter(host_chip, desc);
@@ -882,17 +881,16 @@ static void nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	status = readl(nmk_chip->addr + NMK_GPIO_IS);
 	clk_disable(nmk_chip->clk);
 
-	__nmk_gpio_irq_handler(irq, desc, status);
+	__nmk_gpio_irq_handler(desc, status);
 }
 
-static void nmk_gpio_latent_irq_handler(unsigned int irq,
-					   struct irq_desc *desc)
+static void nmk_gpio_latent_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct nmk_gpio_chip *nmk_chip = container_of(chip, struct nmk_gpio_chip, chip);
 	u32 status = nmk_chip->get_latent_status(nmk_chip->bank);
 
-	__nmk_gpio_irq_handler(irq, desc, status);
+	__nmk_gpio_irq_handler(desc, status);
 }
 
 /* I/O Functions */
diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c
index 7de3b64bf142..639cd77c1fbb 100644
--- a/drivers/pinctrl/pinctrl-amd.c
+++ b/drivers/pinctrl/pinctrl-amd.c
@@ -501,7 +501,7 @@ static void amd_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	u64 reg64;
 	int handled = 0;
 	unsigned long flags;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct amd_gpio *gpio_dev = to_amd_gpio(gc);
 
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index 2f797cb7e205..92d5f9ec1cce 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -1581,7 +1581,7 @@ static struct irq_chip gpio_irqchip = {
 
 static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gpio_chip = irq_desc_get_handler_data(desc);
 	struct at91_gpio_chip *at91_gpio = container_of(gpio_chip,
 					   struct at91_gpio_chip, chip);
diff --git a/drivers/pinctrl/pinctrl-coh901.c b/drivers/pinctrl/pinctrl-coh901.c
index 29cbbab8c3a6..9579442a221d 100644
--- a/drivers/pinctrl/pinctrl-coh901.c
+++ b/drivers/pinctrl/pinctrl-coh901.c
@@ -521,8 +521,8 @@ static struct irq_chip u300_gpio_irqchip = {
 
 static void u300_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *parent_chip = irq_get_chip(irq);
-	struct gpio_chip *chip = irq_get_handler_data(irq);
+	struct irq_chip *parent_chip = irq_desc_get_chip(desc);
+	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct u300_gpio *gpio = to_u300_gpio(chip);
 	struct u300_gpio_port *port = &gpio->ports[irq - chip->base];
 	int pinoffset = port->number << 3; /* get the right stride */
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index dee7d5f06c60..97a4a3dddb30 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -1396,8 +1396,8 @@ static const struct gpio_chip rockchip_gpiolib_chip = {
 
 static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct rockchip_pin_bank *bank = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct rockchip_pin_bank *bank = irq_desc_get_handler_data(desc);
 	u32 pend;
 
 	dev_dbg(bank->drvdata->dev, "got irq for bank %s\n", bank->name);
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index 13b45f297727..a8db57db5f5b 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -1684,7 +1684,7 @@ static void pcs_irq_chain_handler(unsigned int irq, struct irq_desc *desc)
 	struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip;
 
-	chip = irq_get_chip(irq);
+	chip = irq_desc_get_chip(desc);
 	chained_irq_enter(chip, desc);
 	pcs_irq_handle(pcs_soc);
 	/* REVISIT: export and add handle_bad_irq(irq, desc)? */
diff --git a/drivers/pinctrl/pinctrl-st.c b/drivers/pinctrl/pinctrl-st.c
index 65bf73b70e34..a4f8d38ed7be 100644
--- a/drivers/pinctrl/pinctrl-st.c
+++ b/drivers/pinctrl/pinctrl-st.c
@@ -1463,7 +1463,7 @@ static void __gpio_irq_handler(struct st_gpio_bank *bank)
 static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
 	/* interrupt dedicated per bank */
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct st_gpio_bank *bank = gpio_chip_to_bank(gc);
 
@@ -1474,8 +1474,8 @@ static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 
 static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct st_pinctrl *info = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct st_pinctrl *info = irq_desc_get_handler_data(desc);
 	unsigned long status;
 	int n;
 
diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
index f3d800f796c2..7439d19af0dd 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -769,7 +769,7 @@ static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	const struct msm_pingroup *g;
 	struct msm_pinctrl *pctrl = to_msm_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int irq_pin;
 	int handled = 0;
 	u32 val;
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c
index 0b7afa50121a..66fb5ee5a8ae 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -422,9 +422,9 @@ static const struct of_device_id exynos_wkup_irq_ids[] = {
 /* interrupt handler for wakeup interrupts 0..15 */
 static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
 {
-	struct exynos_weint_data *eintd = irq_get_handler_data(irq);
+	struct exynos_weint_data *eintd = irq_desc_get_handler_data(desc);
 	struct samsung_pin_bank *bank = eintd->bank;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int eint_irq;
 
 	chained_irq_enter(chip, desc);
@@ -454,8 +454,8 @@ static inline void exynos_irq_demux_eint(unsigned long pend,
 /* interrupt handler for wakeup interrupt 16 */
 static void exynos_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct exynos_muxed_weint_data *eintd = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct exynos_muxed_weint_data *eintd = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *d = eintd->banks[0]->drvdata;
 	unsigned long pend;
 	unsigned long mask;
diff --git a/drivers/pinctrl/samsung/pinctrl-s3c24xx.c b/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
index f1993f42114c..f83e4aeff42c 100644
--- a/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
+++ b/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
@@ -243,7 +243,7 @@ static struct irq_chip s3c2410_eint0_3_chip = {
 static void s3c2410_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
-	struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
+	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
 	unsigned int virq;
 
 	/* the first 4 eints have a simple 1 to 1 mapping */
@@ -297,9 +297,9 @@ static struct irq_chip s3c2412_eint0_3_chip = {
 
 static void s3c2412_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
-	struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned int virq;
 
 	chained_irq_enter(chip, desc);
@@ -357,11 +357,11 @@ static struct irq_chip s3c24xx_eint_chip = {
 	.irq_set_type	= s3c24xx_eint_type,
 };
 
-static inline void s3c24xx_demux_eint(unsigned int irq, struct irq_desc *desc,
+static inline void s3c24xx_demux_eint(struct irq_desc *desc,
 				      u32 offset, u32 range)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c24xx_eint_data *data = irq_get_handler_data(irq);
+	struct s3c24xx_eint_data *data = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_irq_chip(desc);
 	struct samsung_pinctrl_drv_data *d = data->drvdata;
 	unsigned int pend, mask;
 
@@ -375,8 +375,8 @@ static inline void s3c24xx_demux_eint(unsigned int irq, struct irq_desc *desc,
 
 	while (pend) {
 		unsigned int virq;
+		unsigned int irq = __ffs(pend);
 
-		irq = __ffs(pend);
 		pend &= ~(1 << irq);
 		virq = irq_linear_revmap(data->domains[irq], irq - offset);
 		/* Something is really wrong if an unmapped EINT is unmasked */
@@ -390,12 +390,12 @@ static inline void s3c24xx_demux_eint(unsigned int irq, struct irq_desc *desc,
 
 static void s3c24xx_demux_eint4_7(unsigned int irq, struct irq_desc *desc)
 {
-	s3c24xx_demux_eint(irq, desc, 0, 0xf0);
+	s3c24xx_demux_eint(desc, 0, 0xf0);
 }
 
 static void s3c24xx_demux_eint8_23(unsigned int irq, struct irq_desc *desc)
 {
-	s3c24xx_demux_eint(irq, desc, 8, 0xffff00);
+	s3c24xx_demux_eint(desc, 8, 0xffff00);
 }
 
 static irq_flow_handler_t s3c2410_eint_handlers[NUM_EINT_IRQ] = {
diff --git a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
index 7756c1e9e763..0ffe5db216f7 100644
--- a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
+++ b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
@@ -410,8 +410,8 @@ static const struct irq_domain_ops s3c64xx_gpio_irqd_ops = {
 
 static void s3c64xx_eint_gpio_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c64xx_eint_gpio_data *data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct s3c64xx_eint_gpio_data *data = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
 
 	chained_irq_enter(chip, desc);
@@ -600,11 +600,10 @@ static struct irq_chip s3c64xx_eint0_irq_chip = {
 	.irq_set_type	= s3c64xx_eint0_irq_set_type,
 };
 
-static inline void s3c64xx_irq_demux_eint(unsigned int irq,
-					struct irq_desc *desc, u32 range)
+static inline void s3c64xx_irq_demux_eint(struct irq_desc *desc, u32 range)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c64xx_eint0_data *data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct s3c64xx_eint0_data *data = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
 	unsigned int pend, mask;
 
@@ -618,10 +617,9 @@ static inline void s3c64xx_irq_demux_eint(unsigned int irq,
 
 	while (pend) {
 		unsigned int virq;
+		unsigned int irq = fls(pend) - 1;
 
-		irq = fls(pend) - 1;
 		pend &= ~(1 << irq);
-
 		virq = irq_linear_revmap(data->domains[irq], data->pins[irq]);
 		/*
 		 * Something must be really wrong if an unmapped EINT
@@ -637,22 +635,22 @@ static inline void s3c64xx_irq_demux_eint(unsigned int irq,
 
 static void s3c64xx_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xf);
+	s3c64xx_irq_demux_eint(desc, 0xf);
 }
 
 static void s3c64xx_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff0);
+	s3c64xx_irq_demux_eint(desc, 0xff0);
 }
 
 static void s3c64xx_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff000);
+	s3c64xx_irq_demux_eint(desc, 0xff000);
 }
 
 static void s3c64xx_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff00000);
+	s3c64xx_irq_demux_eint(desc, 0xff00000);
 }
 
 static irq_flow_handler_t s3c64xx_eint0_handlers[NUM_EINT0_IRQ] = {
diff --git a/drivers/pinctrl/sirf/pinctrl-sirf.c b/drivers/pinctrl/sirf/pinctrl-sirf.c
index e2efbbae4061..46cafde08ebf 100644
--- a/drivers/pinctrl/sirf/pinctrl-sirf.c
+++ b/drivers/pinctrl/sirf/pinctrl-sirf.c
@@ -552,7 +552,7 @@ static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc)
 	struct sirfsoc_gpio_bank *bank;
 	u32 status, ctrl;
 	int idx = 0;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int i;
 
 	for (i = 0; i < SIRFSOC_GPIO_NO_OF_BANKS; i++) {
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index f8e171b76693..563cec6dc24e 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -711,8 +711,8 @@ static struct irq_chip sunxi_pinctrl_level_irq_chip = {
 
 static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct sunxi_pinctrl *pctl = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct sunxi_pinctrl *pctl = irq_desc_get_handler_data(desc);
 	unsigned long bank, reg, val;
 
 	for (bank = 0; bank < pctl->desc->irq_banks; bank++)
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 07/25] irqchip: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20  9:59   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jason Cooper, Kukjin Kim,
	Krzysztof Kozlowski, Maxime Ripard
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi, linux-arm-kernel, linux-samsung-soc

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/irqchip/exynos-combiner.c   |    4 ++--
 drivers/irqchip/irq-armada-370-xp.c |    2 +-
 drivers/irqchip/irq-dw-apb-ictl.c   |    4 ++--
 drivers/irqchip/irq-gic.c           |    4 ++--
 drivers/irqchip/irq-orion.c         |    2 +-
 drivers/irqchip/irq-sunxi-nmi.c     |    2 +-
 drivers/irqchip/spear-shirq.c       |    2 +-
 7 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/irqchip/exynos-combiner.c b/drivers/irqchip/exynos-combiner.c
index 5945223b73fa..039ceb46fcc0 100644
--- a/drivers/irqchip/exynos-combiner.c
+++ b/drivers/irqchip/exynos-combiner.c
@@ -62,8 +62,8 @@ static void combiner_unmask_irq(struct irq_data *data)
 
 static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct combiner_chip_data *chip_data = irq_get_handler_data(irq);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct combiner_chip_data *chip_data = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq, combiner_irq;
 	unsigned long status;
 
diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c
index daccc8bdbb42..40b5fe99a1d5 100644
--- a/drivers/irqchip/irq-armada-370-xp.c
+++ b/drivers/irqchip/irq-armada-370-xp.c
@@ -451,7 +451,7 @@ static void armada_370_xp_handle_msi_irq(struct pt_regs *r, bool b) {}
 static void armada_370_xp_mpic_handle_cascade_irq(unsigned int irq,
 						  struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned long irqmap, irqn, irqsrc, cpuid;
 	unsigned int cascade_irq;
 
diff --git a/drivers/irqchip/irq-dw-apb-ictl.c b/drivers/irqchip/irq-dw-apb-ictl.c
index 53bb7326a60a..cddcd3b75f00 100644
--- a/drivers/irqchip/irq-dw-apb-ictl.c
+++ b/drivers/irqchip/irq-dw-apb-ictl.c
@@ -28,8 +28,8 @@
 
 static void dw_apb_ictl_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct irq_chip_generic *gc = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct irq_chip_generic *gc = irq_desc_get_handler_data(desc);
 	struct irq_domain *d = gc->private;
 	u32 stat;
 	int n;
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 01999d74bd3a..6c8a5a7fb4a0 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -288,8 +288,8 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
 
 static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct gic_chip_data *chip_data = irq_get_handler_data(irq);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct gic_chip_data *chip_data = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq, gic_irq;
 	unsigned long status;
 
diff --git a/drivers/irqchip/irq-orion.c b/drivers/irqchip/irq-orion.c
index ad0c0f6f1d65..58e034db0e7c 100644
--- a/drivers/irqchip/irq-orion.c
+++ b/drivers/irqchip/irq-orion.c
@@ -109,7 +109,7 @@ IRQCHIP_DECLARE(orion_intc, "marvell,orion-intc", orion_irq_init);
 
 static void orion_bridge_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_domain *d = irq_get_handler_data(irq);
+	struct irq_domain *d = irq_desc_get_handler_data(desc);
 
 	struct irq_chip_generic *gc = irq_get_domain_generic_chip(d, 0);
 	u32 stat = readl_relaxed(gc->reg_base + ORION_BRIDGE_IRQ_CAUSE) &
diff --git a/drivers/irqchip/irq-sunxi-nmi.c b/drivers/irqchip/irq-sunxi-nmi.c
index 4a9ce5b50c5b..2eaa9d9df241 100644
--- a/drivers/irqchip/irq-sunxi-nmi.c
+++ b/drivers/irqchip/irq-sunxi-nmi.c
@@ -61,7 +61,7 @@ static inline u32 sunxi_sc_nmi_read(struct irq_chip_generic *gc, u32 off)
 static void sunxi_sc_nmi_handle_irq(unsigned int irq, struct irq_desc *desc)
 {
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int virq = irq_find_mapping(domain, 0);
 
 	chained_irq_enter(chip, desc);
diff --git a/drivers/irqchip/spear-shirq.c b/drivers/irqchip/spear-shirq.c
index 9c145a7cb056..fb68ee9c0424 100644
--- a/drivers/irqchip/spear-shirq.c
+++ b/drivers/irqchip/spear-shirq.c
@@ -185,7 +185,7 @@ static struct spear_shirq *spear320_shirq_blocks[] = {
 
 static void shirq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct spear_shirq *shirq = irq_get_handler_data(irq);
+	struct spear_shirq *shirq = irq_desc_get_handler_data(desc);
 	u32 pend;
 
 	pend = readl(shirq->base + shirq->status_reg) & shirq->mask;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 07/25] irqchip: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-05-20  9:59   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: linux-arm-kernel

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/irqchip/exynos-combiner.c   |    4 ++--
 drivers/irqchip/irq-armada-370-xp.c |    2 +-
 drivers/irqchip/irq-dw-apb-ictl.c   |    4 ++--
 drivers/irqchip/irq-gic.c           |    4 ++--
 drivers/irqchip/irq-orion.c         |    2 +-
 drivers/irqchip/irq-sunxi-nmi.c     |    2 +-
 drivers/irqchip/spear-shirq.c       |    2 +-
 7 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/irqchip/exynos-combiner.c b/drivers/irqchip/exynos-combiner.c
index 5945223b73fa..039ceb46fcc0 100644
--- a/drivers/irqchip/exynos-combiner.c
+++ b/drivers/irqchip/exynos-combiner.c
@@ -62,8 +62,8 @@ static void combiner_unmask_irq(struct irq_data *data)
 
 static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct combiner_chip_data *chip_data = irq_get_handler_data(irq);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct combiner_chip_data *chip_data = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq, combiner_irq;
 	unsigned long status;
 
diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c
index daccc8bdbb42..40b5fe99a1d5 100644
--- a/drivers/irqchip/irq-armada-370-xp.c
+++ b/drivers/irqchip/irq-armada-370-xp.c
@@ -451,7 +451,7 @@ static void armada_370_xp_handle_msi_irq(struct pt_regs *r, bool b) {}
 static void armada_370_xp_mpic_handle_cascade_irq(unsigned int irq,
 						  struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned long irqmap, irqn, irqsrc, cpuid;
 	unsigned int cascade_irq;
 
diff --git a/drivers/irqchip/irq-dw-apb-ictl.c b/drivers/irqchip/irq-dw-apb-ictl.c
index 53bb7326a60a..cddcd3b75f00 100644
--- a/drivers/irqchip/irq-dw-apb-ictl.c
+++ b/drivers/irqchip/irq-dw-apb-ictl.c
@@ -28,8 +28,8 @@
 
 static void dw_apb_ictl_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct irq_chip_generic *gc = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct irq_chip_generic *gc = irq_desc_get_handler_data(desc);
 	struct irq_domain *d = gc->private;
 	u32 stat;
 	int n;
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 01999d74bd3a..6c8a5a7fb4a0 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -288,8 +288,8 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
 
 static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct gic_chip_data *chip_data = irq_get_handler_data(irq);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct gic_chip_data *chip_data = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq, gic_irq;
 	unsigned long status;
 
diff --git a/drivers/irqchip/irq-orion.c b/drivers/irqchip/irq-orion.c
index ad0c0f6f1d65..58e034db0e7c 100644
--- a/drivers/irqchip/irq-orion.c
+++ b/drivers/irqchip/irq-orion.c
@@ -109,7 +109,7 @@ IRQCHIP_DECLARE(orion_intc, "marvell,orion-intc", orion_irq_init);
 
 static void orion_bridge_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_domain *d = irq_get_handler_data(irq);
+	struct irq_domain *d = irq_desc_get_handler_data(desc);
 
 	struct irq_chip_generic *gc = irq_get_domain_generic_chip(d, 0);
 	u32 stat = readl_relaxed(gc->reg_base + ORION_BRIDGE_IRQ_CAUSE) &
diff --git a/drivers/irqchip/irq-sunxi-nmi.c b/drivers/irqchip/irq-sunxi-nmi.c
index 4a9ce5b50c5b..2eaa9d9df241 100644
--- a/drivers/irqchip/irq-sunxi-nmi.c
+++ b/drivers/irqchip/irq-sunxi-nmi.c
@@ -61,7 +61,7 @@ static inline u32 sunxi_sc_nmi_read(struct irq_chip_generic *gc, u32 off)
 static void sunxi_sc_nmi_handle_irq(unsigned int irq, struct irq_desc *desc)
 {
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int virq = irq_find_mapping(domain, 0);
 
 	chained_irq_enter(chip, desc);
diff --git a/drivers/irqchip/spear-shirq.c b/drivers/irqchip/spear-shirq.c
index 9c145a7cb056..fb68ee9c0424 100644
--- a/drivers/irqchip/spear-shirq.c
+++ b/drivers/irqchip/spear-shirq.c
@@ -185,7 +185,7 @@ static struct spear_shirq *spear320_shirq_blocks[] = {
 
 static void shirq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct spear_shirq *shirq = irq_get_handler_data(irq);
+	struct spear_shirq *shirq = irq_desc_get_handler_data(desc);
 	u32 pend;
 
 	pend = readl(shirq->base + shirq->status_reg) & shirq->mask;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 08/25] mfd: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` Jiang Liu
                   ` (7 preceding siblings ...)
  (?)
@ 2015-05-20  9:59 ` Jiang Liu
  2015-05-20 10:44     ` Lee Jones
  -1 siblings, 1 reply; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Samuel Ortiz, Lee Jones,
	Tony Lindgren
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi, linux-omap

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Do the same thing to avoid pattern "irq_get_chip_data(data->irq)".

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/mfd/ezx-pcap.c    |    2 +-
 drivers/mfd/max8997-irq.c |    8 ++++----
 drivers/mfd/mt6397-core.c |    8 ++++----
 drivers/mfd/t7l66xb.c     |    2 +-
 drivers/mfd/tc6393xb.c    |    2 +-
 drivers/mfd/twl6030-irq.c |    2 +-
 6 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
index 5991faddd3c6..e5f4ffaa5414 100644
--- a/drivers/mfd/ezx-pcap.c
+++ b/drivers/mfd/ezx-pcap.c
@@ -207,7 +207,7 @@ static void pcap_isr_work(struct work_struct *work)
 
 static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct pcap_chip *pcap = irq_get_handler_data(irq);
+	struct pcap_chip *pcap = irq_desc_get_handler_data(desc);
 
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
 	queue_work(pcap->workqueue, &pcap->isr_work);
diff --git a/drivers/mfd/max8997-irq.c b/drivers/mfd/max8997-irq.c
index 43fa61413e93..381738b477f8 100644
--- a/drivers/mfd/max8997-irq.c
+++ b/drivers/mfd/max8997-irq.c
@@ -113,14 +113,14 @@ static const struct max8997_irq_data max8997_irqs[] = {
 
 static void max8997_irq_lock(struct irq_data *data)
 {
-	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
+	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
 
 	mutex_lock(&max8997->irqlock);
 }
 
 static void max8997_irq_sync_unlock(struct irq_data *data)
 {
-	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
+	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
 	int i;
 
 	for (i = 0; i < MAX8997_IRQ_GROUP_NR; i++) {
@@ -148,7 +148,7 @@ irq_to_max8997_irq(struct max8997_dev *max8997, int irq)
 
 static void max8997_irq_mask(struct irq_data *data)
 {
-	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
+	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
 	const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997,
 								data->irq);
 
@@ -157,7 +157,7 @@ static void max8997_irq_mask(struct irq_data *data)
 
 static void max8997_irq_unmask(struct irq_data *data)
 {
-	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
+	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
 	const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997,
 								data->irq);
 
diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
index 09bc7804952a..dab325b9d0df 100644
--- a/drivers/mfd/mt6397-core.c
+++ b/drivers/mfd/mt6397-core.c
@@ -39,14 +39,14 @@ static const struct mfd_cell mt6397_devs[] = {
 
 static void mt6397_irq_lock(struct irq_data *data)
 {
-	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
+	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
 
 	mutex_lock(&mt6397->irqlock);
 }
 
 static void mt6397_irq_sync_unlock(struct irq_data *data)
 {
-	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
+	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
 
 	regmap_write(mt6397->regmap, MT6397_INT_CON0, mt6397->irq_masks_cur[0]);
 	regmap_write(mt6397->regmap, MT6397_INT_CON1, mt6397->irq_masks_cur[1]);
@@ -56,7 +56,7 @@ static void mt6397_irq_sync_unlock(struct irq_data *data)
 
 static void mt6397_irq_disable(struct irq_data *data)
 {
-	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
+	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
 	int shift = data->hwirq & 0xf;
 	int reg = data->hwirq >> 4;
 
@@ -65,7 +65,7 @@ static void mt6397_irq_disable(struct irq_data *data)
 
 static void mt6397_irq_enable(struct irq_data *data)
 {
-	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
+	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
 	int shift = data->hwirq & 0xf;
 	int reg = data->hwirq >> 4;
 
diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c
index c09fb5dccd50..b752ca2be549 100644
--- a/drivers/mfd/t7l66xb.c
+++ b/drivers/mfd/t7l66xb.c
@@ -187,7 +187,7 @@ static struct mfd_cell t7l66xb_cells[] = {
 /* Handle the T7L66XB interrupt mux */
 static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct t7l66xb *t7l66xb = irq_get_handler_data(irq);
+	struct t7l66xb *t7l66xb = irq_desc_get_handler_data(desc);
 	unsigned int isr;
 	unsigned int i, irq_base;
 
diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c
index 63458b39a97d..d21253a51cff 100644
--- a/drivers/mfd/tc6393xb.c
+++ b/drivers/mfd/tc6393xb.c
@@ -525,7 +525,7 @@ static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base)
 static void
 tc6393xb_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct tc6393xb *tc6393xb = irq_get_handler_data(irq);
+	struct tc6393xb *tc6393xb = irq_desc_get_handler_data(desc);
 	unsigned int isr;
 	unsigned int i, irq_base;
 
diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c
index 2807e1a95663..5b8cd5cd42cf 100644
--- a/drivers/mfd/twl6030-irq.c
+++ b/drivers/mfd/twl6030-irq.c
@@ -231,7 +231,7 @@ static irqreturn_t twl6030_irq_thread(int irq, void *data)
 
 static int twl6030_irq_set_wake(struct irq_data *d, unsigned int on)
 {
-	struct twl6030_irq *pdata = irq_get_chip_data(d->irq);
+	struct twl6030_irq *pdata = irq_data_get_irq_chip_data(d);
 
 	if (on)
 		atomic_inc(&pdata->wakeirqs);
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 09/25] ipu: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` Jiang Liu
                   ` (8 preceding siblings ...)
  (?)
@ 2015-05-20  9:59 ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Dan Williams, Vinod Koul, Jiang Liu,
	Philipp Zabel, Steve Longerbeam
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, dmaengine

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Do the same thing to avoid pattern "irq_get_chip_data(data->irq)".

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/dma/ipu/ipu_irq.c       |    2 +-
 drivers/gpu/ipu-v3/ipu-common.c |    4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/dma/ipu/ipu_irq.c b/drivers/dma/ipu/ipu_irq.c
index 2e284a4438bc..0e12af37fe2f 100644
--- a/drivers/dma/ipu/ipu_irq.c
+++ b/drivers/dma/ipu/ipu_irq.c
@@ -268,7 +268,7 @@ int ipu_irq_unmap(unsigned int source)
 /* Chained IRQ handler for IPU error interrupt */
 static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
 {
-	struct ipu *ipu = irq_get_handler_data(irq);
+	struct ipu *ipu = irq_desc_get_handler_data(desc);
 	u32 status;
 	int i, line;
 
diff --git a/drivers/gpu/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
index 67bab5c36056..7022825b7a2c 100644
--- a/drivers/gpu/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -915,8 +915,8 @@ static void ipu_irq_handle(struct ipu_soc *ipu, const int *regs, int num_regs)
 static void ipu_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	const int int_reg[] = { 0, 1, 2, 3, 10, 11, 12, 13, 14};
-	struct irq_chip *chip = irq_get_chip(irq);
 
 	chained_irq_enter(chip, desc);
 
@@ -928,8 +928,8 @@ static void ipu_irq_handler(unsigned int irq, struct irq_desc *desc)
 static void ipu_err_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	const int int_reg[] = { 4, 5, 8, 9};
-	struct irq_chip *chip = irq_get_chip(irq);
 
 	chained_irq_enter(chip, desc);
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 10/25] sh: intc: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20  9:59   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Simon Horman, Magnus Damm,
	Jiang Liu
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-sh

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Also replace generic_handle_irq with generic_handle_irq_desc() to avoid
looking up irq_desc again.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/sh/intc/core.c |    2 +-
 drivers/sh/intc/virq.c |   14 ++++++++------
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
index 81f22980b2de..e4ca964ca840 100644
--- a/drivers/sh/intc/core.c
+++ b/drivers/sh/intc/core.c
@@ -67,7 +67,7 @@ void intc_set_prio_level(unsigned int irq, unsigned int level)
 
 static void intc_redirect_irq(unsigned int irq, struct irq_desc *desc)
 {
-	generic_handle_irq((unsigned int)irq_get_handler_data(irq));
+	generic_handle_irq_desc(irq, desc);
 }
 
 static void __init intc_register_irq(struct intc_desc *desc,
diff --git a/drivers/sh/intc/virq.c b/drivers/sh/intc/virq.c
index 3dbc21696924..8083882a91c0 100644
--- a/drivers/sh/intc/virq.c
+++ b/drivers/sh/intc/virq.c
@@ -109,7 +109,7 @@ static int add_virq_to_pirq(unsigned int irq, unsigned int virq)
 
 static void intc_virq_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_data *data = irq_get_irq_data(irq);
+	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	struct intc_virq_list *entry, *vlist = irq_data_get_irq_handler_data(data);
 	struct intc_desc_int *d = get_intc_desc(irq);
@@ -118,12 +118,14 @@ static void intc_virq_handler(unsigned int irq, struct irq_desc *desc)
 
 	for_each_virq(entry, vlist) {
 		unsigned long addr, handle;
+		struct irq_desc *vdesc = irq_to_desc(entry->irq);
 
-		handle = (unsigned long)irq_get_handler_data(entry->irq);
-		addr = INTC_REG(d, _INTC_ADDR_E(handle), 0);
-
-		if (intc_reg_fns[_INTC_FN(handle)](addr, handle, 0))
-			generic_handle_irq(entry->irq);
+		if (vdesc) {
+			handle = (unsigned long)irq_desc_get_handler_data(vdesc);
+			addr = INTC_REG(d, _INTC_ADDR_E(handle), 0);
+			if (intc_reg_fns[_INTC_FN(handle)](addr, handle, 0))
+				generic_handle_irq_desc(entry->irq, vdesc);
+		}
 	}
 
 	chip->irq_unmask(data);
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 10/25] sh: intc: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-05-20  9:59   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Simon Horman, Magnus Damm,
	Jiang Liu
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-sh

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Also replace generic_handle_irq with generic_handle_irq_desc() to avoid
looking up irq_desc again.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/sh/intc/core.c |    2 +-
 drivers/sh/intc/virq.c |   14 ++++++++------
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
index 81f22980b2de..e4ca964ca840 100644
--- a/drivers/sh/intc/core.c
+++ b/drivers/sh/intc/core.c
@@ -67,7 +67,7 @@ void intc_set_prio_level(unsigned int irq, unsigned int level)
 
 static void intc_redirect_irq(unsigned int irq, struct irq_desc *desc)
 {
-	generic_handle_irq((unsigned int)irq_get_handler_data(irq));
+	generic_handle_irq_desc(irq, desc);
 }
 
 static void __init intc_register_irq(struct intc_desc *desc,
diff --git a/drivers/sh/intc/virq.c b/drivers/sh/intc/virq.c
index 3dbc21696924..8083882a91c0 100644
--- a/drivers/sh/intc/virq.c
+++ b/drivers/sh/intc/virq.c
@@ -109,7 +109,7 @@ static int add_virq_to_pirq(unsigned int irq, unsigned int virq)
 
 static void intc_virq_handler(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_data *data = irq_get_irq_data(irq);
+	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	struct intc_virq_list *entry, *vlist = irq_data_get_irq_handler_data(data);
 	struct intc_desc_int *d = get_intc_desc(irq);
@@ -118,12 +118,14 @@ static void intc_virq_handler(unsigned int irq, struct irq_desc *desc)
 
 	for_each_virq(entry, vlist) {
 		unsigned long addr, handle;
+		struct irq_desc *vdesc = irq_to_desc(entry->irq);
 
-		handle = (unsigned long)irq_get_handler_data(entry->irq);
-		addr = INTC_REG(d, _INTC_ADDR_E(handle), 0);
-
-		if (intc_reg_fns[_INTC_FN(handle)](addr, handle, 0))
-			generic_handle_irq(entry->irq);
+		if (vdesc) {
+			handle = (unsigned long)irq_desc_get_handler_data(vdesc);
+			addr = INTC_REG(d, _INTC_ADDR_E(handle), 0);
+			if (intc_reg_fns[_INTC_FN(handle)](addr, handle, 0))
+				generic_handle_irq_desc(entry->irq, vdesc);
+		}
 	}
 
 	chip->irq_unmask(data);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 11/25] keystone, irq: Use irq_data_get_xxx() to avoid redundant lookup of irq_data
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20  9:59   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Murali Karicheri
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi, linux-arm-kernel

Use irq_data_get_xxx() to avoid redundant lookup of irq_data while we
already have a pointer to corresponding irq_data.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/pci/host/pci-keystone-dw.c |   15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/drivers/pci/host/pci-keystone-dw.c b/drivers/pci/host/pci-keystone-dw.c
index f34892e0edb4..e42d077039d3 100644
--- a/drivers/pci/host/pci-keystone-dw.c
+++ b/drivers/pci/host/pci-keystone-dw.c
@@ -104,14 +104,13 @@ static void ks_dw_pcie_msi_irq_ack(struct irq_data *d)
 {
 	u32 offset, reg_offset, bit_pos;
 	struct keystone_pcie *ks_pcie;
-	unsigned int irq = d->irq;
 	struct msi_desc *msi;
 	struct pcie_port *pp;
 
-	msi = irq_get_msi_desc(irq);
+	msi = irq_data_get_msi_desc(d);
 	pp = sys_to_pcie(msi->dev->bus->sysdata);
 	ks_pcie = to_keystone_pcie(pp);
-	offset = irq - irq_linear_revmap(pp->irq_domain, 0);
+	offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
 	update_reg_offset_bit_pos(offset, &reg_offset, &bit_pos);
 
 	writel(BIT(bit_pos),
@@ -142,15 +141,14 @@ void ks_dw_pcie_msi_clear_irq(struct pcie_port *pp, int irq)
 static void ks_dw_pcie_msi_irq_mask(struct irq_data *d)
 {
 	struct keystone_pcie *ks_pcie;
-	unsigned int irq = d->irq;
 	struct msi_desc *msi;
 	struct pcie_port *pp;
 	u32 offset;
 
-	msi = irq_get_msi_desc(irq);
+	msi = irq_data_get_msi_desc(d);
 	pp = sys_to_pcie(msi->dev->bus->sysdata);
 	ks_pcie = to_keystone_pcie(pp);
-	offset = irq - irq_linear_revmap(pp->irq_domain, 0);
+	offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
 
 	/* Mask the end point if PVM implemented */
 	if (IS_ENABLED(CONFIG_PCI_MSI)) {
@@ -164,15 +162,14 @@ static void ks_dw_pcie_msi_irq_mask(struct irq_data *d)
 static void ks_dw_pcie_msi_irq_unmask(struct irq_data *d)
 {
 	struct keystone_pcie *ks_pcie;
-	unsigned int irq = d->irq;
 	struct msi_desc *msi;
 	struct pcie_port *pp;
 	u32 offset;
 
-	msi = irq_get_msi_desc(irq);
+	msi = irq_data_get_msi_desc(d);
 	pp = sys_to_pcie(msi->dev->bus->sysdata);
 	ks_pcie = to_keystone_pcie(pp);
-	offset = irq - irq_linear_revmap(pp->irq_domain, 0);
+	offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
 
 	/* Mask the end point if PVM implemented */
 	if (IS_ENABLED(CONFIG_PCI_MSI)) {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 11/25] keystone, irq: Use irq_data_get_xxx() to avoid redundant lookup of irq_data
@ 2015-05-20  9:59   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20  9:59 UTC (permalink / raw)
  To: linux-arm-kernel

Use irq_data_get_xxx() to avoid redundant lookup of irq_data while we
already have a pointer to corresponding irq_data.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/pci/host/pci-keystone-dw.c |   15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/drivers/pci/host/pci-keystone-dw.c b/drivers/pci/host/pci-keystone-dw.c
index f34892e0edb4..e42d077039d3 100644
--- a/drivers/pci/host/pci-keystone-dw.c
+++ b/drivers/pci/host/pci-keystone-dw.c
@@ -104,14 +104,13 @@ static void ks_dw_pcie_msi_irq_ack(struct irq_data *d)
 {
 	u32 offset, reg_offset, bit_pos;
 	struct keystone_pcie *ks_pcie;
-	unsigned int irq = d->irq;
 	struct msi_desc *msi;
 	struct pcie_port *pp;
 
-	msi = irq_get_msi_desc(irq);
+	msi = irq_data_get_msi_desc(d);
 	pp = sys_to_pcie(msi->dev->bus->sysdata);
 	ks_pcie = to_keystone_pcie(pp);
-	offset = irq - irq_linear_revmap(pp->irq_domain, 0);
+	offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
 	update_reg_offset_bit_pos(offset, &reg_offset, &bit_pos);
 
 	writel(BIT(bit_pos),
@@ -142,15 +141,14 @@ void ks_dw_pcie_msi_clear_irq(struct pcie_port *pp, int irq)
 static void ks_dw_pcie_msi_irq_mask(struct irq_data *d)
 {
 	struct keystone_pcie *ks_pcie;
-	unsigned int irq = d->irq;
 	struct msi_desc *msi;
 	struct pcie_port *pp;
 	u32 offset;
 
-	msi = irq_get_msi_desc(irq);
+	msi = irq_data_get_msi_desc(d);
 	pp = sys_to_pcie(msi->dev->bus->sysdata);
 	ks_pcie = to_keystone_pcie(pp);
-	offset = irq - irq_linear_revmap(pp->irq_domain, 0);
+	offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
 
 	/* Mask the end point if PVM implemented */
 	if (IS_ENABLED(CONFIG_PCI_MSI)) {
@@ -164,15 +162,14 @@ static void ks_dw_pcie_msi_irq_mask(struct irq_data *d)
 static void ks_dw_pcie_msi_irq_unmask(struct irq_data *d)
 {
 	struct keystone_pcie *ks_pcie;
-	unsigned int irq = d->irq;
 	struct msi_desc *msi;
 	struct pcie_port *pp;
 	u32 offset;
 
-	msi = irq_get_msi_desc(irq);
+	msi = irq_data_get_msi_desc(d);
 	pp = sys_to_pcie(msi->dev->bus->sysdata);
 	ks_pcie = to_keystone_pcie(pp);
-	offset = irq - irq_linear_revmap(pp->irq_domain, 0);
+	offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
 
 	/* Mask the end point if PVM implemented */
 	if (IS_ENABLED(CONFIG_PCI_MSI)) {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 12/25] spmi: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` Jiang Liu
                   ` (11 preceding siblings ...)
  (?)
@ 2015-05-20 10:00 ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Gilad Avidov
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/spmi/spmi-pmic-arb.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/spmi/spmi-pmic-arb.c b/drivers/spmi/spmi-pmic-arb.c
index d7119db49cfe..b32cb0a813cb 100644
--- a/drivers/spmi/spmi-pmic-arb.c
+++ b/drivers/spmi/spmi-pmic-arb.c
@@ -453,8 +453,8 @@ static void periph_interrupt(struct spmi_pmic_arb_dev *pa, u8 apid)
 
 static void pmic_arb_chained_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct spmi_pmic_arb_dev *pa = irq_get_handler_data(irq);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct spmi_pmic_arb_dev *pa = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	void __iomem *intr = pa->intr;
 	int first = pa->min_apid >> 5;
 	int last = pa->max_apid >> 5;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 13/25] genirq: Kill the parameter 'irq' of kstat_incr_irqs_this_cpu()
  2015-05-20  9:59 ` Jiang Liu
                   ` (12 preceding siblings ...)
  (?)
@ 2015-05-20 10:00 ` Jiang Liu
  2015-05-20 15:23   ` Thomas Gleixner
  -1 siblings, 1 reply; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi

The first parameter 'irq' is never used by kstat_incr_irqs_this_cpu(),
so kill it. So one step further to kill the first parameter 'irq'
of irq_flow_handler_t.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 kernel/irq/chip.c      |   16 ++++++++--------
 kernel/irq/handle.c    |    2 +-
 kernel/irq/internals.h |    2 +-
 kernel/irq/irqdesc.c   |    2 +-
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index d7a50974b77d..fada8daa6b19 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -315,7 +315,7 @@ void handle_nested_irq(unsigned int irq)
 	raw_spin_lock_irq(&desc->lock);
 
 	desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING);
-	kstat_incr_irqs_this_cpu(irq, desc);
+	kstat_incr_irqs_this_cpu(desc);
 
 	action = desc->action;
 	if (unlikely(!action || irqd_irq_disabled(&desc->irq_data))) {
@@ -391,7 +391,7 @@ handle_simple_irq(unsigned int irq, struct irq_desc *desc)
 		goto out_unlock;
 
 	desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING);
-	kstat_incr_irqs_this_cpu(irq, desc);
+	kstat_incr_irqs_this_cpu(desc);
 
 	if (unlikely(!desc->action || irqd_irq_disabled(&desc->irq_data))) {
 		desc->istate |= IRQS_PENDING;
@@ -443,7 +443,7 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc)
 		goto out_unlock;
 
 	desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING);
-	kstat_incr_irqs_this_cpu(irq, desc);
+	kstat_incr_irqs_this_cpu(desc);
 
 	/*
 	 * If its disabled or no action available
@@ -515,7 +515,7 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
 		goto out;
 
 	desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING);
-	kstat_incr_irqs_this_cpu(irq, desc);
+	kstat_incr_irqs_this_cpu(desc);
 
 	/*
 	 * If its disabled or no action available
@@ -583,7 +583,7 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc)
 		goto out_unlock;
 	}
 
-	kstat_incr_irqs_this_cpu(irq, desc);
+	kstat_incr_irqs_this_cpu(desc);
 
 	/* Start handling the irq */
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
@@ -646,7 +646,7 @@ void handle_edge_eoi_irq(unsigned int irq, struct irq_desc *desc)
 		goto out_eoi;
 	}
 
-	kstat_incr_irqs_this_cpu(irq, desc);
+	kstat_incr_irqs_this_cpu(desc);
 
 	do {
 		if (unlikely(!desc->action))
@@ -675,7 +675,7 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
-	kstat_incr_irqs_this_cpu(irq, desc);
+	kstat_incr_irqs_this_cpu(desc);
 
 	if (chip->irq_ack)
 		chip->irq_ack(&desc->irq_data);
@@ -705,7 +705,7 @@ void handle_percpu_devid_irq(unsigned int irq, struct irq_desc *desc)
 	void *dev_id = raw_cpu_ptr(action->percpu_dev_id);
 	irqreturn_t res;
 
-	kstat_incr_irqs_this_cpu(irq, desc);
+	kstat_incr_irqs_this_cpu(desc);
 
 	if (chip->irq_ack)
 		chip->irq_ack(&desc->irq_data);
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index 635480270858..4d37b96343e9 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -30,7 +30,7 @@
 void handle_bad_irq(unsigned int irq, struct irq_desc *desc)
 {
 	print_irq_desc(irq, desc);
-	kstat_incr_irqs_this_cpu(irq, desc);
+	kstat_incr_irqs_this_cpu(desc);
 	ack_bad_irq(irq);
 }
 
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
index d82a77d39aeb..ab675f282291 100644
--- a/kernel/irq/internals.h
+++ b/kernel/irq/internals.h
@@ -193,7 +193,7 @@ static inline bool irqd_has_set(struct irq_data *d, unsigned int mask)
 	return __irqd_to_state(d) & mask;
 }
 
-static inline void kstat_incr_irqs_this_cpu(unsigned int irq, struct irq_desc *desc)
+static inline void kstat_incr_irqs_this_cpu(struct irq_desc *desc)
 {
 	__this_cpu_inc(*desc->kstat_irqs);
 	__this_cpu_inc(kstat.irqs_sum);
diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c
index 358f620c035a..500e6fd11d78 100644
--- a/kernel/irq/irqdesc.c
+++ b/kernel/irq/irqdesc.c
@@ -586,7 +586,7 @@ int irq_set_percpu_devid(unsigned int irq)
 
 void kstat_incr_irq_this_cpu(unsigned int irq)
 {
-	kstat_incr_irqs_this_cpu(irq, irq_to_desc(irq));
+	kstat_incr_irqs_this_cpu(irq_to_desc(irq));
 }
 
 /**
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
                   ` (13 preceding siblings ...)
  (?)
@ 2015-05-20 10:00 ` Jiang Liu
  2015-05-20 15:25   ` Thomas Gleixner
  -1 siblings, 1 reply; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jiang Liu, Jason Cooper,
	Kevin Cernekee, Arnd Bergmann, Marc Zyngier
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 include/linux/irq.h        |   16 ++++++++--------
 include/linux/irqdesc.h    |    9 +++++++--
 include/linux/irqhandler.h |    2 +-
 kernel/irq/chip.c          |   22 ++++++++--------------
 kernel/irq/handle.c        |    4 ++--
 kernel/irq/irqdesc.c       |    2 +-
 6 files changed, 27 insertions(+), 28 deletions(-)

diff --git a/include/linux/irq.h b/include/linux/irq.h
index 657ccd03f94d..e843d31c2e68 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -458,14 +458,14 @@ static inline int irq_set_parent(int irq, int parent_irq)
  * Built-in IRQ handlers for various IRQ types,
  * callable via desc->handle_irq()
  */
-extern void handle_level_irq(unsigned int irq, struct irq_desc *desc);
-extern void handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc);
-extern void handle_edge_irq(unsigned int irq, struct irq_desc *desc);
-extern void handle_edge_eoi_irq(unsigned int irq, struct irq_desc *desc);
-extern void handle_simple_irq(unsigned int irq, struct irq_desc *desc);
-extern void handle_percpu_irq(unsigned int irq, struct irq_desc *desc);
-extern void handle_percpu_devid_irq(unsigned int irq, struct irq_desc *desc);
-extern void handle_bad_irq(unsigned int irq, struct irq_desc *desc);
+extern void handle_level_irq(struct irq_desc *desc);
+extern void handle_fasteoi_irq(struct irq_desc *desc);
+extern void handle_edge_irq(struct irq_desc *desc);
+extern void handle_edge_eoi_irq(struct irq_desc *desc);
+extern void handle_simple_irq(struct irq_desc *desc);
+extern void handle_percpu_irq(struct irq_desc *desc);
+extern void handle_percpu_devid_irq(struct irq_desc *desc);
+extern void handle_bad_irq(struct irq_desc *desc);
 extern void handle_nested_irq(unsigned int irq);
 
 extern int irq_chip_compose_msi_msg(struct irq_data *data, struct msi_msg *msg);
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
index 8f649e174ed1..90b1e51a46c3 100644
--- a/include/linux/irqdesc.h
+++ b/include/linux/irqdesc.h
@@ -99,6 +99,11 @@ static inline struct irq_desc *irq_data_to_desc(struct irq_data *data)
 	return container_of(data->common, struct irq_desc, irq_common_data);
 }
 
+static inline unsigned int irq_desc_get_irq(struct irq_desc *desc)
+{
+	return desc->irq_data.irq;
+}
+
 static inline struct irq_data *irq_desc_get_irq_data(struct irq_desc *desc)
 {
 	return &desc->irq_data;
@@ -130,9 +135,9 @@ static inline struct msi_desc *irq_desc_get_msi_desc(struct irq_desc *desc)
  * irqchip-style controller then we call the ->handle_irq() handler,
  * and it calls __do_IRQ() if it's attached to an irqtype-style controller.
  */
-static inline void generic_handle_irq_desc(unsigned int irq, struct irq_desc *desc)
+static inline void generic_handle_irq_desc(struct irq_desc *desc)
 {
-	desc->handle_irq(irq, desc);
+	desc->handle_irq(desc);
 }
 
 int generic_handle_irq(unsigned int irq);
diff --git a/include/linux/irqhandler.h b/include/linux/irqhandler.h
index 62d543004197..661bed0ed1f3 100644
--- a/include/linux/irqhandler.h
+++ b/include/linux/irqhandler.h
@@ -8,7 +8,7 @@
 
 struct irq_desc;
 struct irq_data;
-typedef	void (*irq_flow_handler_t)(unsigned int irq, struct irq_desc *desc);
+typedef	void (*irq_flow_handler_t)(struct irq_desc *desc);
 typedef	void (*irq_preflow_handler_t)(struct irq_data *data);
 
 #endif
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index fada8daa6b19..66494babfcdd 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -372,7 +372,6 @@ static bool irq_may_run(struct irq_desc *desc)
 
 /**
  *	handle_simple_irq - Simple and software-decoded IRQs.
- *	@irq:	the interrupt number
  *	@desc:	the interrupt description structure for this irq
  *
  *	Simple interrupts are either sent from a demultiplexing interrupt
@@ -383,7 +382,7 @@ static bool irq_may_run(struct irq_desc *desc)
  *	unmask issues if necessary.
  */
 void
-handle_simple_irq(unsigned int irq, struct irq_desc *desc)
+handle_simple_irq(struct irq_desc *desc)
 {
 	raw_spin_lock(&desc->lock);
 
@@ -425,7 +424,6 @@ static void cond_unmask_irq(struct irq_desc *desc)
 
 /**
  *	handle_level_irq - Level type irq handler
- *	@irq:	the interrupt number
  *	@desc:	the interrupt description structure for this irq
  *
  *	Level type interrupts are active as long as the hardware line has
@@ -434,7 +432,7 @@ static void cond_unmask_irq(struct irq_desc *desc)
  *	interrupt line is back to inactive.
  */
 void
-handle_level_irq(unsigned int irq, struct irq_desc *desc)
+handle_level_irq(struct irq_desc *desc)
 {
 	raw_spin_lock(&desc->lock);
 	mask_ack_irq(desc);
@@ -496,7 +494,6 @@ static void cond_unmask_eoi_irq(struct irq_desc *desc, struct irq_chip *chip)
 
 /**
  *	handle_fasteoi_irq - irq handler for transparent controllers
- *	@irq:	the interrupt number
  *	@desc:	the interrupt description structure for this irq
  *
  *	Only a single callback will be issued to the chip: an ->eoi()
@@ -505,7 +502,7 @@ static void cond_unmask_eoi_irq(struct irq_desc *desc, struct irq_chip *chip)
  *	details in hardware, transparently.
  */
 void
-handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
+handle_fasteoi_irq(struct irq_desc *desc)
 {
 	struct irq_chip *chip = desc->irq_data.chip;
 
@@ -546,7 +543,6 @@ EXPORT_SYMBOL_GPL(handle_fasteoi_irq);
 
 /**
  *	handle_edge_irq - edge type IRQ handler
- *	@irq:	the interrupt number
  *	@desc:	the interrupt description structure for this irq
  *
  *	Interrupt occures on the falling and/or rising edge of a hardware
@@ -561,7 +557,7 @@ EXPORT_SYMBOL_GPL(handle_fasteoi_irq);
  *	loop is left.
  */
 void
-handle_edge_irq(unsigned int irq, struct irq_desc *desc)
+handle_edge_irq(struct irq_desc *desc)
 {
 	raw_spin_lock(&desc->lock);
 
@@ -618,13 +614,12 @@ EXPORT_SYMBOL(handle_edge_irq);
 #ifdef CONFIG_IRQ_EDGE_EOI_HANDLER
 /**
  *	handle_edge_eoi_irq - edge eoi type IRQ handler
- *	@irq:	the interrupt number
  *	@desc:	the interrupt description structure for this irq
  *
  * Similar as the above handle_edge_irq, but using eoi and w/o the
  * mask/unmask logic.
  */
-void handle_edge_eoi_irq(unsigned int irq, struct irq_desc *desc)
+void handle_edge_eoi_irq(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
@@ -665,13 +660,12 @@ out_eoi:
 
 /**
  *	handle_percpu_irq - Per CPU local irq handler
- *	@irq:	the interrupt number
  *	@desc:	the interrupt description structure for this irq
  *
  *	Per CPU interrupts on SMP machines without locking requirements
  */
 void
-handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
+handle_percpu_irq(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
@@ -688,7 +682,6 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
 
 /**
  * handle_percpu_devid_irq - Per CPU local irq handler with per cpu dev ids
- * @irq:	the interrupt number
  * @desc:	the interrupt description structure for this irq
  *
  * Per CPU interrupts on SMP machines without locking requirements. Same as
@@ -698,11 +691,12 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
  * contain the real device id for the cpu on which this handler is
  * called
  */
-void handle_percpu_devid_irq(unsigned int irq, struct irq_desc *desc)
+void handle_percpu_devid_irq(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irqaction *action = desc->action;
 	void *dev_id = raw_cpu_ptr(action->percpu_dev_id);
+	unsigned int irq = irq_desc_get_irq(desc);
 	irqreturn_t res;
 
 	kstat_incr_irqs_this_cpu(desc);
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index 4d37b96343e9..b896a6ad8722 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -22,13 +22,13 @@
 
 /**
  * handle_bad_irq - handle spurious and unhandled irqs
- * @irq:       the interrupt number
  * @desc:      description of the interrupt
  *
  * Handles spurious and unhandled IRQ's. It also prints a debugmessage.
  */
-void handle_bad_irq(unsigned int irq, struct irq_desc *desc)
+void handle_bad_irq(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	print_irq_desc(irq, desc);
 	kstat_incr_irqs_this_cpu(desc);
 	ack_bad_irq(irq);
diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c
index 500e6fd11d78..6a9db594133d 100644
--- a/kernel/irq/irqdesc.c
+++ b/kernel/irq/irqdesc.c
@@ -347,7 +347,7 @@ int generic_handle_irq(unsigned int irq)
 
 	if (!desc)
 		return -EINVAL;
-	generic_handle_irq_desc(irq, desc);
+	generic_handle_irq_desc(desc);
 	return 0;
 }
 EXPORT_SYMBOL_GPL(generic_handle_irq);
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
  (?)
@ 2015-05-20 10:00   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Russell King, Jason Cooper,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Hans Ulli Kroll, Shawn Guo, Sascha Hauer, Roland Stigge,
	Tony Lindgren, Rajendra Nayak, Paul Walmsley, Daniel Mack,
	Haojian Zhuang
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, Russell King, linux-arm-kernel, linux-omap,
	linux-samsung-soc

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/arm/common/it8152.c               |    2 +-
 arch/arm/common/locomo.c               |    3 ++-
 arch/arm/common/sa1111.c               |    4 ++--
 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             |    2 +-
 24 files changed, 39 insertions(+), 32 deletions(-)

diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c
index 5114b68e99d5..aaa206181f92 100644
--- a/arch/arm/common/it8152.c
+++ b/arch/arm/common/it8152.c
@@ -95,7 +95,7 @@ void it8152_init_irq(void)
 	}
 }
 
-void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
+void it8152_irq_demux(struct irq_desc *desc)
 {
        int bits_pd, bits_lp, bits_ld;
        int i;
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index 02af4a07ceca..99d4535d7cc6 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -138,9 +138,10 @@ static struct locomo_dev_info locomo_devices[] = {
 	},
 };
 
-static void locomo_handler(unsigned int irq, struct irq_desc *desc)
+static void locomo_handler(struct irq_desc *desc)
 {
 	struct locomo *lchip = irq_desc_get_chip_data(desc);
+	unsigned int irq;
 	int req, i;
 
 	/* Acknowledge the parent IRQ */
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 0d0844fa54c2..762dfe7081f0 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -197,7 +197,7 @@ static struct sa1111_dev_info sa1111_devices[] = {
  * will call us again if there are more interrupts to process.
  */
 static void
-sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
+sa1111_irq_handler(struct irq_desc *desc)
 {
 	unsigned int stat0, stat1, i;
 	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
@@ -213,7 +213,7 @@ sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
 	sa1111_writel(stat1, mapbase + SA1111_INTSTATCLR1);
 
 	if (stat0 == 0 && stat1 == 0) {
-		do_bad_IRQ(irq, desc);
+		do_bad_IRQ(desc);
 		return;
 	}
 
diff --git a/arch/arm/include/asm/hardware/it8152.h b/arch/arm/include/asm/hardware/it8152.h
index d36a73d7c0e8..076777ff3daa 100644
--- a/arch/arm/include/asm/hardware/it8152.h
+++ b/arch/arm/include/asm/hardware/it8152.h
@@ -106,7 +106,7 @@ extern void __iomem *it8152_base_address;
 struct pci_dev;
 struct pci_sys_data;
 
-extern void it8152_irq_demux(unsigned int irq, struct irq_desc *desc);
+extern void it8152_irq_demux(struct irq_desc *desc);
 extern void it8152_init_irq(void);
 extern int it8152_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
 extern int it8152_pci_setup(int nr, struct pci_sys_data *sys);
diff --git a/arch/arm/include/asm/mach/irq.h b/arch/arm/include/asm/mach/irq.h
index 2092ee1e1300..4703e00283db 100644
--- a/arch/arm/include/asm/mach/irq.h
+++ b/arch/arm/include/asm/mach/irq.h
@@ -23,10 +23,10 @@ extern int show_fiq_list(struct seq_file *, int);
 /*
  * This is for easy migration, but should be changed in the source
  */
-#define do_bad_IRQ(irq,desc)				\
+#define do_bad_IRQ(desc)				\
 do {							\
 	raw_spin_lock(&desc->lock);			\
-	handle_bad_irq(irq, desc);			\
+	handle_bad_irq(desc);			\
 	raw_spin_unlock(&desc->lock);			\
 } while(0)
 
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
index 4a5a7aedcb76..30140cbdb249 100644
--- a/arch/arm/mach-dove/irq.c
+++ b/arch/arm/mach-dove/irq.c
@@ -69,13 +69,14 @@ static struct irq_chip pmu_irq_chip = {
 	.irq_ack	= pmu_irq_ack,
 };
 
-static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pmu_irq_handler(struct irq_desc *desc)
 {
 	unsigned long cause = readl(PMU_INTERRUPT_CAUSE);
+	unsigned int irq;
 
 	cause &= readl(PMU_INTERRUPT_MASK);
 	if (cause == 0) {
-		do_bad_IRQ(irq, desc);
+		do_bad_IRQ(desc);
 		return;
 	}
 
diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
index c3a0abbc9049..f78e46662447 100644
--- a/arch/arm/mach-footbridge/isa-irq.c
+++ b/arch/arm/mach-footbridge/isa-irq.c
@@ -88,12 +88,12 @@ static struct irq_chip isa_hi_chip = {
 };
 
 static void
-isa_irq_handler(unsigned int irq, struct irq_desc *desc)
+isa_irq_handler(struct irq_desc *desc)
 {
 	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
 
 	if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) {
-		do_bad_IRQ(isa_irq, desc);
+		do_bad_IRQ(desc);
 		return;
 	}
 
diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c
index f8cb5710d6ee..713f655bcc74 100644
--- a/arch/arm/mach-gemini/gpio.c
+++ b/arch/arm/mach-gemini/gpio.c
@@ -126,7 +126,7 @@ static int gpio_set_irq_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void gpio_irq_handler(struct irq_desc *desc)
 {
 	unsigned int port = (unsigned int)irq_desc_get_handler_data(desc);
 	unsigned int gpio_irq_no, irq_stat;
diff --git a/arch/arm/mach-imx/3ds_debugboard.c b/arch/arm/mach-imx/3ds_debugboard.c
index 134377352966..d93d3337b579 100644
--- a/arch/arm/mach-imx/3ds_debugboard.c
+++ b/arch/arm/mach-imx/3ds_debugboard.c
@@ -85,7 +85,7 @@ static struct platform_device smsc_lan9217_device = {
 	.resource = smsc911x_resources,
 };
 
-static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mxc_expio_irq_handler(struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c
index d08c37c696f6..07aef418a0e1 100644
--- a/arch/arm/mach-imx/mach-mx31ads.c
+++ b/arch/arm/mach-imx/mach-mx31ads.c
@@ -154,7 +154,7 @@ static inline void mxc_init_imx_uart(void)
 	imx31_add_imx_uart0(&uart_pdata);
 }
 
-static void mx31ads_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx31ads_expio_irq_handler(struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
diff --git a/arch/arm/mach-iop13xx/msi.c b/arch/arm/mach-iop13xx/msi.c
index 9f89e76dfbb9..f6235b28578c 100644
--- a/arch/arm/mach-iop13xx/msi.c
+++ b/arch/arm/mach-iop13xx/msi.c
@@ -91,7 +91,7 @@ static void (*write_imipr[])(u32) = {
 	write_imipr_3,
 };
 
-static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc)
+static void iop13xx_msi_handler(struct irq_desc *desc)
 {
 	int i, j;
 	unsigned long status;
diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c
index 9ecb8f9c4ef5..f361fed99105 100644
--- a/arch/arm/mach-lpc32xx/irq.c
+++ b/arch/arm/mach-lpc32xx/irq.c
@@ -370,7 +370,7 @@ static struct irq_chip lpc32xx_irq_chip = {
 	.irq_set_wake = lpc32xx_irq_wake
 };
 
-static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic1_handler(struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC1_BASE));
 
@@ -383,7 +383,7 @@ static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void lpc32xx_sic2_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic2_handler(struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC2_BASE));
 
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c
index 3c0e42219200..374bccf5ce24 100644
--- a/arch/arm/mach-omap1/fpga.c
+++ b/arch/arm/mach-omap1/fpga.c
@@ -87,7 +87,7 @@ static void fpga_mask_ack_irq(struct irq_data *d)
 	fpga_ack_irq(d);
 }
 
-static void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)
+static void innovator_fpga_IRQ_demux(struct irq_desc *desc)
 {
 	u32 stat;
 	int fpga_irq;
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
index 7add7994dbfc..6cfc1e54d41f 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -102,7 +102,7 @@ static void omap_prcm_events_filter_priority(unsigned long *events,
  * dispatched accordingly. Clearing of the wakeup events should be
  * done by the SoC specific individual handlers.
  */
-static void omap_prcm_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void omap_prcm_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending[OMAP_PRCM_MAX_NR_PENDING_REG];
 	unsigned long priority_pending[OMAP_PRCM_MAX_NR_PENDING_REG];
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
index d897292712eb..506365cdd58b 100644
--- a/arch/arm/mach-pxa/balloon3.c
+++ b/arch/arm/mach-pxa/balloon3.c
@@ -496,8 +496,9 @@ static struct irq_chip balloon3_irq_chip = {
 	.irq_unmask	= balloon3_unmask_irq,
 };
 
-static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void balloon3_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq;
 	unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
 					balloon3_irq_enabled;
 	do {
diff --git a/arch/arm/mach-pxa/cm-x2xx-pci.c b/arch/arm/mach-pxa/cm-x2xx-pci.c
index d8f816c24a2f..3221ae15bef7 100644
--- a/arch/arm/mach-pxa/cm-x2xx-pci.c
+++ b/arch/arm/mach-pxa/cm-x2xx-pci.c
@@ -29,12 +29,12 @@
 void __iomem *it8152_base_address;
 static int cmx2xx_it8152_irq_gpio;
 
-static void cmx2xx_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void cmx2xx_it8152_irq_demux(struct irq_desc *desc)
 {
 	/* clear our parent irq */
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
 
-	it8152_irq_demux(irq, desc);
+	it8152_irq_demux(desc);
 }
 
 void __cmx2xx_pci_init_irq(int irq_gpio)
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index eaee2c20b189..cbf00f51808f 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -120,9 +120,10 @@ static struct irq_chip lpd270_irq_chip = {
 	.irq_unmask	= lpd270_unmask_irq,
 };
 
-static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void lpd270_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = __raw_readw(LPD270_INT_STATUS) & lpd270_irq_enabled;
 	do {
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
index 2897da2a5df6..0d8331f8536e 100644
--- a/arch/arm/mach-pxa/pcm990-baseboard.c
+++ b/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -287,6 +287,7 @@ static struct irq_chip pcm990_irq_chip = {
 static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = ~pcm990_cpld_readb(PCM990_CTRL_INTSETCLR);
 	pending &= pcm990_irq_enabled;
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index de3b08073fe7..bd52fb914d6a 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -276,9 +276,10 @@ static inline unsigned long viper_irq_pending(void)
 			viper_irq_enabled_mask;
 }
 
-static void viper_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void viper_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = viper_irq_pending();
 	do {
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index ac2ae5c71ab4..7ffff0b424c2 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -105,9 +105,10 @@ static inline unsigned long zeus_irq_pending(void)
 	return __raw_readw(ZEUS_CPLD_ISA_IRQ) & zeus_irq_enabled_mask;
 }
 
-static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void zeus_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = zeus_irq_pending();
 	do {
diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
index fcb1d59f7aec..b7074cd5ebfd 100644
--- a/arch/arm/mach-rpc/ecard.c
+++ b/arch/arm/mach-rpc/ecard.c
@@ -552,7 +552,7 @@ static void ecard_check_lockup(struct irq_desc *desc)
 }
 
 static void
-ecard_irq_handler(unsigned int irq, struct irq_desc *desc)
+ecard_irq_handler(struct irq_desc *desc)
 {
 	ecard_t *ec;
 	int called = 0;
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
index 16547f2641a3..5c9ca33f61e5 100644
--- a/arch/arm/mach-s3c64xx/common.c
+++ b/arch/arm/mach-s3c64xx/common.c
@@ -389,22 +389,22 @@ static inline void s3c_irq_demux_eint(unsigned int start, unsigned int end)
 	}
 }
 
-static void s3c_irq_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint0_3(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(0, 3);
 }
 
-static void s3c_irq_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint4_11(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(4, 11);
 }
 
-static void s3c_irq_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint12_19(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(12, 19);
 }
 
-static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint20_27(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(20, 27);
 }
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
index af868d258e66..cc73c885d6a1 100644
--- a/arch/arm/mach-sa1100/neponset.c
+++ b/arch/arm/mach-sa1100/neponset.c
@@ -166,7 +166,7 @@ static struct sa1100_port_fns neponset_port_fns = {
  * ensure that the IRQ signal is deasserted before returning.  This
  * is rather unfortunate.
  */
-static void neponset_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void neponset_irq_handler(struct irq_desc *desc)
 {
 	struct neponset_drvdata *d = irq_desc_get_handler_data(desc);
 	unsigned int irr;
diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
index caba04340619..dc91cfa5483f 100644
--- a/arch/arm/plat-orion/gpio.c
+++ b/arch/arm/plat-orion/gpio.c
@@ -407,7 +407,7 @@ static int gpio_irq_set_type(struct irq_data *d, u32 type)
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(struct irq_desc *desc)
 {
 	struct orion_gpio_chip *ochip = irq_desc_get_handler_data(desc);
 	u32 cause, type;
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Russell King, Jason Cooper,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Hans Ulli Kroll, Shawn Guo, Sascha Hauer, Roland Stigge,
	Tony Lindgren, Rajendra Nayak, Paul Walmsley, Daniel Mack,
	Haojian Zhuang, Robert Jarzmik, Kukjin Kim, Krzysztof Kozlowski,
	Jiang Liu, Arnd Bergmann
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, Russell King, linux-arm-kernel, linux-omap,
	linux-samsung-soc

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/arm/common/it8152.c               |    2 +-
 arch/arm/common/locomo.c               |    3 ++-
 arch/arm/common/sa1111.c               |    4 ++--
 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             |    2 +-
 24 files changed, 39 insertions(+), 32 deletions(-)

diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c
index 5114b68e99d5..aaa206181f92 100644
--- a/arch/arm/common/it8152.c
+++ b/arch/arm/common/it8152.c
@@ -95,7 +95,7 @@ void it8152_init_irq(void)
 	}
 }
 
-void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
+void it8152_irq_demux(struct irq_desc *desc)
 {
        int bits_pd, bits_lp, bits_ld;
        int i;
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index 02af4a07ceca..99d4535d7cc6 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -138,9 +138,10 @@ static struct locomo_dev_info locomo_devices[] = {
 	},
 };
 
-static void locomo_handler(unsigned int irq, struct irq_desc *desc)
+static void locomo_handler(struct irq_desc *desc)
 {
 	struct locomo *lchip = irq_desc_get_chip_data(desc);
+	unsigned int irq;
 	int req, i;
 
 	/* Acknowledge the parent IRQ */
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 0d0844fa54c2..762dfe7081f0 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -197,7 +197,7 @@ static struct sa1111_dev_info sa1111_devices[] = {
  * will call us again if there are more interrupts to process.
  */
 static void
-sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
+sa1111_irq_handler(struct irq_desc *desc)
 {
 	unsigned int stat0, stat1, i;
 	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
@@ -213,7 +213,7 @@ sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
 	sa1111_writel(stat1, mapbase + SA1111_INTSTATCLR1);
 
 	if (stat0 == 0 && stat1 == 0) {
-		do_bad_IRQ(irq, desc);
+		do_bad_IRQ(desc);
 		return;
 	}
 
diff --git a/arch/arm/include/asm/hardware/it8152.h b/arch/arm/include/asm/hardware/it8152.h
index d36a73d7c0e8..076777ff3daa 100644
--- a/arch/arm/include/asm/hardware/it8152.h
+++ b/arch/arm/include/asm/hardware/it8152.h
@@ -106,7 +106,7 @@ extern void __iomem *it8152_base_address;
 struct pci_dev;
 struct pci_sys_data;
 
-extern void it8152_irq_demux(unsigned int irq, struct irq_desc *desc);
+extern void it8152_irq_demux(struct irq_desc *desc);
 extern void it8152_init_irq(void);
 extern int it8152_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
 extern int it8152_pci_setup(int nr, struct pci_sys_data *sys);
diff --git a/arch/arm/include/asm/mach/irq.h b/arch/arm/include/asm/mach/irq.h
index 2092ee1e1300..4703e00283db 100644
--- a/arch/arm/include/asm/mach/irq.h
+++ b/arch/arm/include/asm/mach/irq.h
@@ -23,10 +23,10 @@ extern int show_fiq_list(struct seq_file *, int);
 /*
  * This is for easy migration, but should be changed in the source
  */
-#define do_bad_IRQ(irq,desc)				\
+#define do_bad_IRQ(desc)				\
 do {							\
 	raw_spin_lock(&desc->lock);			\
-	handle_bad_irq(irq, desc);			\
+	handle_bad_irq(desc);			\
 	raw_spin_unlock(&desc->lock);			\
 } while(0)
 
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
index 4a5a7aedcb76..30140cbdb249 100644
--- a/arch/arm/mach-dove/irq.c
+++ b/arch/arm/mach-dove/irq.c
@@ -69,13 +69,14 @@ static struct irq_chip pmu_irq_chip = {
 	.irq_ack	= pmu_irq_ack,
 };
 
-static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pmu_irq_handler(struct irq_desc *desc)
 {
 	unsigned long cause = readl(PMU_INTERRUPT_CAUSE);
+	unsigned int irq;
 
 	cause &= readl(PMU_INTERRUPT_MASK);
 	if (cause == 0) {
-		do_bad_IRQ(irq, desc);
+		do_bad_IRQ(desc);
 		return;
 	}
 
diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
index c3a0abbc9049..f78e46662447 100644
--- a/arch/arm/mach-footbridge/isa-irq.c
+++ b/arch/arm/mach-footbridge/isa-irq.c
@@ -88,12 +88,12 @@ static struct irq_chip isa_hi_chip = {
 };
 
 static void
-isa_irq_handler(unsigned int irq, struct irq_desc *desc)
+isa_irq_handler(struct irq_desc *desc)
 {
 	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
 
 	if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) {
-		do_bad_IRQ(isa_irq, desc);
+		do_bad_IRQ(desc);
 		return;
 	}
 
diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c
index f8cb5710d6ee..713f655bcc74 100644
--- a/arch/arm/mach-gemini/gpio.c
+++ b/arch/arm/mach-gemini/gpio.c
@@ -126,7 +126,7 @@ static int gpio_set_irq_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void gpio_irq_handler(struct irq_desc *desc)
 {
 	unsigned int port = (unsigned int)irq_desc_get_handler_data(desc);
 	unsigned int gpio_irq_no, irq_stat;
diff --git a/arch/arm/mach-imx/3ds_debugboard.c b/arch/arm/mach-imx/3ds_debugboard.c
index 134377352966..d93d3337b579 100644
--- a/arch/arm/mach-imx/3ds_debugboard.c
+++ b/arch/arm/mach-imx/3ds_debugboard.c
@@ -85,7 +85,7 @@ static struct platform_device smsc_lan9217_device = {
 	.resource = smsc911x_resources,
 };
 
-static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mxc_expio_irq_handler(struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c
index d08c37c696f6..07aef418a0e1 100644
--- a/arch/arm/mach-imx/mach-mx31ads.c
+++ b/arch/arm/mach-imx/mach-mx31ads.c
@@ -154,7 +154,7 @@ static inline void mxc_init_imx_uart(void)
 	imx31_add_imx_uart0(&uart_pdata);
 }
 
-static void mx31ads_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx31ads_expio_irq_handler(struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
diff --git a/arch/arm/mach-iop13xx/msi.c b/arch/arm/mach-iop13xx/msi.c
index 9f89e76dfbb9..f6235b28578c 100644
--- a/arch/arm/mach-iop13xx/msi.c
+++ b/arch/arm/mach-iop13xx/msi.c
@@ -91,7 +91,7 @@ static void (*write_imipr[])(u32) = {
 	write_imipr_3,
 };
 
-static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc)
+static void iop13xx_msi_handler(struct irq_desc *desc)
 {
 	int i, j;
 	unsigned long status;
diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c
index 9ecb8f9c4ef5..f361fed99105 100644
--- a/arch/arm/mach-lpc32xx/irq.c
+++ b/arch/arm/mach-lpc32xx/irq.c
@@ -370,7 +370,7 @@ static struct irq_chip lpc32xx_irq_chip = {
 	.irq_set_wake = lpc32xx_irq_wake
 };
 
-static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic1_handler(struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC1_BASE));
 
@@ -383,7 +383,7 @@ static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void lpc32xx_sic2_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic2_handler(struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC2_BASE));
 
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c
index 3c0e42219200..374bccf5ce24 100644
--- a/arch/arm/mach-omap1/fpga.c
+++ b/arch/arm/mach-omap1/fpga.c
@@ -87,7 +87,7 @@ static void fpga_mask_ack_irq(struct irq_data *d)
 	fpga_ack_irq(d);
 }
 
-static void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)
+static void innovator_fpga_IRQ_demux(struct irq_desc *desc)
 {
 	u32 stat;
 	int fpga_irq;
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
index 7add7994dbfc..6cfc1e54d41f 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -102,7 +102,7 @@ static void omap_prcm_events_filter_priority(unsigned long *events,
  * dispatched accordingly. Clearing of the wakeup events should be
  * done by the SoC specific individual handlers.
  */
-static void omap_prcm_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void omap_prcm_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending[OMAP_PRCM_MAX_NR_PENDING_REG];
 	unsigned long priority_pending[OMAP_PRCM_MAX_NR_PENDING_REG];
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
index d897292712eb..506365cdd58b 100644
--- a/arch/arm/mach-pxa/balloon3.c
+++ b/arch/arm/mach-pxa/balloon3.c
@@ -496,8 +496,9 @@ static struct irq_chip balloon3_irq_chip = {
 	.irq_unmask	= balloon3_unmask_irq,
 };
 
-static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void balloon3_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq;
 	unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
 					balloon3_irq_enabled;
 	do {
diff --git a/arch/arm/mach-pxa/cm-x2xx-pci.c b/arch/arm/mach-pxa/cm-x2xx-pci.c
index d8f816c24a2f..3221ae15bef7 100644
--- a/arch/arm/mach-pxa/cm-x2xx-pci.c
+++ b/arch/arm/mach-pxa/cm-x2xx-pci.c
@@ -29,12 +29,12 @@
 void __iomem *it8152_base_address;
 static int cmx2xx_it8152_irq_gpio;
 
-static void cmx2xx_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void cmx2xx_it8152_irq_demux(struct irq_desc *desc)
 {
 	/* clear our parent irq */
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
 
-	it8152_irq_demux(irq, desc);
+	it8152_irq_demux(desc);
 }
 
 void __cmx2xx_pci_init_irq(int irq_gpio)
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index eaee2c20b189..cbf00f51808f 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -120,9 +120,10 @@ static struct irq_chip lpd270_irq_chip = {
 	.irq_unmask	= lpd270_unmask_irq,
 };
 
-static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void lpd270_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = __raw_readw(LPD270_INT_STATUS) & lpd270_irq_enabled;
 	do {
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
index 2897da2a5df6..0d8331f8536e 100644
--- a/arch/arm/mach-pxa/pcm990-baseboard.c
+++ b/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -287,6 +287,7 @@ static struct irq_chip pcm990_irq_chip = {
 static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = ~pcm990_cpld_readb(PCM990_CTRL_INTSETCLR);
 	pending &= pcm990_irq_enabled;
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index de3b08073fe7..bd52fb914d6a 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -276,9 +276,10 @@ static inline unsigned long viper_irq_pending(void)
 			viper_irq_enabled_mask;
 }
 
-static void viper_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void viper_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = viper_irq_pending();
 	do {
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index ac2ae5c71ab4..7ffff0b424c2 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -105,9 +105,10 @@ static inline unsigned long zeus_irq_pending(void)
 	return __raw_readw(ZEUS_CPLD_ISA_IRQ) & zeus_irq_enabled_mask;
 }
 
-static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void zeus_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = zeus_irq_pending();
 	do {
diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
index fcb1d59f7aec..b7074cd5ebfd 100644
--- a/arch/arm/mach-rpc/ecard.c
+++ b/arch/arm/mach-rpc/ecard.c
@@ -552,7 +552,7 @@ static void ecard_check_lockup(struct irq_desc *desc)
 }
 
 static void
-ecard_irq_handler(unsigned int irq, struct irq_desc *desc)
+ecard_irq_handler(struct irq_desc *desc)
 {
 	ecard_t *ec;
 	int called = 0;
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
index 16547f2641a3..5c9ca33f61e5 100644
--- a/arch/arm/mach-s3c64xx/common.c
+++ b/arch/arm/mach-s3c64xx/common.c
@@ -389,22 +389,22 @@ static inline void s3c_irq_demux_eint(unsigned int start, unsigned int end)
 	}
 }
 
-static void s3c_irq_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint0_3(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(0, 3);
 }
 
-static void s3c_irq_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint4_11(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(4, 11);
 }
 
-static void s3c_irq_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint12_19(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(12, 19);
 }
 
-static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint20_27(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(20, 27);
 }
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
index af868d258e66..cc73c885d6a1 100644
--- a/arch/arm/mach-sa1100/neponset.c
+++ b/arch/arm/mach-sa1100/neponset.c
@@ -166,7 +166,7 @@ static struct sa1100_port_fns neponset_port_fns = {
  * ensure that the IRQ signal is deasserted before returning.  This
  * is rather unfortunate.
  */
-static void neponset_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void neponset_irq_handler(struct irq_desc *desc)
 {
 	struct neponset_drvdata *d = irq_desc_get_handler_data(desc);
 	unsigned int irr;
diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
index caba04340619..dc91cfa5483f 100644
--- a/arch/arm/plat-orion/gpio.c
+++ b/arch/arm/plat-orion/gpio.c
@@ -407,7 +407,7 @@ static int gpio_irq_set_type(struct irq_data *d, u32 type)
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(struct irq_desc *desc)
 {
 	struct orion_gpio_chip *ochip = irq_desc_get_handler_data(desc);
 	u32 cause, type;
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: linux-arm-kernel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/arm/common/it8152.c               |    2 +-
 arch/arm/common/locomo.c               |    3 ++-
 arch/arm/common/sa1111.c               |    4 ++--
 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             |    2 +-
 24 files changed, 39 insertions(+), 32 deletions(-)

diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c
index 5114b68e99d5..aaa206181f92 100644
--- a/arch/arm/common/it8152.c
+++ b/arch/arm/common/it8152.c
@@ -95,7 +95,7 @@ void it8152_init_irq(void)
 	}
 }
 
-void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
+void it8152_irq_demux(struct irq_desc *desc)
 {
        int bits_pd, bits_lp, bits_ld;
        int i;
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index 02af4a07ceca..99d4535d7cc6 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -138,9 +138,10 @@ static struct locomo_dev_info locomo_devices[] = {
 	},
 };
 
-static void locomo_handler(unsigned int irq, struct irq_desc *desc)
+static void locomo_handler(struct irq_desc *desc)
 {
 	struct locomo *lchip = irq_desc_get_chip_data(desc);
+	unsigned int irq;
 	int req, i;
 
 	/* Acknowledge the parent IRQ */
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 0d0844fa54c2..762dfe7081f0 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -197,7 +197,7 @@ static struct sa1111_dev_info sa1111_devices[] = {
  * will call us again if there are more interrupts to process.
  */
 static void
-sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
+sa1111_irq_handler(struct irq_desc *desc)
 {
 	unsigned int stat0, stat1, i;
 	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
@@ -213,7 +213,7 @@ sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
 	sa1111_writel(stat1, mapbase + SA1111_INTSTATCLR1);
 
 	if (stat0 == 0 && stat1 == 0) {
-		do_bad_IRQ(irq, desc);
+		do_bad_IRQ(desc);
 		return;
 	}
 
diff --git a/arch/arm/include/asm/hardware/it8152.h b/arch/arm/include/asm/hardware/it8152.h
index d36a73d7c0e8..076777ff3daa 100644
--- a/arch/arm/include/asm/hardware/it8152.h
+++ b/arch/arm/include/asm/hardware/it8152.h
@@ -106,7 +106,7 @@ extern void __iomem *it8152_base_address;
 struct pci_dev;
 struct pci_sys_data;
 
-extern void it8152_irq_demux(unsigned int irq, struct irq_desc *desc);
+extern void it8152_irq_demux(struct irq_desc *desc);
 extern void it8152_init_irq(void);
 extern int it8152_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
 extern int it8152_pci_setup(int nr, struct pci_sys_data *sys);
diff --git a/arch/arm/include/asm/mach/irq.h b/arch/arm/include/asm/mach/irq.h
index 2092ee1e1300..4703e00283db 100644
--- a/arch/arm/include/asm/mach/irq.h
+++ b/arch/arm/include/asm/mach/irq.h
@@ -23,10 +23,10 @@ extern int show_fiq_list(struct seq_file *, int);
 /*
  * This is for easy migration, but should be changed in the source
  */
-#define do_bad_IRQ(irq,desc)				\
+#define do_bad_IRQ(desc)				\
 do {							\
 	raw_spin_lock(&desc->lock);			\
-	handle_bad_irq(irq, desc);			\
+	handle_bad_irq(desc);			\
 	raw_spin_unlock(&desc->lock);			\
 } while(0)
 
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
index 4a5a7aedcb76..30140cbdb249 100644
--- a/arch/arm/mach-dove/irq.c
+++ b/arch/arm/mach-dove/irq.c
@@ -69,13 +69,14 @@ static struct irq_chip pmu_irq_chip = {
 	.irq_ack	= pmu_irq_ack,
 };
 
-static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pmu_irq_handler(struct irq_desc *desc)
 {
 	unsigned long cause = readl(PMU_INTERRUPT_CAUSE);
+	unsigned int irq;
 
 	cause &= readl(PMU_INTERRUPT_MASK);
 	if (cause == 0) {
-		do_bad_IRQ(irq, desc);
+		do_bad_IRQ(desc);
 		return;
 	}
 
diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
index c3a0abbc9049..f78e46662447 100644
--- a/arch/arm/mach-footbridge/isa-irq.c
+++ b/arch/arm/mach-footbridge/isa-irq.c
@@ -88,12 +88,12 @@ static struct irq_chip isa_hi_chip = {
 };
 
 static void
-isa_irq_handler(unsigned int irq, struct irq_desc *desc)
+isa_irq_handler(struct irq_desc *desc)
 {
 	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
 
 	if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) {
-		do_bad_IRQ(isa_irq, desc);
+		do_bad_IRQ(desc);
 		return;
 	}
 
diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c
index f8cb5710d6ee..713f655bcc74 100644
--- a/arch/arm/mach-gemini/gpio.c
+++ b/arch/arm/mach-gemini/gpio.c
@@ -126,7 +126,7 @@ static int gpio_set_irq_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void gpio_irq_handler(struct irq_desc *desc)
 {
 	unsigned int port = (unsigned int)irq_desc_get_handler_data(desc);
 	unsigned int gpio_irq_no, irq_stat;
diff --git a/arch/arm/mach-imx/3ds_debugboard.c b/arch/arm/mach-imx/3ds_debugboard.c
index 134377352966..d93d3337b579 100644
--- a/arch/arm/mach-imx/3ds_debugboard.c
+++ b/arch/arm/mach-imx/3ds_debugboard.c
@@ -85,7 +85,7 @@ static struct platform_device smsc_lan9217_device = {
 	.resource = smsc911x_resources,
 };
 
-static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mxc_expio_irq_handler(struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c
index d08c37c696f6..07aef418a0e1 100644
--- a/arch/arm/mach-imx/mach-mx31ads.c
+++ b/arch/arm/mach-imx/mach-mx31ads.c
@@ -154,7 +154,7 @@ static inline void mxc_init_imx_uart(void)
 	imx31_add_imx_uart0(&uart_pdata);
 }
 
-static void mx31ads_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx31ads_expio_irq_handler(struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
diff --git a/arch/arm/mach-iop13xx/msi.c b/arch/arm/mach-iop13xx/msi.c
index 9f89e76dfbb9..f6235b28578c 100644
--- a/arch/arm/mach-iop13xx/msi.c
+++ b/arch/arm/mach-iop13xx/msi.c
@@ -91,7 +91,7 @@ static void (*write_imipr[])(u32) = {
 	write_imipr_3,
 };
 
-static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc)
+static void iop13xx_msi_handler(struct irq_desc *desc)
 {
 	int i, j;
 	unsigned long status;
diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c
index 9ecb8f9c4ef5..f361fed99105 100644
--- a/arch/arm/mach-lpc32xx/irq.c
+++ b/arch/arm/mach-lpc32xx/irq.c
@@ -370,7 +370,7 @@ static struct irq_chip lpc32xx_irq_chip = {
 	.irq_set_wake = lpc32xx_irq_wake
 };
 
-static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic1_handler(struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC1_BASE));
 
@@ -383,7 +383,7 @@ static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void lpc32xx_sic2_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic2_handler(struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC2_BASE));
 
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c
index 3c0e42219200..374bccf5ce24 100644
--- a/arch/arm/mach-omap1/fpga.c
+++ b/arch/arm/mach-omap1/fpga.c
@@ -87,7 +87,7 @@ static void fpga_mask_ack_irq(struct irq_data *d)
 	fpga_ack_irq(d);
 }
 
-static void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)
+static void innovator_fpga_IRQ_demux(struct irq_desc *desc)
 {
 	u32 stat;
 	int fpga_irq;
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
index 7add7994dbfc..6cfc1e54d41f 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -102,7 +102,7 @@ static void omap_prcm_events_filter_priority(unsigned long *events,
  * dispatched accordingly. Clearing of the wakeup events should be
  * done by the SoC specific individual handlers.
  */
-static void omap_prcm_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void omap_prcm_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending[OMAP_PRCM_MAX_NR_PENDING_REG];
 	unsigned long priority_pending[OMAP_PRCM_MAX_NR_PENDING_REG];
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
index d897292712eb..506365cdd58b 100644
--- a/arch/arm/mach-pxa/balloon3.c
+++ b/arch/arm/mach-pxa/balloon3.c
@@ -496,8 +496,9 @@ static struct irq_chip balloon3_irq_chip = {
 	.irq_unmask	= balloon3_unmask_irq,
 };
 
-static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void balloon3_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq;
 	unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
 					balloon3_irq_enabled;
 	do {
diff --git a/arch/arm/mach-pxa/cm-x2xx-pci.c b/arch/arm/mach-pxa/cm-x2xx-pci.c
index d8f816c24a2f..3221ae15bef7 100644
--- a/arch/arm/mach-pxa/cm-x2xx-pci.c
+++ b/arch/arm/mach-pxa/cm-x2xx-pci.c
@@ -29,12 +29,12 @@
 void __iomem *it8152_base_address;
 static int cmx2xx_it8152_irq_gpio;
 
-static void cmx2xx_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void cmx2xx_it8152_irq_demux(struct irq_desc *desc)
 {
 	/* clear our parent irq */
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
 
-	it8152_irq_demux(irq, desc);
+	it8152_irq_demux(desc);
 }
 
 void __cmx2xx_pci_init_irq(int irq_gpio)
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index eaee2c20b189..cbf00f51808f 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -120,9 +120,10 @@ static struct irq_chip lpd270_irq_chip = {
 	.irq_unmask	= lpd270_unmask_irq,
 };
 
-static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void lpd270_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = __raw_readw(LPD270_INT_STATUS) & lpd270_irq_enabled;
 	do {
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
index 2897da2a5df6..0d8331f8536e 100644
--- a/arch/arm/mach-pxa/pcm990-baseboard.c
+++ b/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -287,6 +287,7 @@ static struct irq_chip pcm990_irq_chip = {
 static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = ~pcm990_cpld_readb(PCM990_CTRL_INTSETCLR);
 	pending &= pcm990_irq_enabled;
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index de3b08073fe7..bd52fb914d6a 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -276,9 +276,10 @@ static inline unsigned long viper_irq_pending(void)
 			viper_irq_enabled_mask;
 }
 
-static void viper_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void viper_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = viper_irq_pending();
 	do {
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index ac2ae5c71ab4..7ffff0b424c2 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -105,9 +105,10 @@ static inline unsigned long zeus_irq_pending(void)
 	return __raw_readw(ZEUS_CPLD_ISA_IRQ) & zeus_irq_enabled_mask;
 }
 
-static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void zeus_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending;
+	unsigned int irq;
 
 	pending = zeus_irq_pending();
 	do {
diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
index fcb1d59f7aec..b7074cd5ebfd 100644
--- a/arch/arm/mach-rpc/ecard.c
+++ b/arch/arm/mach-rpc/ecard.c
@@ -552,7 +552,7 @@ static void ecard_check_lockup(struct irq_desc *desc)
 }
 
 static void
-ecard_irq_handler(unsigned int irq, struct irq_desc *desc)
+ecard_irq_handler(struct irq_desc *desc)
 {
 	ecard_t *ec;
 	int called = 0;
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
index 16547f2641a3..5c9ca33f61e5 100644
--- a/arch/arm/mach-s3c64xx/common.c
+++ b/arch/arm/mach-s3c64xx/common.c
@@ -389,22 +389,22 @@ static inline void s3c_irq_demux_eint(unsigned int start, unsigned int end)
 	}
 }
 
-static void s3c_irq_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint0_3(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(0, 3);
 }
 
-static void s3c_irq_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint4_11(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(4, 11);
 }
 
-static void s3c_irq_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint12_19(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(12, 19);
 }
 
-static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint20_27(struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(20, 27);
 }
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
index af868d258e66..cc73c885d6a1 100644
--- a/arch/arm/mach-sa1100/neponset.c
+++ b/arch/arm/mach-sa1100/neponset.c
@@ -166,7 +166,7 @@ static struct sa1100_port_fns neponset_port_fns = {
  * ensure that the IRQ signal is deasserted before returning.  This
  * is rather unfortunate.
  */
-static void neponset_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void neponset_irq_handler(struct irq_desc *desc)
 {
 	struct neponset_drvdata *d = irq_desc_get_handler_data(desc);
 	unsigned int irr;
diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
index caba04340619..dc91cfa5483f 100644
--- a/arch/arm/plat-orion/gpio.c
+++ b/arch/arm/plat-orion/gpio.c
@@ -407,7 +407,7 @@ static int gpio_irq_set_type(struct irq_data *d, u32 type)
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(struct irq_desc *desc)
 {
 	struct orion_gpio_chip *ochip = irq_desc_get_handler_data(desc);
 	u32 cause, type;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 16/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
  (?)
  (?)
@ 2015-05-20 10:00   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Paul Mackerras, Michael Ellerman,
	Anatolij Gustschin, Scott Wood, Kumar Gala, Vitaly Bordug,
	Arnd Bergmann, Michal Simek, Sören Brinkmann, Jiang Liu,
	Anton Blanchard, Daniel Axtens, Alexander Graf, Grant Likely
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linuxppc-dev, cbe-oss-dev, linux-arm-kernel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 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       |    2 +-
 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          |    2 +-
 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/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                       |    2 +-
 arch/powerpc/sysdev/xilinx_intc.c               |    2 +-
 23 files changed, 36 insertions(+), 37 deletions(-)

diff --git a/arch/powerpc/include/asm/qe_ic.h b/arch/powerpc/include/asm/qe_ic.h
index 25784cc959a0..1e155ca6d33c 100644
--- a/arch/powerpc/include/asm/qe_ic.h
+++ b/arch/powerpc/include/asm/qe_ic.h
@@ -59,14 +59,14 @@ enum qe_ic_grp_id {
 
 #ifdef CONFIG_QUICC_ENGINE
 void qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc));
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc));
 unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic);
 unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic);
 #else
 static inline void qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc))
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc))
 {}
 static inline unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic)
 { return 0; }
@@ -78,8 +78,7 @@ void qe_ic_set_highest_priority(unsigned int virq, int high);
 int qe_ic_set_priority(unsigned int virq, unsigned int priority);
 int qe_ic_set_high_priority(unsigned int virq, unsigned int priority, int high);
 
-static inline void qe_ic_cascade_low_ipic(unsigned int irq,
-					  struct irq_desc *desc)
+static inline void qe_ic_cascade_low_ipic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic);
@@ -88,8 +87,7 @@ static inline void qe_ic_cascade_low_ipic(unsigned int irq,
 		generic_handle_irq(cascade_irq);
 }
 
-static inline void qe_ic_cascade_high_ipic(unsigned int irq,
-					   struct irq_desc *desc)
+static inline void qe_ic_cascade_high_ipic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic);
@@ -98,8 +96,7 @@ static inline void qe_ic_cascade_high_ipic(unsigned int irq,
 		generic_handle_irq(cascade_irq);
 }
 
-static inline void qe_ic_cascade_low_mpic(unsigned int irq,
-					  struct irq_desc *desc)
+static inline void qe_ic_cascade_low_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic);
@@ -111,8 +108,7 @@ static inline void qe_ic_cascade_low_mpic(unsigned int irq,
 	chip->irq_eoi(&desc->irq_data);
 }
 
-static inline void qe_ic_cascade_high_mpic(unsigned int irq,
-					   struct irq_desc *desc)
+static inline void qe_ic_cascade_high_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic);
@@ -124,8 +120,7 @@ static inline void qe_ic_cascade_high_mpic(unsigned int irq,
 	chip->irq_eoi(&desc->irq_data);
 }
 
-static inline void qe_ic_cascade_muxed_mpic(unsigned int irq,
-					    struct irq_desc *desc)
+static inline void qe_ic_cascade_muxed_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq;
diff --git a/arch/powerpc/include/asm/tsi108_pci.h b/arch/powerpc/include/asm/tsi108_pci.h
index 5653d7cc3e24..ae59d5b672b0 100644
--- a/arch/powerpc/include/asm/tsi108_pci.h
+++ b/arch/powerpc/include/asm/tsi108_pci.h
@@ -39,7 +39,7 @@
 
 extern int tsi108_setup_pci(struct device_node *dev, u32 cfg_phys, int primary);
 extern void tsi108_pci_int_init(struct device_node *node);
-extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc);
+extern void tsi108_irq_cascade(struct irq_desc *desc);
 extern void tsi108_clear_pci_cfg_error(void);
 
 #endif				/*  _ASM_POWERPC_TSI108_PCI_H */
diff --git a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
index ca3a062ed1b9..4dc8f4f3d5ac 100644
--- a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
+++ b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
@@ -105,8 +105,10 @@ cpld_pic_get_irq(int offset, u8 ignore, u8 __iomem *statusp,
 }
 
 static void
-cpld_pic_cascade(unsigned int irq, struct irq_desc *desc)
+cpld_pic_cascade(struct irq_desc *desc)
 {
+	unsigned int irq;
+
 	irq = cpld_pic_get_irq(0, PCI_IGNORE, &cpld_regs->pci_status,
 		&cpld_regs->pci_mask);
 	if (irq != NO_IRQ) {
diff --git a/arch/powerpc/platforms/52xx/media5200.c b/arch/powerpc/platforms/52xx/media5200.c
index 32cae33c4266..0c64f63cc187 100644
--- a/arch/powerpc/platforms/52xx/media5200.c
+++ b/arch/powerpc/platforms/52xx/media5200.c
@@ -80,7 +80,7 @@ static struct irq_chip media5200_irq_chip = {
 	.irq_mask_ack = media5200_irq_mask,
 };
 
-void media5200_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void media5200_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int sub_virq, val;
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
index 63016621aff8..1f5f4775930c 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
@@ -191,7 +191,7 @@ static struct irq_chip mpc52xx_gpt_irq_chip = {
 	.irq_set_type = mpc52xx_gpt_irq_set_type,
 };
 
-void mpc52xx_gpt_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void mpc52xx_gpt_irq_cascade(struct irq_desc *desc)
 {
 	struct mpc52xx_gpt_priv *gpt = irq_desc_get_handler_data(desc);
 	int sub_virq;
diff --git a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
index 74861a7fb807..60e89fc9c753 100644
--- a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
+++ b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
@@ -78,7 +78,7 @@ static struct irq_chip pq2ads_pci_ic = {
 	.irq_disable = pq2ads_pci_mask_irq
 };
 
-static void pq2ads_pci_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void pq2ads_pci_irq_demux(struct irq_desc *desc)
 {
 	struct pq2ads_pci_pic *priv = irq_desc_get_handler_data(desc);
 	u32 stat, mask, pend;
diff --git a/arch/powerpc/platforms/85xx/common.c b/arch/powerpc/platforms/85xx/common.c
index 7bfb9b184dd4..23791de7b688 100644
--- a/arch/powerpc/platforms/85xx/common.c
+++ b/arch/powerpc/platforms/85xx/common.c
@@ -49,7 +49,7 @@ int __init mpc85xx_common_publish_devices(void)
 	return of_platform_bus_probe(NULL, mpc85xx_common_ids, NULL);
 }
 #ifdef CONFIG_CPM2
-static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm2_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq;
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index ffdf02121a7c..f858306dba6a 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -46,7 +46,7 @@
 #endif
 
 #ifdef CONFIG_PPC_I8259
-static void mpc85xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc85xx_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
index 55a9682b9529..b074dae07183 100644
--- a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
+++ b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
@@ -91,8 +91,9 @@ static inline unsigned int socrates_fpga_pic_get_irq(unsigned int irq)
 			(irq_hw_number_t)i);
 }
 
-void socrates_fpga_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void socrates_fpga_pic_cascade(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
 
diff --git a/arch/powerpc/platforms/86xx/pic.c b/arch/powerpc/platforms/86xx/pic.c
index d5b98c0f958a..845defa1fd19 100644
--- a/arch/powerpc/platforms/86xx/pic.c
+++ b/arch/powerpc/platforms/86xx/pic.c
@@ -17,7 +17,7 @@
 #include <asm/i8259.h>
 
 #ifdef CONFIG_PPC_I8259
-static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc86xx_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/8xx/m8xx_setup.c b/arch/powerpc/platforms/8xx/m8xx_setup.c
index d3037747031d..c289fc77b4ba 100644
--- a/arch/powerpc/platforms/8xx/m8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/m8xx_setup.c
@@ -214,7 +214,7 @@ void mpc8xx_restart(char *cmd)
 	panic("Restart failed\n");
 }
 
-static void cpm_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq = cpm_get_irq();
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c
index 817d0e6747ea..677836a1b5e4 100644
--- a/arch/powerpc/platforms/cell/axon_msi.c
+++ b/arch/powerpc/platforms/cell/axon_msi.c
@@ -92,7 +92,7 @@ static void msic_dcr_write(struct axon_msic *msic, unsigned int dcr_n, u32 val)
 	dcr_write(msic->dcr_host, dcr_n, val);
 }
 
-static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
+static void axon_msi_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct axon_msic *msic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/interrupt.c b/arch/powerpc/platforms/cell/interrupt.c
index 3af8324c122e..65ea856a583e 100644
--- a/arch/powerpc/platforms/cell/interrupt.c
+++ b/arch/powerpc/platforms/cell/interrupt.c
@@ -99,8 +99,9 @@ static void iic_ioexc_eoi(struct irq_data *d)
 {
 }
 
-static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc)
+static void iic_ioexc_cascade(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct cbe_iic_regs __iomem *node_iic =
 		(void __iomem *)irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/spider-pic.c b/arch/powerpc/platforms/cell/spider-pic.c
index 1f72f4ab6353..9d27de62dc62 100644
--- a/arch/powerpc/platforms/cell/spider-pic.c
+++ b/arch/powerpc/platforms/cell/spider-pic.c
@@ -199,7 +199,7 @@ static const struct irq_domain_ops spider_host_ops = {
 	.xlate = spider_host_xlate,
 };
 
-static void spider_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void spider_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct spider_pic *pic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
index 15ebc4e8a151..987d1b8d68e3 100644
--- a/arch/powerpc/platforms/chrp/setup.c
+++ b/arch/powerpc/platforms/chrp/setup.c
@@ -363,7 +363,7 @@ void __init chrp_setup_arch(void)
 	if (ppc_md.progress) ppc_md.progress("Linux/PPC "UTS_RELEASE"\n", 0x0);
 }
 
-static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void chrp_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/embedded6xx/mvme5100.c b/arch/powerpc/platforms/embedded6xx/mvme5100.c
index 1613303177e6..8f65aa3747f5 100644
--- a/arch/powerpc/platforms/embedded6xx/mvme5100.c
+++ b/arch/powerpc/platforms/embedded6xx/mvme5100.c
@@ -42,7 +42,7 @@
 static phys_addr_t pci_membase;
 static u_char *restart;
 
-static void mvme5100_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mvme5100_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index df6a7041922b..642f5a49718b 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -111,7 +111,7 @@ static void __init fwnmi_init(void)
 		fwnmi_active = 1;
 }
 
-static void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void pseries_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/sysdev/ge/ge_pic.c b/arch/powerpc/sysdev/ge/ge_pic.c
index 2bcb78bb3a15..bf52768a162e 100644
--- a/arch/powerpc/sysdev/ge/ge_pic.c
+++ b/arch/powerpc/sysdev/ge/ge_pic.c
@@ -91,7 +91,7 @@ static int gef_pic_cascade_irq;
  * should be masked out.
  */
 
-void gef_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void gef_pic_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index b2b8447a227a..caed5f221f03 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1180,7 +1180,7 @@ static int mpic_host_xlate(struct irq_domain *h, struct device_node *ct,
 }
 
 /* IRQ handler for a secondary MPIC cascaded from another IRQ controller */
-static void mpic_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpic_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct mpic *mpic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/sysdev/qe_lib/qe_ic.c b/arch/powerpc/sysdev/qe_lib/qe_ic.c
index 543765e1ef14..50179099e728 100644
--- a/arch/powerpc/sysdev/qe_lib/qe_ic.c
+++ b/arch/powerpc/sysdev/qe_lib/qe_ic.c
@@ -310,8 +310,8 @@ unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic)
 }
 
 void __init qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc))
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc))
 {
 	struct qe_ic *qe_ic;
 	struct resource res;
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c
index 188012c58f7f..0b36e6a22d25 100644
--- a/arch/powerpc/sysdev/tsi108_pci.c
+++ b/arch/powerpc/sysdev/tsi108_pci.c
@@ -428,7 +428,7 @@ void __init tsi108_pci_int_init(struct device_node *node)
 	init_pci_source();
 }
 
-void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc)
+void tsi108_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = get_pci_source();
diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
index e763fe215cf5..902af049b492 100644
--- a/arch/powerpc/sysdev/uic.c
+++ b/arch/powerpc/sysdev/uic.c
@@ -194,7 +194,7 @@ static struct irq_domain_ops uic_host_ops = {
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-void uic_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void uic_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_data *idata = irq_desc_get_irq_data(desc);
diff --git a/arch/powerpc/sysdev/xilinx_intc.c b/arch/powerpc/sysdev/xilinx_intc.c
index 56f0524e47a6..78e0f1be1474 100644
--- a/arch/powerpc/sysdev/xilinx_intc.c
+++ b/arch/powerpc/sysdev/xilinx_intc.c
@@ -222,7 +222,7 @@ int xilinx_intc_get_irq(void)
 /*
  * Support code for cascading to 8259 interrupt controllers
  */
-static void xilinx_i8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void xilinx_i8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 16/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Paul Mackerras, Michael Ellerman,
	Anatolij Gustschin, Scott Wood, Kumar Gala, Vitaly Bordug,
	Arnd Bergmann, Michal Simek, Sören Brinkmann, Jiang Liu,
	Anton Blanchard, Daniel Axtens, Alexander Graf, Grant Likely,
	Hongtao Jia, Arseny Solokha
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linuxppc-dev, cbe-oss-dev, linux-arm-kernel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 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       |    2 +-
 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          |    2 +-
 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/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                       |    2 +-
 arch/powerpc/sysdev/xilinx_intc.c               |    2 +-
 23 files changed, 36 insertions(+), 37 deletions(-)

diff --git a/arch/powerpc/include/asm/qe_ic.h b/arch/powerpc/include/asm/qe_ic.h
index 25784cc959a0..1e155ca6d33c 100644
--- a/arch/powerpc/include/asm/qe_ic.h
+++ b/arch/powerpc/include/asm/qe_ic.h
@@ -59,14 +59,14 @@ enum qe_ic_grp_id {
 
 #ifdef CONFIG_QUICC_ENGINE
 void qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc));
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc));
 unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic);
 unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic);
 #else
 static inline void qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc))
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc))
 {}
 static inline unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic)
 { return 0; }
@@ -78,8 +78,7 @@ void qe_ic_set_highest_priority(unsigned int virq, int high);
 int qe_ic_set_priority(unsigned int virq, unsigned int priority);
 int qe_ic_set_high_priority(unsigned int virq, unsigned int priority, int high);
 
-static inline void qe_ic_cascade_low_ipic(unsigned int irq,
-					  struct irq_desc *desc)
+static inline void qe_ic_cascade_low_ipic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic);
@@ -88,8 +87,7 @@ static inline void qe_ic_cascade_low_ipic(unsigned int irq,
 		generic_handle_irq(cascade_irq);
 }
 
-static inline void qe_ic_cascade_high_ipic(unsigned int irq,
-					   struct irq_desc *desc)
+static inline void qe_ic_cascade_high_ipic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic);
@@ -98,8 +96,7 @@ static inline void qe_ic_cascade_high_ipic(unsigned int irq,
 		generic_handle_irq(cascade_irq);
 }
 
-static inline void qe_ic_cascade_low_mpic(unsigned int irq,
-					  struct irq_desc *desc)
+static inline void qe_ic_cascade_low_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic);
@@ -111,8 +108,7 @@ static inline void qe_ic_cascade_low_mpic(unsigned int irq,
 	chip->irq_eoi(&desc->irq_data);
 }
 
-static inline void qe_ic_cascade_high_mpic(unsigned int irq,
-					   struct irq_desc *desc)
+static inline void qe_ic_cascade_high_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic);
@@ -124,8 +120,7 @@ static inline void qe_ic_cascade_high_mpic(unsigned int irq,
 	chip->irq_eoi(&desc->irq_data);
 }
 
-static inline void qe_ic_cascade_muxed_mpic(unsigned int irq,
-					    struct irq_desc *desc)
+static inline void qe_ic_cascade_muxed_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq;
diff --git a/arch/powerpc/include/asm/tsi108_pci.h b/arch/powerpc/include/asm/tsi108_pci.h
index 5653d7cc3e24..ae59d5b672b0 100644
--- a/arch/powerpc/include/asm/tsi108_pci.h
+++ b/arch/powerpc/include/asm/tsi108_pci.h
@@ -39,7 +39,7 @@
 
 extern int tsi108_setup_pci(struct device_node *dev, u32 cfg_phys, int primary);
 extern void tsi108_pci_int_init(struct device_node *node);
-extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc);
+extern void tsi108_irq_cascade(struct irq_desc *desc);
 extern void tsi108_clear_pci_cfg_error(void);
 
 #endif				/*  _ASM_POWERPC_TSI108_PCI_H */
diff --git a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
index ca3a062ed1b9..4dc8f4f3d5ac 100644
--- a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
+++ b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
@@ -105,8 +105,10 @@ cpld_pic_get_irq(int offset, u8 ignore, u8 __iomem *statusp,
 }
 
 static void
-cpld_pic_cascade(unsigned int irq, struct irq_desc *desc)
+cpld_pic_cascade(struct irq_desc *desc)
 {
+	unsigned int irq;
+
 	irq = cpld_pic_get_irq(0, PCI_IGNORE, &cpld_regs->pci_status,
 		&cpld_regs->pci_mask);
 	if (irq != NO_IRQ) {
diff --git a/arch/powerpc/platforms/52xx/media5200.c b/arch/powerpc/platforms/52xx/media5200.c
index 32cae33c4266..0c64f63cc187 100644
--- a/arch/powerpc/platforms/52xx/media5200.c
+++ b/arch/powerpc/platforms/52xx/media5200.c
@@ -80,7 +80,7 @@ static struct irq_chip media5200_irq_chip = {
 	.irq_mask_ack = media5200_irq_mask,
 };
 
-void media5200_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void media5200_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int sub_virq, val;
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
index 63016621aff8..1f5f4775930c 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
@@ -191,7 +191,7 @@ static struct irq_chip mpc52xx_gpt_irq_chip = {
 	.irq_set_type = mpc52xx_gpt_irq_set_type,
 };
 
-void mpc52xx_gpt_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void mpc52xx_gpt_irq_cascade(struct irq_desc *desc)
 {
 	struct mpc52xx_gpt_priv *gpt = irq_desc_get_handler_data(desc);
 	int sub_virq;
diff --git a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
index 74861a7fb807..60e89fc9c753 100644
--- a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
+++ b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
@@ -78,7 +78,7 @@ static struct irq_chip pq2ads_pci_ic = {
 	.irq_disable = pq2ads_pci_mask_irq
 };
 
-static void pq2ads_pci_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void pq2ads_pci_irq_demux(struct irq_desc *desc)
 {
 	struct pq2ads_pci_pic *priv = irq_desc_get_handler_data(desc);
 	u32 stat, mask, pend;
diff --git a/arch/powerpc/platforms/85xx/common.c b/arch/powerpc/platforms/85xx/common.c
index 7bfb9b184dd4..23791de7b688 100644
--- a/arch/powerpc/platforms/85xx/common.c
+++ b/arch/powerpc/platforms/85xx/common.c
@@ -49,7 +49,7 @@ int __init mpc85xx_common_publish_devices(void)
 	return of_platform_bus_probe(NULL, mpc85xx_common_ids, NULL);
 }
 #ifdef CONFIG_CPM2
-static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm2_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq;
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index ffdf02121a7c..f858306dba6a 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -46,7 +46,7 @@
 #endif
 
 #ifdef CONFIG_PPC_I8259
-static void mpc85xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc85xx_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
index 55a9682b9529..b074dae07183 100644
--- a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
+++ b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
@@ -91,8 +91,9 @@ static inline unsigned int socrates_fpga_pic_get_irq(unsigned int irq)
 			(irq_hw_number_t)i);
 }
 
-void socrates_fpga_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void socrates_fpga_pic_cascade(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
 
diff --git a/arch/powerpc/platforms/86xx/pic.c b/arch/powerpc/platforms/86xx/pic.c
index d5b98c0f958a..845defa1fd19 100644
--- a/arch/powerpc/platforms/86xx/pic.c
+++ b/arch/powerpc/platforms/86xx/pic.c
@@ -17,7 +17,7 @@
 #include <asm/i8259.h>
 
 #ifdef CONFIG_PPC_I8259
-static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc86xx_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/8xx/m8xx_setup.c b/arch/powerpc/platforms/8xx/m8xx_setup.c
index d3037747031d..c289fc77b4ba 100644
--- a/arch/powerpc/platforms/8xx/m8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/m8xx_setup.c
@@ -214,7 +214,7 @@ void mpc8xx_restart(char *cmd)
 	panic("Restart failed\n");
 }
 
-static void cpm_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq = cpm_get_irq();
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c
index 817d0e6747ea..677836a1b5e4 100644
--- a/arch/powerpc/platforms/cell/axon_msi.c
+++ b/arch/powerpc/platforms/cell/axon_msi.c
@@ -92,7 +92,7 @@ static void msic_dcr_write(struct axon_msic *msic, unsigned int dcr_n, u32 val)
 	dcr_write(msic->dcr_host, dcr_n, val);
 }
 
-static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
+static void axon_msi_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct axon_msic *msic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/interrupt.c b/arch/powerpc/platforms/cell/interrupt.c
index 3af8324c122e..65ea856a583e 100644
--- a/arch/powerpc/platforms/cell/interrupt.c
+++ b/arch/powerpc/platforms/cell/interrupt.c
@@ -99,8 +99,9 @@ static void iic_ioexc_eoi(struct irq_data *d)
 {
 }
 
-static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc)
+static void iic_ioexc_cascade(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct cbe_iic_regs __iomem *node_iic =
 		(void __iomem *)irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/spider-pic.c b/arch/powerpc/platforms/cell/spider-pic.c
index 1f72f4ab6353..9d27de62dc62 100644
--- a/arch/powerpc/platforms/cell/spider-pic.c
+++ b/arch/powerpc/platforms/cell/spider-pic.c
@@ -199,7 +199,7 @@ static const struct irq_domain_ops spider_host_ops = {
 	.xlate = spider_host_xlate,
 };
 
-static void spider_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void spider_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct spider_pic *pic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
index 15ebc4e8a151..987d1b8d68e3 100644
--- a/arch/powerpc/platforms/chrp/setup.c
+++ b/arch/powerpc/platforms/chrp/setup.c
@@ -363,7 +363,7 @@ void __init chrp_setup_arch(void)
 	if (ppc_md.progress) ppc_md.progress("Linux/PPC "UTS_RELEASE"\n", 0x0);
 }
 
-static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void chrp_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/embedded6xx/mvme5100.c b/arch/powerpc/platforms/embedded6xx/mvme5100.c
index 1613303177e6..8f65aa3747f5 100644
--- a/arch/powerpc/platforms/embedded6xx/mvme5100.c
+++ b/arch/powerpc/platforms/embedded6xx/mvme5100.c
@@ -42,7 +42,7 @@
 static phys_addr_t pci_membase;
 static u_char *restart;
 
-static void mvme5100_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mvme5100_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index df6a7041922b..642f5a49718b 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -111,7 +111,7 @@ static void __init fwnmi_init(void)
 		fwnmi_active = 1;
 }
 
-static void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void pseries_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/sysdev/ge/ge_pic.c b/arch/powerpc/sysdev/ge/ge_pic.c
index 2bcb78bb3a15..bf52768a162e 100644
--- a/arch/powerpc/sysdev/ge/ge_pic.c
+++ b/arch/powerpc/sysdev/ge/ge_pic.c
@@ -91,7 +91,7 @@ static int gef_pic_cascade_irq;
  * should be masked out.
  */
 
-void gef_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void gef_pic_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index b2b8447a227a..caed5f221f03 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1180,7 +1180,7 @@ static int mpic_host_xlate(struct irq_domain *h, struct device_node *ct,
 }
 
 /* IRQ handler for a secondary MPIC cascaded from another IRQ controller */
-static void mpic_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpic_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct mpic *mpic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/sysdev/qe_lib/qe_ic.c b/arch/powerpc/sysdev/qe_lib/qe_ic.c
index 543765e1ef14..50179099e728 100644
--- a/arch/powerpc/sysdev/qe_lib/qe_ic.c
+++ b/arch/powerpc/sysdev/qe_lib/qe_ic.c
@@ -310,8 +310,8 @@ unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic)
 }
 
 void __init qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc))
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc))
 {
 	struct qe_ic *qe_ic;
 	struct resource res;
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c
index 188012c58f7f..0b36e6a22d25 100644
--- a/arch/powerpc/sysdev/tsi108_pci.c
+++ b/arch/powerpc/sysdev/tsi108_pci.c
@@ -428,7 +428,7 @@ void __init tsi108_pci_int_init(struct device_node *node)
 	init_pci_source();
 }
 
-void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc)
+void tsi108_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = get_pci_source();
diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
index e763fe215cf5..902af049b492 100644
--- a/arch/powerpc/sysdev/uic.c
+++ b/arch/powerpc/sysdev/uic.c
@@ -194,7 +194,7 @@ static struct irq_domain_ops uic_host_ops = {
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-void uic_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void uic_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_data *idata = irq_desc_get_irq_data(desc);
diff --git a/arch/powerpc/sysdev/xilinx_intc.c b/arch/powerpc/sysdev/xilinx_intc.c
index 56f0524e47a6..78e0f1be1474 100644
--- a/arch/powerpc/sysdev/xilinx_intc.c
+++ b/arch/powerpc/sysdev/xilinx_intc.c
@@ -222,7 +222,7 @@ int xilinx_intc_get_irq(void)
 /*
  * Support code for cascading to 8259 interrupt controllers
  */
-static void xilinx_i8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void xilinx_i8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 16/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Paul Mackerras, Michael Ellerman,
	Anatolij Gustschin, Scott Wood, Kumar Gala, Vitaly Bordug,
	Arnd Bergmann, Michal Simek, Sören Brinkmann, Jiang Liu,
	Anton Blanchard, Daniel Axtens, Alexander Graf, Grant Likely,
	Hongtao Jia, Arseny Solokha
  Cc: cbe-oss-dev, Tony Luck, Konrad Rzeszutek Wilk, linux-pci, x86,
	linux-kernel, linux-acpi, linuxppc-dev, linux-arm-kernel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 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       |    2 +-
 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          |    2 +-
 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/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                       |    2 +-
 arch/powerpc/sysdev/xilinx_intc.c               |    2 +-
 23 files changed, 36 insertions(+), 37 deletions(-)

diff --git a/arch/powerpc/include/asm/qe_ic.h b/arch/powerpc/include/asm/qe_ic.h
index 25784cc959a0..1e155ca6d33c 100644
--- a/arch/powerpc/include/asm/qe_ic.h
+++ b/arch/powerpc/include/asm/qe_ic.h
@@ -59,14 +59,14 @@ enum qe_ic_grp_id {
 
 #ifdef CONFIG_QUICC_ENGINE
 void qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc));
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc));
 unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic);
 unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic);
 #else
 static inline void qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc))
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc))
 {}
 static inline unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic)
 { return 0; }
@@ -78,8 +78,7 @@ void qe_ic_set_highest_priority(unsigned int virq, int high);
 int qe_ic_set_priority(unsigned int virq, unsigned int priority);
 int qe_ic_set_high_priority(unsigned int virq, unsigned int priority, int high);
 
-static inline void qe_ic_cascade_low_ipic(unsigned int irq,
-					  struct irq_desc *desc)
+static inline void qe_ic_cascade_low_ipic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic);
@@ -88,8 +87,7 @@ static inline void qe_ic_cascade_low_ipic(unsigned int irq,
 		generic_handle_irq(cascade_irq);
 }
 
-static inline void qe_ic_cascade_high_ipic(unsigned int irq,
-					   struct irq_desc *desc)
+static inline void qe_ic_cascade_high_ipic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic);
@@ -98,8 +96,7 @@ static inline void qe_ic_cascade_high_ipic(unsigned int irq,
 		generic_handle_irq(cascade_irq);
 }
 
-static inline void qe_ic_cascade_low_mpic(unsigned int irq,
-					  struct irq_desc *desc)
+static inline void qe_ic_cascade_low_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic);
@@ -111,8 +108,7 @@ static inline void qe_ic_cascade_low_mpic(unsigned int irq,
 	chip->irq_eoi(&desc->irq_data);
 }
 
-static inline void qe_ic_cascade_high_mpic(unsigned int irq,
-					   struct irq_desc *desc)
+static inline void qe_ic_cascade_high_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic);
@@ -124,8 +120,7 @@ static inline void qe_ic_cascade_high_mpic(unsigned int irq,
 	chip->irq_eoi(&desc->irq_data);
 }
 
-static inline void qe_ic_cascade_muxed_mpic(unsigned int irq,
-					    struct irq_desc *desc)
+static inline void qe_ic_cascade_muxed_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq;
diff --git a/arch/powerpc/include/asm/tsi108_pci.h b/arch/powerpc/include/asm/tsi108_pci.h
index 5653d7cc3e24..ae59d5b672b0 100644
--- a/arch/powerpc/include/asm/tsi108_pci.h
+++ b/arch/powerpc/include/asm/tsi108_pci.h
@@ -39,7 +39,7 @@
 
 extern int tsi108_setup_pci(struct device_node *dev, u32 cfg_phys, int primary);
 extern void tsi108_pci_int_init(struct device_node *node);
-extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc);
+extern void tsi108_irq_cascade(struct irq_desc *desc);
 extern void tsi108_clear_pci_cfg_error(void);
 
 #endif				/*  _ASM_POWERPC_TSI108_PCI_H */
diff --git a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
index ca3a062ed1b9..4dc8f4f3d5ac 100644
--- a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
+++ b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
@@ -105,8 +105,10 @@ cpld_pic_get_irq(int offset, u8 ignore, u8 __iomem *statusp,
 }
 
 static void
-cpld_pic_cascade(unsigned int irq, struct irq_desc *desc)
+cpld_pic_cascade(struct irq_desc *desc)
 {
+	unsigned int irq;
+
 	irq = cpld_pic_get_irq(0, PCI_IGNORE, &cpld_regs->pci_status,
 		&cpld_regs->pci_mask);
 	if (irq != NO_IRQ) {
diff --git a/arch/powerpc/platforms/52xx/media5200.c b/arch/powerpc/platforms/52xx/media5200.c
index 32cae33c4266..0c64f63cc187 100644
--- a/arch/powerpc/platforms/52xx/media5200.c
+++ b/arch/powerpc/platforms/52xx/media5200.c
@@ -80,7 +80,7 @@ static struct irq_chip media5200_irq_chip = {
 	.irq_mask_ack = media5200_irq_mask,
 };
 
-void media5200_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void media5200_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int sub_virq, val;
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
index 63016621aff8..1f5f4775930c 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
@@ -191,7 +191,7 @@ static struct irq_chip mpc52xx_gpt_irq_chip = {
 	.irq_set_type = mpc52xx_gpt_irq_set_type,
 };
 
-void mpc52xx_gpt_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void mpc52xx_gpt_irq_cascade(struct irq_desc *desc)
 {
 	struct mpc52xx_gpt_priv *gpt = irq_desc_get_handler_data(desc);
 	int sub_virq;
diff --git a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
index 74861a7fb807..60e89fc9c753 100644
--- a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
+++ b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
@@ -78,7 +78,7 @@ static struct irq_chip pq2ads_pci_ic = {
 	.irq_disable = pq2ads_pci_mask_irq
 };
 
-static void pq2ads_pci_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void pq2ads_pci_irq_demux(struct irq_desc *desc)
 {
 	struct pq2ads_pci_pic *priv = irq_desc_get_handler_data(desc);
 	u32 stat, mask, pend;
diff --git a/arch/powerpc/platforms/85xx/common.c b/arch/powerpc/platforms/85xx/common.c
index 7bfb9b184dd4..23791de7b688 100644
--- a/arch/powerpc/platforms/85xx/common.c
+++ b/arch/powerpc/platforms/85xx/common.c
@@ -49,7 +49,7 @@ int __init mpc85xx_common_publish_devices(void)
 	return of_platform_bus_probe(NULL, mpc85xx_common_ids, NULL);
 }
 #ifdef CONFIG_CPM2
-static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm2_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq;
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index ffdf02121a7c..f858306dba6a 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -46,7 +46,7 @@
 #endif
 
 #ifdef CONFIG_PPC_I8259
-static void mpc85xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc85xx_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
index 55a9682b9529..b074dae07183 100644
--- a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
+++ b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
@@ -91,8 +91,9 @@ static inline unsigned int socrates_fpga_pic_get_irq(unsigned int irq)
 			(irq_hw_number_t)i);
 }
 
-void socrates_fpga_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void socrates_fpga_pic_cascade(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
 
diff --git a/arch/powerpc/platforms/86xx/pic.c b/arch/powerpc/platforms/86xx/pic.c
index d5b98c0f958a..845defa1fd19 100644
--- a/arch/powerpc/platforms/86xx/pic.c
+++ b/arch/powerpc/platforms/86xx/pic.c
@@ -17,7 +17,7 @@
 #include <asm/i8259.h>
 
 #ifdef CONFIG_PPC_I8259
-static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc86xx_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/8xx/m8xx_setup.c b/arch/powerpc/platforms/8xx/m8xx_setup.c
index d3037747031d..c289fc77b4ba 100644
--- a/arch/powerpc/platforms/8xx/m8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/m8xx_setup.c
@@ -214,7 +214,7 @@ void mpc8xx_restart(char *cmd)
 	panic("Restart failed\n");
 }
 
-static void cpm_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq = cpm_get_irq();
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c
index 817d0e6747ea..677836a1b5e4 100644
--- a/arch/powerpc/platforms/cell/axon_msi.c
+++ b/arch/powerpc/platforms/cell/axon_msi.c
@@ -92,7 +92,7 @@ static void msic_dcr_write(struct axon_msic *msic, unsigned int dcr_n, u32 val)
 	dcr_write(msic->dcr_host, dcr_n, val);
 }
 
-static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
+static void axon_msi_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct axon_msic *msic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/interrupt.c b/arch/powerpc/platforms/cell/interrupt.c
index 3af8324c122e..65ea856a583e 100644
--- a/arch/powerpc/platforms/cell/interrupt.c
+++ b/arch/powerpc/platforms/cell/interrupt.c
@@ -99,8 +99,9 @@ static void iic_ioexc_eoi(struct irq_data *d)
 {
 }
 
-static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc)
+static void iic_ioexc_cascade(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct cbe_iic_regs __iomem *node_iic =
 		(void __iomem *)irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/spider-pic.c b/arch/powerpc/platforms/cell/spider-pic.c
index 1f72f4ab6353..9d27de62dc62 100644
--- a/arch/powerpc/platforms/cell/spider-pic.c
+++ b/arch/powerpc/platforms/cell/spider-pic.c
@@ -199,7 +199,7 @@ static const struct irq_domain_ops spider_host_ops = {
 	.xlate = spider_host_xlate,
 };
 
-static void spider_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void spider_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct spider_pic *pic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
index 15ebc4e8a151..987d1b8d68e3 100644
--- a/arch/powerpc/platforms/chrp/setup.c
+++ b/arch/powerpc/platforms/chrp/setup.c
@@ -363,7 +363,7 @@ void __init chrp_setup_arch(void)
 	if (ppc_md.progress) ppc_md.progress("Linux/PPC "UTS_RELEASE"\n", 0x0);
 }
 
-static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void chrp_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/embedded6xx/mvme5100.c b/arch/powerpc/platforms/embedded6xx/mvme5100.c
index 1613303177e6..8f65aa3747f5 100644
--- a/arch/powerpc/platforms/embedded6xx/mvme5100.c
+++ b/arch/powerpc/platforms/embedded6xx/mvme5100.c
@@ -42,7 +42,7 @@
 static phys_addr_t pci_membase;
 static u_char *restart;
 
-static void mvme5100_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mvme5100_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index df6a7041922b..642f5a49718b 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -111,7 +111,7 @@ static void __init fwnmi_init(void)
 		fwnmi_active = 1;
 }
 
-static void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void pseries_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/sysdev/ge/ge_pic.c b/arch/powerpc/sysdev/ge/ge_pic.c
index 2bcb78bb3a15..bf52768a162e 100644
--- a/arch/powerpc/sysdev/ge/ge_pic.c
+++ b/arch/powerpc/sysdev/ge/ge_pic.c
@@ -91,7 +91,7 @@ static int gef_pic_cascade_irq;
  * should be masked out.
  */
 
-void gef_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void gef_pic_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index b2b8447a227a..caed5f221f03 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1180,7 +1180,7 @@ static int mpic_host_xlate(struct irq_domain *h, struct device_node *ct,
 }
 
 /* IRQ handler for a secondary MPIC cascaded from another IRQ controller */
-static void mpic_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpic_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct mpic *mpic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/sysdev/qe_lib/qe_ic.c b/arch/powerpc/sysdev/qe_lib/qe_ic.c
index 543765e1ef14..50179099e728 100644
--- a/arch/powerpc/sysdev/qe_lib/qe_ic.c
+++ b/arch/powerpc/sysdev/qe_lib/qe_ic.c
@@ -310,8 +310,8 @@ unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic)
 }
 
 void __init qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc))
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc))
 {
 	struct qe_ic *qe_ic;
 	struct resource res;
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c
index 188012c58f7f..0b36e6a22d25 100644
--- a/arch/powerpc/sysdev/tsi108_pci.c
+++ b/arch/powerpc/sysdev/tsi108_pci.c
@@ -428,7 +428,7 @@ void __init tsi108_pci_int_init(struct device_node *node)
 	init_pci_source();
 }
 
-void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc)
+void tsi108_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = get_pci_source();
diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
index e763fe215cf5..902af049b492 100644
--- a/arch/powerpc/sysdev/uic.c
+++ b/arch/powerpc/sysdev/uic.c
@@ -194,7 +194,7 @@ static struct irq_domain_ops uic_host_ops = {
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-void uic_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void uic_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_data *idata = irq_desc_get_irq_data(desc);
diff --git a/arch/powerpc/sysdev/xilinx_intc.c b/arch/powerpc/sysdev/xilinx_intc.c
index 56f0524e47a6..78e0f1be1474 100644
--- a/arch/powerpc/sysdev/xilinx_intc.c
+++ b/arch/powerpc/sysdev/xilinx_intc.c
@@ -222,7 +222,7 @@ int xilinx_intc_get_irq(void)
 /*
  * Support code for cascading to 8259 interrupt controllers
  */
-static void xilinx_i8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void xilinx_i8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 16/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: linux-arm-kernel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 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       |    2 +-
 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          |    2 +-
 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/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                       |    2 +-
 arch/powerpc/sysdev/xilinx_intc.c               |    2 +-
 23 files changed, 36 insertions(+), 37 deletions(-)

diff --git a/arch/powerpc/include/asm/qe_ic.h b/arch/powerpc/include/asm/qe_ic.h
index 25784cc959a0..1e155ca6d33c 100644
--- a/arch/powerpc/include/asm/qe_ic.h
+++ b/arch/powerpc/include/asm/qe_ic.h
@@ -59,14 +59,14 @@ enum qe_ic_grp_id {
 
 #ifdef CONFIG_QUICC_ENGINE
 void qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc));
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc));
 unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic);
 unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic);
 #else
 static inline void qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc))
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc))
 {}
 static inline unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic)
 { return 0; }
@@ -78,8 +78,7 @@ void qe_ic_set_highest_priority(unsigned int virq, int high);
 int qe_ic_set_priority(unsigned int virq, unsigned int priority);
 int qe_ic_set_high_priority(unsigned int virq, unsigned int priority, int high);
 
-static inline void qe_ic_cascade_low_ipic(unsigned int irq,
-					  struct irq_desc *desc)
+static inline void qe_ic_cascade_low_ipic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic);
@@ -88,8 +87,7 @@ static inline void qe_ic_cascade_low_ipic(unsigned int irq,
 		generic_handle_irq(cascade_irq);
 }
 
-static inline void qe_ic_cascade_high_ipic(unsigned int irq,
-					   struct irq_desc *desc)
+static inline void qe_ic_cascade_high_ipic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic);
@@ -98,8 +96,7 @@ static inline void qe_ic_cascade_high_ipic(unsigned int irq,
 		generic_handle_irq(cascade_irq);
 }
 
-static inline void qe_ic_cascade_low_mpic(unsigned int irq,
-					  struct irq_desc *desc)
+static inline void qe_ic_cascade_low_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic);
@@ -111,8 +108,7 @@ static inline void qe_ic_cascade_low_mpic(unsigned int irq,
 	chip->irq_eoi(&desc->irq_data);
 }
 
-static inline void qe_ic_cascade_high_mpic(unsigned int irq,
-					   struct irq_desc *desc)
+static inline void qe_ic_cascade_high_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic);
@@ -124,8 +120,7 @@ static inline void qe_ic_cascade_high_mpic(unsigned int irq,
 	chip->irq_eoi(&desc->irq_data);
 }
 
-static inline void qe_ic_cascade_muxed_mpic(unsigned int irq,
-					    struct irq_desc *desc)
+static inline void qe_ic_cascade_muxed_mpic(struct irq_desc *desc)
 {
 	struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
 	unsigned int cascade_irq;
diff --git a/arch/powerpc/include/asm/tsi108_pci.h b/arch/powerpc/include/asm/tsi108_pci.h
index 5653d7cc3e24..ae59d5b672b0 100644
--- a/arch/powerpc/include/asm/tsi108_pci.h
+++ b/arch/powerpc/include/asm/tsi108_pci.h
@@ -39,7 +39,7 @@
 
 extern int tsi108_setup_pci(struct device_node *dev, u32 cfg_phys, int primary);
 extern void tsi108_pci_int_init(struct device_node *node);
-extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc);
+extern void tsi108_irq_cascade(struct irq_desc *desc);
 extern void tsi108_clear_pci_cfg_error(void);
 
 #endif				/*  _ASM_POWERPC_TSI108_PCI_H */
diff --git a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
index ca3a062ed1b9..4dc8f4f3d5ac 100644
--- a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
+++ b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
@@ -105,8 +105,10 @@ cpld_pic_get_irq(int offset, u8 ignore, u8 __iomem *statusp,
 }
 
 static void
-cpld_pic_cascade(unsigned int irq, struct irq_desc *desc)
+cpld_pic_cascade(struct irq_desc *desc)
 {
+	unsigned int irq;
+
 	irq = cpld_pic_get_irq(0, PCI_IGNORE, &cpld_regs->pci_status,
 		&cpld_regs->pci_mask);
 	if (irq != NO_IRQ) {
diff --git a/arch/powerpc/platforms/52xx/media5200.c b/arch/powerpc/platforms/52xx/media5200.c
index 32cae33c4266..0c64f63cc187 100644
--- a/arch/powerpc/platforms/52xx/media5200.c
+++ b/arch/powerpc/platforms/52xx/media5200.c
@@ -80,7 +80,7 @@ static struct irq_chip media5200_irq_chip = {
 	.irq_mask_ack = media5200_irq_mask,
 };
 
-void media5200_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void media5200_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int sub_virq, val;
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
index 63016621aff8..1f5f4775930c 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
@@ -191,7 +191,7 @@ static struct irq_chip mpc52xx_gpt_irq_chip = {
 	.irq_set_type = mpc52xx_gpt_irq_set_type,
 };
 
-void mpc52xx_gpt_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void mpc52xx_gpt_irq_cascade(struct irq_desc *desc)
 {
 	struct mpc52xx_gpt_priv *gpt = irq_desc_get_handler_data(desc);
 	int sub_virq;
diff --git a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
index 74861a7fb807..60e89fc9c753 100644
--- a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
+++ b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
@@ -78,7 +78,7 @@ static struct irq_chip pq2ads_pci_ic = {
 	.irq_disable = pq2ads_pci_mask_irq
 };
 
-static void pq2ads_pci_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void pq2ads_pci_irq_demux(struct irq_desc *desc)
 {
 	struct pq2ads_pci_pic *priv = irq_desc_get_handler_data(desc);
 	u32 stat, mask, pend;
diff --git a/arch/powerpc/platforms/85xx/common.c b/arch/powerpc/platforms/85xx/common.c
index 7bfb9b184dd4..23791de7b688 100644
--- a/arch/powerpc/platforms/85xx/common.c
+++ b/arch/powerpc/platforms/85xx/common.c
@@ -49,7 +49,7 @@ int __init mpc85xx_common_publish_devices(void)
 	return of_platform_bus_probe(NULL, mpc85xx_common_ids, NULL);
 }
 #ifdef CONFIG_CPM2
-static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm2_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq;
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index ffdf02121a7c..f858306dba6a 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -46,7 +46,7 @@
 #endif
 
 #ifdef CONFIG_PPC_I8259
-static void mpc85xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc85xx_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
index 55a9682b9529..b074dae07183 100644
--- a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
+++ b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
@@ -91,8 +91,9 @@ static inline unsigned int socrates_fpga_pic_get_irq(unsigned int irq)
 			(irq_hw_number_t)i);
 }
 
-void socrates_fpga_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void socrates_fpga_pic_cascade(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
 
diff --git a/arch/powerpc/platforms/86xx/pic.c b/arch/powerpc/platforms/86xx/pic.c
index d5b98c0f958a..845defa1fd19 100644
--- a/arch/powerpc/platforms/86xx/pic.c
+++ b/arch/powerpc/platforms/86xx/pic.c
@@ -17,7 +17,7 @@
 #include <asm/i8259.h>
 
 #ifdef CONFIG_PPC_I8259
-static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc86xx_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/8xx/m8xx_setup.c b/arch/powerpc/platforms/8xx/m8xx_setup.c
index d3037747031d..c289fc77b4ba 100644
--- a/arch/powerpc/platforms/8xx/m8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/m8xx_setup.c
@@ -214,7 +214,7 @@ void mpc8xx_restart(char *cmd)
 	panic("Restart failed\n");
 }
 
-static void cpm_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq = cpm_get_irq();
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c
index 817d0e6747ea..677836a1b5e4 100644
--- a/arch/powerpc/platforms/cell/axon_msi.c
+++ b/arch/powerpc/platforms/cell/axon_msi.c
@@ -92,7 +92,7 @@ static void msic_dcr_write(struct axon_msic *msic, unsigned int dcr_n, u32 val)
 	dcr_write(msic->dcr_host, dcr_n, val);
 }
 
-static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
+static void axon_msi_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct axon_msic *msic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/interrupt.c b/arch/powerpc/platforms/cell/interrupt.c
index 3af8324c122e..65ea856a583e 100644
--- a/arch/powerpc/platforms/cell/interrupt.c
+++ b/arch/powerpc/platforms/cell/interrupt.c
@@ -99,8 +99,9 @@ static void iic_ioexc_eoi(struct irq_data *d)
 {
 }
 
-static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc)
+static void iic_ioexc_cascade(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct cbe_iic_regs __iomem *node_iic =
 		(void __iomem *)irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/spider-pic.c b/arch/powerpc/platforms/cell/spider-pic.c
index 1f72f4ab6353..9d27de62dc62 100644
--- a/arch/powerpc/platforms/cell/spider-pic.c
+++ b/arch/powerpc/platforms/cell/spider-pic.c
@@ -199,7 +199,7 @@ static const struct irq_domain_ops spider_host_ops = {
 	.xlate = spider_host_xlate,
 };
 
-static void spider_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void spider_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct spider_pic *pic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
index 15ebc4e8a151..987d1b8d68e3 100644
--- a/arch/powerpc/platforms/chrp/setup.c
+++ b/arch/powerpc/platforms/chrp/setup.c
@@ -363,7 +363,7 @@ void __init chrp_setup_arch(void)
 	if (ppc_md.progress) ppc_md.progress("Linux/PPC "UTS_RELEASE"\n", 0x0);
 }
 
-static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void chrp_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/embedded6xx/mvme5100.c b/arch/powerpc/platforms/embedded6xx/mvme5100.c
index 1613303177e6..8f65aa3747f5 100644
--- a/arch/powerpc/platforms/embedded6xx/mvme5100.c
+++ b/arch/powerpc/platforms/embedded6xx/mvme5100.c
@@ -42,7 +42,7 @@
 static phys_addr_t pci_membase;
 static u_char *restart;
 
-static void mvme5100_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mvme5100_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index df6a7041922b..642f5a49718b 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -111,7 +111,7 @@ static void __init fwnmi_init(void)
 		fwnmi_active = 1;
 }
 
-static void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void pseries_8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/sysdev/ge/ge_pic.c b/arch/powerpc/sysdev/ge/ge_pic.c
index 2bcb78bb3a15..bf52768a162e 100644
--- a/arch/powerpc/sysdev/ge/ge_pic.c
+++ b/arch/powerpc/sysdev/ge/ge_pic.c
@@ -91,7 +91,7 @@ static int gef_pic_cascade_irq;
  * should be masked out.
  */
 
-void gef_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void gef_pic_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index b2b8447a227a..caed5f221f03 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1180,7 +1180,7 @@ static int mpic_host_xlate(struct irq_domain *h, struct device_node *ct,
 }
 
 /* IRQ handler for a secondary MPIC cascaded from another IRQ controller */
-static void mpic_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpic_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct mpic *mpic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/sysdev/qe_lib/qe_ic.c b/arch/powerpc/sysdev/qe_lib/qe_ic.c
index 543765e1ef14..50179099e728 100644
--- a/arch/powerpc/sysdev/qe_lib/qe_ic.c
+++ b/arch/powerpc/sysdev/qe_lib/qe_ic.c
@@ -310,8 +310,8 @@ unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic)
 }
 
 void __init qe_ic_init(struct device_node *node, unsigned int flags,
-		void (*low_handler)(unsigned int irq, struct irq_desc *desc),
-		void (*high_handler)(unsigned int irq, struct irq_desc *desc))
+		void (*low_handler)(struct irq_desc *desc),
+		void (*high_handler)(struct irq_desc *desc))
 {
 	struct qe_ic *qe_ic;
 	struct resource res;
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c
index 188012c58f7f..0b36e6a22d25 100644
--- a/arch/powerpc/sysdev/tsi108_pci.c
+++ b/arch/powerpc/sysdev/tsi108_pci.c
@@ -428,7 +428,7 @@ void __init tsi108_pci_int_init(struct device_node *node)
 	init_pci_source();
 }
 
-void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc)
+void tsi108_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = get_pci_source();
diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
index e763fe215cf5..902af049b492 100644
--- a/arch/powerpc/sysdev/uic.c
+++ b/arch/powerpc/sysdev/uic.c
@@ -194,7 +194,7 @@ static struct irq_domain_ops uic_host_ops = {
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-void uic_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void uic_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_data *idata = irq_desc_get_irq_data(desc);
diff --git a/arch/powerpc/sysdev/xilinx_intc.c b/arch/powerpc/sysdev/xilinx_intc.c
index 56f0524e47a6..78e0f1be1474 100644
--- a/arch/powerpc/sysdev/xilinx_intc.c
+++ b/arch/powerpc/sysdev/xilinx_intc.c
@@ -222,7 +222,7 @@ int xilinx_intc_get_irq(void)
 /*
  * Support code for cascading to 8259 interrupt controllers
  */
-static void xilinx_i8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void xilinx_i8259_cascade(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 17/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
                   ` (16 preceding siblings ...)
  (?)
@ 2015-05-20 10:00 ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Ralf Baechle, Jiang Liu,
	Manuel Lauss, Sergey Ryazanov, Aleksey Makarov, David Daney,
	Christoph Lameter, Jayachandran C, Tejun Heo, John Crispin,
	Andrew Bresticker
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-mips

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/mips/alchemy/common/irq.c          |    4 ++--
 arch/mips/alchemy/devboards/bcsr.c      |    3 ++-
 arch/mips/ath25/ar2315.c                |    2 +-
 arch/mips/ath25/ar5312.c                |    2 +-
 arch/mips/ath79/irq.c                   |   11 +++++++----
 arch/mips/cavium-octeon/octeon-irq.c    |    8 ++++----
 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              |    2 +-
 arch/mips/pci/pci-ar71xx.c              |    2 +-
 arch/mips/pci/pci-ar724x.c              |    2 +-
 arch/mips/pci/pci-rt3883.c              |    3 ++-
 arch/mips/ralink/irq.c                  |    2 +-
 14 files changed, 28 insertions(+), 23 deletions(-)

diff --git a/arch/mips/alchemy/common/irq.c b/arch/mips/alchemy/common/irq.c
index 026c4eed37d5..08b3e52adf1d 100644
--- a/arch/mips/alchemy/common/irq.c
+++ b/arch/mips/alchemy/common/irq.c
@@ -851,7 +851,7 @@ static struct syscore_ops alchemy_gpic_pmops = {
 
 /* create chained handlers for the 4 IC requests to the MIPS IRQ ctrl */
 #define DISP(name, base, addr)						      \
-static void au1000_##name##_dispatch(unsigned int irq, struct irq_desc *d)    \
+static void au1000_##name##_dispatch(struct irq_desc *d)		      \
 {									      \
 	unsigned long r = __raw_readl((void __iomem *)KSEG1ADDR(addr));	      \
 	if (likely(r))							      \
@@ -865,7 +865,7 @@ DISP(ic0r1, AU1000_INTC0_INT_BASE, AU1000_IC0_PHYS_ADDR + IC_REQ1INT)
 DISP(ic1r0, AU1000_INTC1_INT_BASE, AU1000_IC1_PHYS_ADDR + IC_REQ0INT)
 DISP(ic1r1, AU1000_INTC1_INT_BASE, AU1000_IC1_PHYS_ADDR + IC_REQ1INT)
 
-static void alchemy_gpic_dispatch(unsigned int irq, struct irq_desc *d)
+static void alchemy_gpic_dispatch(struct irq_desc *d)
 {
 	int i = __raw_readl(AU1300_GPIC_ADDR + AU1300_GPIC_PRIENC);
 	generic_handle_irq(ALCHEMY_GPIC_INT_BASE + i);
diff --git a/arch/mips/alchemy/devboards/bcsr.c b/arch/mips/alchemy/devboards/bcsr.c
index c98c9ea3372c..0f725ceccffc 100644
--- a/arch/mips/alchemy/devboards/bcsr.c
+++ b/arch/mips/alchemy/devboards/bcsr.c
@@ -85,8 +85,9 @@ EXPORT_SYMBOL_GPL(bcsr_mod);
 /*
  * DB1200/PB1200 CPLD IRQ muxer
  */
-static void bcsr_csc_handler(unsigned int irq, struct irq_desc *d)
+static void bcsr_csc_handler(struct irq_desc *d)
 {
+	unsigned int irq = irq_desc_get_irq(d);
 	unsigned short bisr = __raw_readw(bcsr_virt + BCSR_REG_INTSTAT);
 
 	disable_irq_nosync(irq);
diff --git a/arch/mips/ath25/ar2315.c b/arch/mips/ath25/ar2315.c
index 8742e1cee492..b48128e64488 100644
--- a/arch/mips/ath25/ar2315.c
+++ b/arch/mips/ath25/ar2315.c
@@ -69,7 +69,7 @@ static struct irqaction ar2315_ahb_err_interrupt  = {
 	.name		= "ar2315-ahb-error",
 };
 
-static void ar2315_misc_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar2315_misc_irq_handler(struct irq_desc *desc)
 {
 	u32 pending = ar2315_rst_reg_read(AR2315_ISR) &
 		      ar2315_rst_reg_read(AR2315_IMR);
diff --git a/arch/mips/ath25/ar5312.c b/arch/mips/ath25/ar5312.c
index 094b938fd603..db3c7b435e0c 100644
--- a/arch/mips/ath25/ar5312.c
+++ b/arch/mips/ath25/ar5312.c
@@ -73,7 +73,7 @@ static struct irqaction ar5312_ahb_err_interrupt  = {
 	.name    = "ar5312-ahb-error",
 };
 
-static void ar5312_misc_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar5312_misc_irq_handler(struct irq_desc *desc)
 {
 	u32 pending = ar5312_rst_reg_read(AR5312_ISR) &
 		      ar5312_rst_reg_read(AR5312_IMR);
diff --git a/arch/mips/ath79/irq.c b/arch/mips/ath79/irq.c
index 6adae366f11a..92c143a11803 100644
--- a/arch/mips/ath79/irq.c
+++ b/arch/mips/ath79/irq.c
@@ -27,7 +27,7 @@
 static void (*ath79_ip2_handler)(void);
 static void (*ath79_ip3_handler)(void);
 
-static void ath79_misc_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ath79_misc_irq_handler(struct irq_desc *desc)
 {
 	void __iomem *base = ath79_reset_base;
 	u32 pending;
@@ -120,9 +120,10 @@ static void __init ath79_misc_irq_init(void)
 	irq_set_chained_handler(ATH79_CPU_IRQ(6), ath79_misc_irq_handler);
 }
 
-static void ar934x_ip2_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void ar934x_ip2_irq_dispatch(struct irq_desc *desc)
 {
 	u32 status;
+	unsigned int irq = irq_desc_to_irq(desc);
 
 	disable_irq_nosync(irq);
 
@@ -153,9 +154,10 @@ static void ar934x_ip2_irq_init(void)
 	irq_set_chained_handler(ATH79_CPU_IRQ(2), ar934x_ip2_irq_dispatch);
 }
 
-static void qca955x_ip2_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void qca955x_ip2_irq_dispatch(struct irq_desc *desc)
 {
 	u32 status;
+	unsigned int irq = irq_desc_to_irq(desc);
 
 	disable_irq_nosync(irq);
 
@@ -181,9 +183,10 @@ enable:
 	enable_irq(irq);
 }
 
-static void qca955x_ip3_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void qca955x_ip3_irq_dispatch(struct irq_desc *desc)
 {
 	u32 status;
+	unsigned int irq = irq_desc_to_irq(desc);
 
 	disable_irq_nosync(irq);
 
diff --git a/arch/mips/cavium-octeon/octeon-irq.c b/arch/mips/cavium-octeon/octeon-irq.c
index 18bf3dcb9d1b..6bca2f83766b 100644
--- a/arch/mips/cavium-octeon/octeon-irq.c
+++ b/arch/mips/cavium-octeon/octeon-irq.c
@@ -697,14 +697,14 @@ static void octeon_irq_ciu_gpio_ack(struct irq_data *data)
 	cvmx_write_csr(CVMX_GPIO_INT_CLR, mask);
 }
 
-static void octeon_irq_handle_trigger(unsigned int irq, struct irq_desc *desc)
+static void octeon_irq_handle_trigger(struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 
 	if (irqd_get_trigger_type(data) & IRQ_TYPE_EDGE_BOTH)
-		handle_edge_irq(irq, desc);
+		handle_edge_irq(desc);
 	else
-		handle_level_irq(irq, desc);
+		handle_level_irq(desc);
 }
 
 #ifdef CONFIG_SMP
@@ -2221,7 +2221,7 @@ static irqreturn_t octeon_irq_cib_handler(int my_irq, void *data)
 			if (irqd_get_trigger_type(irq_data) &
 				IRQ_TYPE_EDGE_BOTH)
 				cvmx_write_csr(host_data->raw_reg, 1ull << i);
-			generic_handle_irq_desc(irq, desc);
+			generic_handle_irq_desc(desc);
 		}
 	}
 
diff --git a/arch/mips/include/asm/netlogic/common.h b/arch/mips/include/asm/netlogic/common.h
index 2a4c128277e4..be52c2125d71 100644
--- a/arch/mips/include/asm/netlogic/common.h
+++ b/arch/mips/include/asm/netlogic/common.h
@@ -57,8 +57,8 @@
 #include <asm/mach-netlogic/multi-node.h>
 
 struct irq_desc;
-void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc);
-void nlm_smp_resched_ipi_handler(unsigned int irq, struct irq_desc *desc);
+void nlm_smp_function_ipi_handler(struct irq_desc *desc);
+void nlm_smp_resched_ipi_handler(struct irq_desc *desc);
 void nlm_smp_irq_init(int hwcpuid);
 void nlm_boot_secondary_cpus(void);
 int nlm_wakeup_secondary_cpus(void);
diff --git a/arch/mips/jz4740/gpio.c b/arch/mips/jz4740/gpio.c
index 00b798d2fb7c..1901178580fd 100644
--- a/arch/mips/jz4740/gpio.c
+++ b/arch/mips/jz4740/gpio.c
@@ -297,7 +297,7 @@ static void jz_gpio_check_trigger_both(struct jz_gpio_chip *chip, unsigned int i
 	writel(mask, reg);
 }
 
-static void jz_gpio_irq_demux_handler(unsigned int irq, struct irq_desc *desc)
+static void jz_gpio_irq_demux_handler(struct irq_desc *desc)
 {
 	uint32_t flag;
 	unsigned int gpio_irq;
diff --git a/arch/mips/netlogic/common/smp.c b/arch/mips/netlogic/common/smp.c
index dc3e327fbbac..a167a9a14ee1 100644
--- a/arch/mips/netlogic/common/smp.c
+++ b/arch/mips/netlogic/common/smp.c
@@ -82,7 +82,7 @@ void nlm_send_ipi_mask(const struct cpumask *mask, unsigned int action)
 }
 
 /* IRQ_IPI_SMP_FUNCTION Handler */
-void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc)
+void nlm_smp_function_ipi_handler(struct irq_desc *desc)
 {
 	clear_c0_eimr(irq);
 	ack_c0_eirr(irq);
@@ -91,7 +91,7 @@ void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc)
 }
 
 /* IRQ_IPI_SMP_RESCHEDULE  handler */
-void nlm_smp_resched_ipi_handler(unsigned int irq, struct irq_desc *desc)
+void nlm_smp_resched_ipi_handler(struct irq_desc *desc)
 {
 	clear_c0_eimr(irq);
 	ack_c0_eirr(irq);
diff --git a/arch/mips/pci/pci-ar2315.c b/arch/mips/pci/pci-ar2315.c
index dadb30306a0a..4fd04b0c0597 100644
--- a/arch/mips/pci/pci-ar2315.c
+++ b/arch/mips/pci/pci-ar2315.c
@@ -318,7 +318,7 @@ static int ar2315_pci_host_setup(struct ar2315_pci_ctrl *apc)
 	return 0;
 }
 
-static void ar2315_pci_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar2315_pci_irq_handler(struct irq_desc *desc)
 {
 	struct ar2315_pci_ctrl *apc = irq_desc_get_handler_data(desc);
 	u32 pending = ar2315_pci_reg_read(apc, AR2315_PCI_ISR) &
diff --git a/arch/mips/pci/pci-ar71xx.c b/arch/mips/pci/pci-ar71xx.c
index dac6a07c45bf..d490b3d58ca5 100644
--- a/arch/mips/pci/pci-ar71xx.c
+++ b/arch/mips/pci/pci-ar71xx.c
@@ -226,7 +226,7 @@ static struct pci_ops ar71xx_pci_ops = {
 	.write	= ar71xx_pci_write_config,
 };
 
-static void ar71xx_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ar71xx_pci_irq_handler(struct irq_desc *desc)
 {
 	struct ar71xx_pci_controller *apc;
 	void __iomem *base = ath79_reset_base;
diff --git a/arch/mips/pci/pci-ar724x.c b/arch/mips/pci/pci-ar724x.c
index 0af362b5af92..d7951621cd34 100644
--- a/arch/mips/pci/pci-ar724x.c
+++ b/arch/mips/pci/pci-ar724x.c
@@ -225,7 +225,7 @@ static struct pci_ops ar724x_pci_ops = {
 	.write	= ar724x_pci_write,
 };
 
-static void ar724x_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ar724x_pci_irq_handler(struct irq_desc *desc)
 {
 	struct ar724x_pci_controller *apc;
 	void __iomem *base;
diff --git a/arch/mips/pci/pci-rt3883.c b/arch/mips/pci/pci-rt3883.c
index 80fafe646e74..1c2d5f49ef7a 100644
--- a/arch/mips/pci/pci-rt3883.c
+++ b/arch/mips/pci/pci-rt3883.c
@@ -129,7 +129,7 @@ static void rt3883_pci_write_cfg32(struct rt3883_pci_controller *rpc,
 	rt3883_pci_w32(rpc, val, RT3883_PCI_REG_CFGDATA);
 }
 
-static void rt3883_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void rt3883_pci_irq_handler(struct irq_desc *desc)
 {
 	struct rt3883_pci_controller *rpc;
 	u32 pending;
@@ -145,6 +145,7 @@ static void rt3883_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
 	}
 
 	while (pending) {
+		unsigned int irq;
 		unsigned bit = __ffs(pending);
 
 		irq = irq_find_mapping(rpc->irq_domain, bit);
diff --git a/arch/mips/ralink/irq.c b/arch/mips/ralink/irq.c
index da301e0a2f1f..ae38a1348e70 100644
--- a/arch/mips/ralink/irq.c
+++ b/arch/mips/ralink/irq.c
@@ -95,7 +95,7 @@ unsigned int get_c0_compare_int(void)
 	return CP0_LEGACY_COMPARE_IRQ;
 }
 
-static void ralink_intc_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ralink_intc_irq_handler(struct irq_desc *desc)
 {
 	u32 pending = rt_intc_r32(INTC_REG_STATUS0);
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 18/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20 10:00   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Geert Uytterhoeven, Joshua Thompson,
	Jiang Liu
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-m68k

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 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 +++---
 7 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/arch/m68k/amiga/amiints.c b/arch/m68k/amiga/amiints.c
index 47b5f90002ab..7ff739e94896 100644
--- a/arch/m68k/amiga/amiints.c
+++ b/arch/m68k/amiga/amiints.c
@@ -46,7 +46,7 @@ static struct irq_chip amiga_irq_chip = {
  * The builtin Amiga hardware interrupt handlers.
  */
 
-static void ami_int1(unsigned int irq, struct irq_desc *desc)
+static void ami_int1(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -69,7 +69,7 @@ static void ami_int1(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int3(unsigned int irq, struct irq_desc *desc)
+static void ami_int3(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -92,7 +92,7 @@ static void ami_int3(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int4(unsigned int irq, struct irq_desc *desc)
+static void ami_int4(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -121,7 +121,7 @@ static void ami_int4(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int5(unsigned int irq, struct irq_desc *desc)
+static void ami_int5(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
diff --git a/arch/m68k/coldfire/intc-5272.c b/arch/m68k/coldfire/intc-5272.c
index d1e2fbad327c..b0a19e207a63 100644
--- a/arch/m68k/coldfire/intc-5272.c
+++ b/arch/m68k/coldfire/intc-5272.c
@@ -143,10 +143,10 @@ static int intc_irq_set_type(struct irq_data *d, unsigned int type)
  * We need to be careful with the masking/acking due to the side effects
  * of masking an interrupt.
  */
-static void intc_external_irq(unsigned int irq, struct irq_desc *desc)
+static void intc_external_irq(struct irq_desc *desc)
 {
 	irq_desc_get_chip(desc)->irq_ack(&desc->irq_data);
-	handle_simple_irq(irq, desc);
+	handle_simple_irq(desc);
 }
 
 static struct irq_chip intc_irq_chip = {
diff --git a/arch/m68k/include/asm/mac_via.h b/arch/m68k/include/asm/mac_via.h
index fe3fc9ae1b69..53c632c85b03 100644
--- a/arch/m68k/include/asm/mac_via.h
+++ b/arch/m68k/include/asm/mac_via.h
@@ -261,7 +261,7 @@ extern void via_irq_enable(int);
 extern void via_irq_disable(int);
 extern void via_nubus_irq_startup(int irq);
 extern void via_nubus_irq_shutdown(int irq);
-extern void via1_irq(unsigned int irq, struct irq_desc *desc);
+extern void via1_irq(struct irq_desc *desc);
 extern void via1_set_head(int);
 extern int via2_scsi_drq_pending(void);
 
diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c
index 3fe0e43d44f6..f6f7d42713ec 100644
--- a/arch/m68k/mac/baboon.c
+++ b/arch/m68k/mac/baboon.c
@@ -45,7 +45,7 @@ void __init baboon_init(void)
  * Baboon interrupt handler. This works a lot like a VIA.
  */
 
-static void baboon_irq(unsigned int irq, struct irq_desc *desc)
+static void baboon_irq(struct irq_desc *desc)
 {
 	int irq_bit, irq_num;
 	unsigned char events;
diff --git a/arch/m68k/mac/oss.c b/arch/m68k/mac/oss.c
index bb11dceed7ed..1fe868166a9c 100644
--- a/arch/m68k/mac/oss.c
+++ b/arch/m68k/mac/oss.c
@@ -63,7 +63,7 @@ void __init oss_nubus_init(void)
  * Handle miscellaneous OSS interrupts.
  */
 
-static void oss_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_irq(struct irq_desc *desc)
 {
 	int events = oss->irq_pending &
 	             (OSS_IP_IOPSCC | OSS_IP_SCSI | OSS_IP_IOPISM);
@@ -97,7 +97,7 @@ static void oss_irq(unsigned int irq, struct irq_desc *desc)
  * Unlike the VIA/RBV this is on its own autovector interrupt level.
  */
 
-static void oss_nubus_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_nubus_irq(struct irq_desc *desc)
 {
 	int events, irq_bit, i;
 
diff --git a/arch/m68k/mac/psc.c b/arch/m68k/mac/psc.c
index 835fa04511c8..23ddaa07fa0e 100644
--- a/arch/m68k/mac/psc.c
+++ b/arch/m68k/mac/psc.c
@@ -113,8 +113,9 @@ void __init psc_init(void)
  * PSC interrupt handler. It's a lot like the VIA interrupt handler.
  */
 
-static void psc_irq(unsigned int irq, struct irq_desc *desc)
+static void psc_irq(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned int offset = (unsigned int)irq_desc_get_handler_data(desc);
 	int pIFR	= pIFRbase + offset;
 	int pIER	= pIERbase + offset;
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c
index e198dec868e4..979ea8312db8 100644
--- a/arch/m68k/mac/via.c
+++ b/arch/m68k/mac/via.c
@@ -446,7 +446,7 @@ void via_nubus_irq_shutdown(int irq)
  * via6522.c :-), disable/pending masks added.
  */
 
-void via1_irq(unsigned int irq, struct irq_desc *desc)
+void via1_irq(struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -467,7 +467,7 @@ void via1_irq(unsigned int irq, struct irq_desc *desc)
 	} while (events >= irq_bit);
 }
 
-static void via2_irq(unsigned int irq, struct irq_desc *desc)
+static void via2_irq(struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -493,7 +493,7 @@ static void via2_irq(unsigned int irq, struct irq_desc *desc)
  * VIA2 dispatcher as a fast interrupt handler.
  */
 
-void via_nubus_irq(unsigned int irq, struct irq_desc *desc)
+void via_nubus_irq(struct irq_desc *desc)
 {
 	int slot_irq;
 	unsigned char slot_bit, events;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 18/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Geert Uytterhoeven, Joshua Thompson,
	Jiang Liu
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-m68k

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 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 +++---
 7 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/arch/m68k/amiga/amiints.c b/arch/m68k/amiga/amiints.c
index 47b5f90002ab..7ff739e94896 100644
--- a/arch/m68k/amiga/amiints.c
+++ b/arch/m68k/amiga/amiints.c
@@ -46,7 +46,7 @@ static struct irq_chip amiga_irq_chip = {
  * The builtin Amiga hardware interrupt handlers.
  */
 
-static void ami_int1(unsigned int irq, struct irq_desc *desc)
+static void ami_int1(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -69,7 +69,7 @@ static void ami_int1(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int3(unsigned int irq, struct irq_desc *desc)
+static void ami_int3(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -92,7 +92,7 @@ static void ami_int3(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int4(unsigned int irq, struct irq_desc *desc)
+static void ami_int4(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -121,7 +121,7 @@ static void ami_int4(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int5(unsigned int irq, struct irq_desc *desc)
+static void ami_int5(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
diff --git a/arch/m68k/coldfire/intc-5272.c b/arch/m68k/coldfire/intc-5272.c
index d1e2fbad327c..b0a19e207a63 100644
--- a/arch/m68k/coldfire/intc-5272.c
+++ b/arch/m68k/coldfire/intc-5272.c
@@ -143,10 +143,10 @@ static int intc_irq_set_type(struct irq_data *d, unsigned int type)
  * We need to be careful with the masking/acking due to the side effects
  * of masking an interrupt.
  */
-static void intc_external_irq(unsigned int irq, struct irq_desc *desc)
+static void intc_external_irq(struct irq_desc *desc)
 {
 	irq_desc_get_chip(desc)->irq_ack(&desc->irq_data);
-	handle_simple_irq(irq, desc);
+	handle_simple_irq(desc);
 }
 
 static struct irq_chip intc_irq_chip = {
diff --git a/arch/m68k/include/asm/mac_via.h b/arch/m68k/include/asm/mac_via.h
index fe3fc9ae1b69..53c632c85b03 100644
--- a/arch/m68k/include/asm/mac_via.h
+++ b/arch/m68k/include/asm/mac_via.h
@@ -261,7 +261,7 @@ extern void via_irq_enable(int);
 extern void via_irq_disable(int);
 extern void via_nubus_irq_startup(int irq);
 extern void via_nubus_irq_shutdown(int irq);
-extern void via1_irq(unsigned int irq, struct irq_desc *desc);
+extern void via1_irq(struct irq_desc *desc);
 extern void via1_set_head(int);
 extern int via2_scsi_drq_pending(void);
 
diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c
index 3fe0e43d44f6..f6f7d42713ec 100644
--- a/arch/m68k/mac/baboon.c
+++ b/arch/m68k/mac/baboon.c
@@ -45,7 +45,7 @@ void __init baboon_init(void)
  * Baboon interrupt handler. This works a lot like a VIA.
  */
 
-static void baboon_irq(unsigned int irq, struct irq_desc *desc)
+static void baboon_irq(struct irq_desc *desc)
 {
 	int irq_bit, irq_num;
 	unsigned char events;
diff --git a/arch/m68k/mac/oss.c b/arch/m68k/mac/oss.c
index bb11dceed7ed..1fe868166a9c 100644
--- a/arch/m68k/mac/oss.c
+++ b/arch/m68k/mac/oss.c
@@ -63,7 +63,7 @@ void __init oss_nubus_init(void)
  * Handle miscellaneous OSS interrupts.
  */
 
-static void oss_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_irq(struct irq_desc *desc)
 {
 	int events = oss->irq_pending &
 	             (OSS_IP_IOPSCC | OSS_IP_SCSI | OSS_IP_IOPISM);
@@ -97,7 +97,7 @@ static void oss_irq(unsigned int irq, struct irq_desc *desc)
  * Unlike the VIA/RBV this is on its own autovector interrupt level.
  */
 
-static void oss_nubus_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_nubus_irq(struct irq_desc *desc)
 {
 	int events, irq_bit, i;
 
diff --git a/arch/m68k/mac/psc.c b/arch/m68k/mac/psc.c
index 835fa04511c8..23ddaa07fa0e 100644
--- a/arch/m68k/mac/psc.c
+++ b/arch/m68k/mac/psc.c
@@ -113,8 +113,9 @@ void __init psc_init(void)
  * PSC interrupt handler. It's a lot like the VIA interrupt handler.
  */
 
-static void psc_irq(unsigned int irq, struct irq_desc *desc)
+static void psc_irq(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned int offset = (unsigned int)irq_desc_get_handler_data(desc);
 	int pIFR	= pIFRbase + offset;
 	int pIER	= pIERbase + offset;
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c
index e198dec868e4..979ea8312db8 100644
--- a/arch/m68k/mac/via.c
+++ b/arch/m68k/mac/via.c
@@ -446,7 +446,7 @@ void via_nubus_irq_shutdown(int irq)
  * via6522.c :-), disable/pending masks added.
  */
 
-void via1_irq(unsigned int irq, struct irq_desc *desc)
+void via1_irq(struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -467,7 +467,7 @@ void via1_irq(unsigned int irq, struct irq_desc *desc)
 	} while (events >= irq_bit);
 }
 
-static void via2_irq(unsigned int irq, struct irq_desc *desc)
+static void via2_irq(struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -493,7 +493,7 @@ static void via2_irq(unsigned int irq, struct irq_desc *desc)
  * VIA2 dispatcher as a fast interrupt handler.
  */
 
-void via_nubus_irq(unsigned int irq, struct irq_desc *desc)
+void via_nubus_irq(struct irq_desc *desc)
 {
 	int slot_irq;
 	unsigned char slot_bit, events;
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 18/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
                   ` (18 preceding siblings ...)
  (?)
@ 2015-05-20 10:00 ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Geert Uytterhoeven, Joshua Thompson,
	Jiang Liu
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-m68k

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 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 +++---
 7 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/arch/m68k/amiga/amiints.c b/arch/m68k/amiga/amiints.c
index 47b5f90002ab..7ff739e94896 100644
--- a/arch/m68k/amiga/amiints.c
+++ b/arch/m68k/amiga/amiints.c
@@ -46,7 +46,7 @@ static struct irq_chip amiga_irq_chip = {
  * The builtin Amiga hardware interrupt handlers.
  */
 
-static void ami_int1(unsigned int irq, struct irq_desc *desc)
+static void ami_int1(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -69,7 +69,7 @@ static void ami_int1(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int3(unsigned int irq, struct irq_desc *desc)
+static void ami_int3(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -92,7 +92,7 @@ static void ami_int3(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int4(unsigned int irq, struct irq_desc *desc)
+static void ami_int4(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -121,7 +121,7 @@ static void ami_int4(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int5(unsigned int irq, struct irq_desc *desc)
+static void ami_int5(struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
diff --git a/arch/m68k/coldfire/intc-5272.c b/arch/m68k/coldfire/intc-5272.c
index d1e2fbad327c..b0a19e207a63 100644
--- a/arch/m68k/coldfire/intc-5272.c
+++ b/arch/m68k/coldfire/intc-5272.c
@@ -143,10 +143,10 @@ static int intc_irq_set_type(struct irq_data *d, unsigned int type)
  * We need to be careful with the masking/acking due to the side effects
  * of masking an interrupt.
  */
-static void intc_external_irq(unsigned int irq, struct irq_desc *desc)
+static void intc_external_irq(struct irq_desc *desc)
 {
 	irq_desc_get_chip(desc)->irq_ack(&desc->irq_data);
-	handle_simple_irq(irq, desc);
+	handle_simple_irq(desc);
 }
 
 static struct irq_chip intc_irq_chip = {
diff --git a/arch/m68k/include/asm/mac_via.h b/arch/m68k/include/asm/mac_via.h
index fe3fc9ae1b69..53c632c85b03 100644
--- a/arch/m68k/include/asm/mac_via.h
+++ b/arch/m68k/include/asm/mac_via.h
@@ -261,7 +261,7 @@ extern void via_irq_enable(int);
 extern void via_irq_disable(int);
 extern void via_nubus_irq_startup(int irq);
 extern void via_nubus_irq_shutdown(int irq);
-extern void via1_irq(unsigned int irq, struct irq_desc *desc);
+extern void via1_irq(struct irq_desc *desc);
 extern void via1_set_head(int);
 extern int via2_scsi_drq_pending(void);
 
diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c
index 3fe0e43d44f6..f6f7d42713ec 100644
--- a/arch/m68k/mac/baboon.c
+++ b/arch/m68k/mac/baboon.c
@@ -45,7 +45,7 @@ void __init baboon_init(void)
  * Baboon interrupt handler. This works a lot like a VIA.
  */
 
-static void baboon_irq(unsigned int irq, struct irq_desc *desc)
+static void baboon_irq(struct irq_desc *desc)
 {
 	int irq_bit, irq_num;
 	unsigned char events;
diff --git a/arch/m68k/mac/oss.c b/arch/m68k/mac/oss.c
index bb11dceed7ed..1fe868166a9c 100644
--- a/arch/m68k/mac/oss.c
+++ b/arch/m68k/mac/oss.c
@@ -63,7 +63,7 @@ void __init oss_nubus_init(void)
  * Handle miscellaneous OSS interrupts.
  */
 
-static void oss_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_irq(struct irq_desc *desc)
 {
 	int events = oss->irq_pending &
 	             (OSS_IP_IOPSCC | OSS_IP_SCSI | OSS_IP_IOPISM);
@@ -97,7 +97,7 @@ static void oss_irq(unsigned int irq, struct irq_desc *desc)
  * Unlike the VIA/RBV this is on its own autovector interrupt level.
  */
 
-static void oss_nubus_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_nubus_irq(struct irq_desc *desc)
 {
 	int events, irq_bit, i;
 
diff --git a/arch/m68k/mac/psc.c b/arch/m68k/mac/psc.c
index 835fa04511c8..23ddaa07fa0e 100644
--- a/arch/m68k/mac/psc.c
+++ b/arch/m68k/mac/psc.c
@@ -113,8 +113,9 @@ void __init psc_init(void)
  * PSC interrupt handler. It's a lot like the VIA interrupt handler.
  */
 
-static void psc_irq(unsigned int irq, struct irq_desc *desc)
+static void psc_irq(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned int offset = (unsigned int)irq_desc_get_handler_data(desc);
 	int pIFR	= pIFRbase + offset;
 	int pIER	= pIERbase + offset;
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c
index e198dec868e4..979ea8312db8 100644
--- a/arch/m68k/mac/via.c
+++ b/arch/m68k/mac/via.c
@@ -446,7 +446,7 @@ void via_nubus_irq_shutdown(int irq)
  * via6522.c :-), disable/pending masks added.
  */
 
-void via1_irq(unsigned int irq, struct irq_desc *desc)
+void via1_irq(struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -467,7 +467,7 @@ void via1_irq(unsigned int irq, struct irq_desc *desc)
 	} while (events >= irq_bit);
 }
 
-static void via2_irq(unsigned int irq, struct irq_desc *desc)
+static void via2_irq(struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -493,7 +493,7 @@ static void via2_irq(unsigned int irq, struct irq_desc *desc)
  * VIA2 dispatcher as a fast interrupt handler.
  */
 
-void via_nubus_irq(unsigned int irq, struct irq_desc *desc)
+void via_nubus_irq(struct irq_desc *desc)
 {
 	int slot_irq;
 	unsigned char slot_bit, events;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 19/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20 10:00   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Simon Horman, Magnus Damm,
	Kevin Cernekee, abdoulaye berthe, Jiang Liu
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-sh

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 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 +-
 drivers/sh/intc/core.c             |    4 ++--
 drivers/sh/intc/virq.c             |    5 +++--
 7 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/arch/sh/boards/mach-se/7343/irq.c b/arch/sh/boards/mach-se/7343/irq.c
index 1087dba9b015..6129aef6db76 100644
--- a/arch/sh/boards/mach-se/7343/irq.c
+++ b/arch/sh/boards/mach-se/7343/irq.c
@@ -29,9 +29,9 @@
 static void __iomem *se7343_irq_regs;
 struct irq_domain *se7343_irq_domain;
 
-static void se7343_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7343_irq_demux(struct irq_desc *desc)
 {
-	struct irq_data *data = irq_get_irq_data(irq);
+	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
 	int bit;
diff --git a/arch/sh/boards/mach-se/7722/irq.c b/arch/sh/boards/mach-se/7722/irq.c
index 00e699232621..7200d595fe68 100644
--- a/arch/sh/boards/mach-se/7722/irq.c
+++ b/arch/sh/boards/mach-se/7722/irq.c
@@ -28,8 +28,9 @@
 static void __iomem *se7722_irq_regs;
 struct irq_domain *se7722_irq_domain;
 
-static void se7722_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7722_irq_demux(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
diff --git a/arch/sh/boards/mach-se/7724/irq.c b/arch/sh/boards/mach-se/7724/irq.c
index 5d1d3ec9a6cd..64e681e66c57 100644
--- a/arch/sh/boards/mach-se/7724/irq.c
+++ b/arch/sh/boards/mach-se/7724/irq.c
@@ -92,8 +92,9 @@ static struct irq_chip se7724_irq_chip __read_mostly = {
 	.irq_unmask	= enable_se7724_irq,
 };
 
-static void se7724_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7724_irq_demux(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct fpga_irq set = get_fpga_irq(irq);
 	unsigned short intv = __raw_readw(set.sraddr);
 	unsigned int ext_irq = set.base;
diff --git a/arch/sh/boards/mach-x3proto/gpio.c b/arch/sh/boards/mach-x3proto/gpio.c
index f035a7ac6456..1fb2cbee25f2 100644
--- a/arch/sh/boards/mach-x3proto/gpio.c
+++ b/arch/sh/boards/mach-x3proto/gpio.c
@@ -60,9 +60,9 @@ static int x3proto_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
 	return virq;
 }
 
-static void x3proto_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void x3proto_gpio_irq_handler(struct irq_desc *desc)
 {
-	struct irq_data *data = irq_get_irq_data(irq);
+	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
 	int pin;
diff --git a/arch/sh/cchips/hd6446x/hd64461.c b/arch/sh/cchips/hd6446x/hd64461.c
index e9735616bdc8..8180092502f7 100644
--- a/arch/sh/cchips/hd6446x/hd64461.c
+++ b/arch/sh/cchips/hd6446x/hd64461.c
@@ -56,7 +56,7 @@ static struct irq_chip hd64461_irq_chip = {
 	.irq_unmask	= hd64461_unmask_irq,
 };
 
-static void hd64461_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void hd64461_irq_demux(struct irq_desc *desc)
 {
 	unsigned short intv = __raw_readw(HD64461_NIRR);
 	unsigned int ext_irq = HD64461_IRQBASE;
diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
index e4ca964ca840..8c75e7c2c9b3 100644
--- a/drivers/sh/intc/core.c
+++ b/drivers/sh/intc/core.c
@@ -65,9 +65,9 @@ void intc_set_prio_level(unsigned int irq, unsigned int level)
 	raw_spin_unlock_irqrestore(&intc_big_lock, flags);
 }
 
-static void intc_redirect_irq(unsigned int irq, struct irq_desc *desc)
+static void intc_redirect_irq(struct irq_desc *desc)
 {
-	generic_handle_irq_desc(irq, desc);
+	generic_handle_irq_desc(desc);
 }
 
 static void __init intc_register_irq(struct intc_desc *desc,
diff --git a/drivers/sh/intc/virq.c b/drivers/sh/intc/virq.c
index 8083882a91c0..49ffc8d5cb00 100644
--- a/drivers/sh/intc/virq.c
+++ b/drivers/sh/intc/virq.c
@@ -107,8 +107,9 @@ static int add_virq_to_pirq(unsigned int irq, unsigned int virq)
 	return 0;
 }
 
-static void intc_virq_handler(unsigned int irq, struct irq_desc *desc)
+static void intc_virq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	struct intc_virq_list *entry, *vlist = irq_data_get_irq_handler_data(data);
@@ -124,7 +125,7 @@ static void intc_virq_handler(unsigned int irq, struct irq_desc *desc)
 			handle = (unsigned long)irq_desc_get_handler_data(vdesc);
 			addr = INTC_REG(d, _INTC_ADDR_E(handle), 0);
 			if (intc_reg_fns[_INTC_FN(handle)](addr, handle, 0))
-				generic_handle_irq_desc(entry->irq, vdesc);
+				generic_handle_irq_desc(vdesc);
 		}
 	}
 
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 19/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Simon Horman, Magnus Damm,
	Kevin Cernekee, abdoulaye berthe, Jiang Liu
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-sh

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 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 +-
 drivers/sh/intc/core.c             |    4 ++--
 drivers/sh/intc/virq.c             |    5 +++--
 7 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/arch/sh/boards/mach-se/7343/irq.c b/arch/sh/boards/mach-se/7343/irq.c
index 1087dba9b015..6129aef6db76 100644
--- a/arch/sh/boards/mach-se/7343/irq.c
+++ b/arch/sh/boards/mach-se/7343/irq.c
@@ -29,9 +29,9 @@
 static void __iomem *se7343_irq_regs;
 struct irq_domain *se7343_irq_domain;
 
-static void se7343_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7343_irq_demux(struct irq_desc *desc)
 {
-	struct irq_data *data = irq_get_irq_data(irq);
+	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
 	int bit;
diff --git a/arch/sh/boards/mach-se/7722/irq.c b/arch/sh/boards/mach-se/7722/irq.c
index 00e699232621..7200d595fe68 100644
--- a/arch/sh/boards/mach-se/7722/irq.c
+++ b/arch/sh/boards/mach-se/7722/irq.c
@@ -28,8 +28,9 @@
 static void __iomem *se7722_irq_regs;
 struct irq_domain *se7722_irq_domain;
 
-static void se7722_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7722_irq_demux(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
diff --git a/arch/sh/boards/mach-se/7724/irq.c b/arch/sh/boards/mach-se/7724/irq.c
index 5d1d3ec9a6cd..64e681e66c57 100644
--- a/arch/sh/boards/mach-se/7724/irq.c
+++ b/arch/sh/boards/mach-se/7724/irq.c
@@ -92,8 +92,9 @@ static struct irq_chip se7724_irq_chip __read_mostly = {
 	.irq_unmask	= enable_se7724_irq,
 };
 
-static void se7724_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7724_irq_demux(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct fpga_irq set = get_fpga_irq(irq);
 	unsigned short intv = __raw_readw(set.sraddr);
 	unsigned int ext_irq = set.base;
diff --git a/arch/sh/boards/mach-x3proto/gpio.c b/arch/sh/boards/mach-x3proto/gpio.c
index f035a7ac6456..1fb2cbee25f2 100644
--- a/arch/sh/boards/mach-x3proto/gpio.c
+++ b/arch/sh/boards/mach-x3proto/gpio.c
@@ -60,9 +60,9 @@ static int x3proto_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
 	return virq;
 }
 
-static void x3proto_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void x3proto_gpio_irq_handler(struct irq_desc *desc)
 {
-	struct irq_data *data = irq_get_irq_data(irq);
+	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
 	int pin;
diff --git a/arch/sh/cchips/hd6446x/hd64461.c b/arch/sh/cchips/hd6446x/hd64461.c
index e9735616bdc8..8180092502f7 100644
--- a/arch/sh/cchips/hd6446x/hd64461.c
+++ b/arch/sh/cchips/hd6446x/hd64461.c
@@ -56,7 +56,7 @@ static struct irq_chip hd64461_irq_chip = {
 	.irq_unmask	= hd64461_unmask_irq,
 };
 
-static void hd64461_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void hd64461_irq_demux(struct irq_desc *desc)
 {
 	unsigned short intv = __raw_readw(HD64461_NIRR);
 	unsigned int ext_irq = HD64461_IRQBASE;
diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
index e4ca964ca840..8c75e7c2c9b3 100644
--- a/drivers/sh/intc/core.c
+++ b/drivers/sh/intc/core.c
@@ -65,9 +65,9 @@ void intc_set_prio_level(unsigned int irq, unsigned int level)
 	raw_spin_unlock_irqrestore(&intc_big_lock, flags);
 }
 
-static void intc_redirect_irq(unsigned int irq, struct irq_desc *desc)
+static void intc_redirect_irq(struct irq_desc *desc)
 {
-	generic_handle_irq_desc(irq, desc);
+	generic_handle_irq_desc(desc);
 }
 
 static void __init intc_register_irq(struct intc_desc *desc,
diff --git a/drivers/sh/intc/virq.c b/drivers/sh/intc/virq.c
index 8083882a91c0..49ffc8d5cb00 100644
--- a/drivers/sh/intc/virq.c
+++ b/drivers/sh/intc/virq.c
@@ -107,8 +107,9 @@ static int add_virq_to_pirq(unsigned int irq, unsigned int virq)
 	return 0;
 }
 
-static void intc_virq_handler(unsigned int irq, struct irq_desc *desc)
+static void intc_virq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	struct intc_virq_list *entry, *vlist = irq_data_get_irq_handler_data(data);
@@ -124,7 +125,7 @@ static void intc_virq_handler(unsigned int irq, struct irq_desc *desc)
 			handle = (unsigned long)irq_desc_get_handler_data(vdesc);
 			addr = INTC_REG(d, _INTC_ADDR_E(handle), 0);
 			if (intc_reg_fns[_INTC_FN(handle)](addr, handle, 0))
-				generic_handle_irq_desc(entry->irq, vdesc);
+				generic_handle_irq_desc(vdesc);
 		}
 	}
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 20/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
  (?)
@ 2015-05-20 10:00   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Richard Henderson, Ivan Kokshaysky,
	Matt Turner, Haavard Skinnemoen, Hans-Christian Egtvedt,
	Steven Miao, Mark Salter, Aurelien Jacquiot, David S. Miller,
	Chris Metcalf, Guan Xuetao, x86, Rusty Russell, Andreas Larsson,
	Jiang Liu
  Cc: Konrad Rzeszutek Wilk, Tony Luck, linux-kernel, linux-pci,
	linux-acpi, Ingo Molnar, linux-alpha, adi-buildroot-devel,
	linux-c6x-dev, sparclinux, lguest

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/alpha/kernel/irq.c             |    2 +-
 arch/avr32/mach-at32ap/extint.c     |    2 +-
 arch/avr32/mach-at32ap/pio.c        |    2 +-
 arch/blackfin/kernel/ipipe.c        |    4 ++--
 arch/c6x/platforms/megamod-pic.c    |    3 ++-
 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 +-
 12 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c
index bd8e47699cad..d2704d53aac8 100644
--- a/arch/alpha/kernel/irq.c
+++ b/arch/alpha/kernel/irq.c
@@ -118,6 +118,6 @@ handle_irq(int irq)
 	}
 
 	irq_enter();
-	generic_handle_irq_desc(irq, desc);
+	generic_handle_irq_desc(desc);
 	irq_exit();
 }
diff --git a/arch/avr32/mach-at32ap/extint.c b/arch/avr32/mach-at32ap/extint.c
index cfb298d66305..b83a974b7855 100644
--- a/arch/avr32/mach-at32ap/extint.c
+++ b/arch/avr32/mach-at32ap/extint.c
@@ -144,7 +144,7 @@ static struct irq_chip eic_chip = {
 	.irq_set_type	= eic_set_irq_type,
 };
 
-static void demux_eic_irq(unsigned int irq, struct irq_desc *desc)
+static void demux_eic_irq(struct irq_desc *desc)
 {
 	struct eic *eic = irq_desc_get_handler_data(desc);
 	unsigned long status, pending;
diff --git a/arch/avr32/mach-at32ap/pio.c b/arch/avr32/mach-at32ap/pio.c
index 2583e6cc44e9..85009bbc01e6 100644
--- a/arch/avr32/mach-at32ap/pio.c
+++ b/arch/avr32/mach-at32ap/pio.c
@@ -281,7 +281,7 @@ static struct irq_chip gpio_irqchip = {
 	.irq_set_type	= gpio_irq_type,
 };
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(struct irq_desc *desc)
 {
 	struct pio_device	*pio = irq_desc_get_chip_data(desc);
 	unsigned		gpio_irq;
diff --git a/arch/blackfin/kernel/ipipe.c b/arch/blackfin/kernel/ipipe.c
index f657b38163e3..8daca4d56992 100644
--- a/arch/blackfin/kernel/ipipe.c
+++ b/arch/blackfin/kernel/ipipe.c
@@ -54,9 +54,9 @@ atomic_t __ipipe_irq_lvdepth[IVG15 + 1];
 unsigned long __ipipe_irq_lvmask = bfin_no_irqs;
 EXPORT_SYMBOL(__ipipe_irq_lvmask);
 
-static void __ipipe_ack_irq(unsigned irq, struct irq_desc *desc)
+static void __ipipe_ack_irq(struct irq_desc *desc)
 {
-	desc->ipipe_ack(irq, desc);
+	desc->ipipe_ack(irq_desc_get_irq(desc), desc);
 }
 
 /*
diff --git a/arch/c6x/platforms/megamod-pic.c b/arch/c6x/platforms/megamod-pic.c
index 74e3371eb824..c15f0b15faf4 100644
--- a/arch/c6x/platforms/megamod-pic.c
+++ b/arch/c6x/platforms/megamod-pic.c
@@ -93,12 +93,13 @@ static struct irq_chip megamod_chip = {
 	.irq_unmask	= unmask_megamod,
 };
 
-static void megamod_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void megamod_irq_cascade(struct irq_desc *desc)
 {
 	struct megamod_cascade_data *cascade;
 	struct megamod_pic *pic;
 	u32 events;
 	int n, idx;
+	unsigned int irq;
 
 	cascade = irq_desc_get_handler_data(desc);
 
diff --git a/arch/sparc/kernel/leon_kernel.c b/arch/sparc/kernel/leon_kernel.c
index 0299f052a2ef..42efcf85f721 100644
--- a/arch/sparc/kernel/leon_kernel.c
+++ b/arch/sparc/kernel/leon_kernel.c
@@ -53,7 +53,7 @@ static inline unsigned int leon_eirq_get(int cpu)
 }
 
 /* Handle one or multiple IRQs from the extended interrupt controller */
-static void leon_handle_ext_irq(unsigned int irq, struct irq_desc *desc)
+static void leon_handle_ext_irq(struct irq_desc *desc)
 {
 	unsigned int eirq;
 	struct irq_bucket *p;
diff --git a/arch/sparc/kernel/leon_pci_grpci1.c b/arch/sparc/kernel/leon_pci_grpci1.c
index 3382f7b3eeef..1e77128a8f88 100644
--- a/arch/sparc/kernel/leon_pci_grpci1.c
+++ b/arch/sparc/kernel/leon_pci_grpci1.c
@@ -357,7 +357,7 @@ static struct irq_chip grpci1_irq = {
 };
 
 /* Handle one or multiple IRQs from the PCI core */
-static void grpci1_pci_flow_irq(unsigned int irq, struct irq_desc *desc)
+static void grpci1_pci_flow_irq(struct irq_desc *desc)
 {
 	struct grpci1_priv *priv = grpci1priv;
 	int i, ack = 0;
diff --git a/arch/sparc/kernel/leon_pci_grpci2.c b/arch/sparc/kernel/leon_pci_grpci2.c
index 94e392bdee7d..0398fc2c0e44 100644
--- a/arch/sparc/kernel/leon_pci_grpci2.c
+++ b/arch/sparc/kernel/leon_pci_grpci2.c
@@ -498,7 +498,7 @@ static struct irq_chip grpci2_irq = {
 };
 
 /* Handle one or multiple IRQs from the PCI core */
-static void grpci2_pci_flow_irq(unsigned int irq, struct irq_desc *desc)
+static void grpci2_pci_flow_irq(struct irq_desc *desc)
 {
 	struct grpci2_priv *priv = grpci2priv;
 	int i, ack = 0;
diff --git a/arch/tile/kernel/pci_gx.c b/arch/tile/kernel/pci_gx.c
index 65b701b3b5ed..4c017d0d2de8 100644
--- a/arch/tile/kernel/pci_gx.c
+++ b/arch/tile/kernel/pci_gx.c
@@ -304,7 +304,7 @@ static struct irq_chip tilegx_legacy_irq_chip = {
  * to Linux which just calls handle_level_irq() after clearing the
  * MAC INTx Assert status bit associated with this interrupt.
  */
-static void trio_handle_level_irq(unsigned int irq, struct irq_desc *desc)
+static void trio_handle_level_irq(struct irq_desc *desc)
 {
 	struct pci_controller *controller = irq_desc_get_handler_data(desc);
 	gxio_trio_context_t *trio_context = controller->trio;
@@ -313,7 +313,7 @@ static void trio_handle_level_irq(unsigned int irq, struct irq_desc *desc)
 	unsigned int reg_offset;
 	uint64_t level_mask;
 
-	handle_level_irq(irq, desc);
+	handle_level_irq(desc);
 
 	/*
 	 * Clear the INTx Level status, otherwise future interrupts are
diff --git a/arch/unicore32/kernel/irq.c b/arch/unicore32/kernel/irq.c
index 0be5ccd7ccd2..adfa1d1fb255 100644
--- a/arch/unicore32/kernel/irq.c
+++ b/arch/unicore32/kernel/irq.c
@@ -113,9 +113,10 @@ static struct irq_chip puv3_low_gpio_chip = {
  * and call the handler.
  */
 static void
-puv3_gpio_handler(unsigned int irq, struct irq_desc *desc)
+puv3_gpio_handler(struct irq_desc *desc)
 {
 	unsigned int mask;
+	unsigned int irq;
 
 	mask = readl(GPIO_GEDR);
 	do {
diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
index bc4604e500a3..eca6d5e3ad25 100644
--- a/arch/x86/kernel/irq_64.c
+++ b/arch/x86/kernel/irq_64.c
@@ -78,6 +78,6 @@ bool handle_irq(unsigned irq, struct pt_regs *regs)
 	if (unlikely(!desc))
 		return false;
 
-	generic_handle_irq_desc(irq, desc);
+	generic_handle_irq_desc(desc);
 	return true;
 }
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
index cab9aaa7802c..24efba1c1f3d 100644
--- a/arch/x86/lguest/boot.c
+++ b/arch/x86/lguest/boot.c
@@ -1021,7 +1021,7 @@ static struct clock_event_device lguest_clockevent = {
  * This is the Guest timer interrupt handler (hardware interrupt 0).  We just
  * call the clockevent infrastructure and it does whatever needs doing.
  */
-static void lguest_time_irq(unsigned int irq, struct irq_desc *desc)
+static void lguest_time_irq(struct irq_desc *desc)
 {
 	unsigned long flags;
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 20/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Richard Henderson, Ivan Kokshaysky,
	Matt Turner, Haavard Skinnemoen, Hans-Christian Egtvedt,
	Steven Miao, Mark Salter, Aurelien Jacquiot, David S. Miller,
	Chris Metcalf, Guan Xuetao, x86, Rusty Russell, Andreas Larsson,
	Jiang Liu, Joe Perches, Christoph Lameter, Brian Gerst
  Cc: Konrad Rzeszutek Wilk, Tony Luck, linux-kernel, linux-pci,
	linux-acpi, Ingo Molnar, linux-alpha, adi-buildroot-devel,
	linux-c6x-dev, sparclinux, lguest

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/alpha/kernel/irq.c             |    2 +-
 arch/avr32/mach-at32ap/extint.c     |    2 +-
 arch/avr32/mach-at32ap/pio.c        |    2 +-
 arch/blackfin/kernel/ipipe.c        |    4 ++--
 arch/c6x/platforms/megamod-pic.c    |    3 ++-
 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 +-
 12 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c
index bd8e47699cad..d2704d53aac8 100644
--- a/arch/alpha/kernel/irq.c
+++ b/arch/alpha/kernel/irq.c
@@ -118,6 +118,6 @@ handle_irq(int irq)
 	}
 
 	irq_enter();
-	generic_handle_irq_desc(irq, desc);
+	generic_handle_irq_desc(desc);
 	irq_exit();
 }
diff --git a/arch/avr32/mach-at32ap/extint.c b/arch/avr32/mach-at32ap/extint.c
index cfb298d66305..b83a974b7855 100644
--- a/arch/avr32/mach-at32ap/extint.c
+++ b/arch/avr32/mach-at32ap/extint.c
@@ -144,7 +144,7 @@ static struct irq_chip eic_chip = {
 	.irq_set_type	= eic_set_irq_type,
 };
 
-static void demux_eic_irq(unsigned int irq, struct irq_desc *desc)
+static void demux_eic_irq(struct irq_desc *desc)
 {
 	struct eic *eic = irq_desc_get_handler_data(desc);
 	unsigned long status, pending;
diff --git a/arch/avr32/mach-at32ap/pio.c b/arch/avr32/mach-at32ap/pio.c
index 2583e6cc44e9..85009bbc01e6 100644
--- a/arch/avr32/mach-at32ap/pio.c
+++ b/arch/avr32/mach-at32ap/pio.c
@@ -281,7 +281,7 @@ static struct irq_chip gpio_irqchip = {
 	.irq_set_type	= gpio_irq_type,
 };
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(struct irq_desc *desc)
 {
 	struct pio_device	*pio = irq_desc_get_chip_data(desc);
 	unsigned		gpio_irq;
diff --git a/arch/blackfin/kernel/ipipe.c b/arch/blackfin/kernel/ipipe.c
index f657b38163e3..8daca4d56992 100644
--- a/arch/blackfin/kernel/ipipe.c
+++ b/arch/blackfin/kernel/ipipe.c
@@ -54,9 +54,9 @@ atomic_t __ipipe_irq_lvdepth[IVG15 + 1];
 unsigned long __ipipe_irq_lvmask = bfin_no_irqs;
 EXPORT_SYMBOL(__ipipe_irq_lvmask);
 
-static void __ipipe_ack_irq(unsigned irq, struct irq_desc *desc)
+static void __ipipe_ack_irq(struct irq_desc *desc)
 {
-	desc->ipipe_ack(irq, desc);
+	desc->ipipe_ack(irq_desc_get_irq(desc), desc);
 }
 
 /*
diff --git a/arch/c6x/platforms/megamod-pic.c b/arch/c6x/platforms/megamod-pic.c
index 74e3371eb824..c15f0b15faf4 100644
--- a/arch/c6x/platforms/megamod-pic.c
+++ b/arch/c6x/platforms/megamod-pic.c
@@ -93,12 +93,13 @@ static struct irq_chip megamod_chip = {
 	.irq_unmask	= unmask_megamod,
 };
 
-static void megamod_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void megamod_irq_cascade(struct irq_desc *desc)
 {
 	struct megamod_cascade_data *cascade;
 	struct megamod_pic *pic;
 	u32 events;
 	int n, idx;
+	unsigned int irq;
 
 	cascade = irq_desc_get_handler_data(desc);
 
diff --git a/arch/sparc/kernel/leon_kernel.c b/arch/sparc/kernel/leon_kernel.c
index 0299f052a2ef..42efcf85f721 100644
--- a/arch/sparc/kernel/leon_kernel.c
+++ b/arch/sparc/kernel/leon_kernel.c
@@ -53,7 +53,7 @@ static inline unsigned int leon_eirq_get(int cpu)
 }
 
 /* Handle one or multiple IRQs from the extended interrupt controller */
-static void leon_handle_ext_irq(unsigned int irq, struct irq_desc *desc)
+static void leon_handle_ext_irq(struct irq_desc *desc)
 {
 	unsigned int eirq;
 	struct irq_bucket *p;
diff --git a/arch/sparc/kernel/leon_pci_grpci1.c b/arch/sparc/kernel/leon_pci_grpci1.c
index 3382f7b3eeef..1e77128a8f88 100644
--- a/arch/sparc/kernel/leon_pci_grpci1.c
+++ b/arch/sparc/kernel/leon_pci_grpci1.c
@@ -357,7 +357,7 @@ static struct irq_chip grpci1_irq = {
 };
 
 /* Handle one or multiple IRQs from the PCI core */
-static void grpci1_pci_flow_irq(unsigned int irq, struct irq_desc *desc)
+static void grpci1_pci_flow_irq(struct irq_desc *desc)
 {
 	struct grpci1_priv *priv = grpci1priv;
 	int i, ack = 0;
diff --git a/arch/sparc/kernel/leon_pci_grpci2.c b/arch/sparc/kernel/leon_pci_grpci2.c
index 94e392bdee7d..0398fc2c0e44 100644
--- a/arch/sparc/kernel/leon_pci_grpci2.c
+++ b/arch/sparc/kernel/leon_pci_grpci2.c
@@ -498,7 +498,7 @@ static struct irq_chip grpci2_irq = {
 };
 
 /* Handle one or multiple IRQs from the PCI core */
-static void grpci2_pci_flow_irq(unsigned int irq, struct irq_desc *desc)
+static void grpci2_pci_flow_irq(struct irq_desc *desc)
 {
 	struct grpci2_priv *priv = grpci2priv;
 	int i, ack = 0;
diff --git a/arch/tile/kernel/pci_gx.c b/arch/tile/kernel/pci_gx.c
index 65b701b3b5ed..4c017d0d2de8 100644
--- a/arch/tile/kernel/pci_gx.c
+++ b/arch/tile/kernel/pci_gx.c
@@ -304,7 +304,7 @@ static struct irq_chip tilegx_legacy_irq_chip = {
  * to Linux which just calls handle_level_irq() after clearing the
  * MAC INTx Assert status bit associated with this interrupt.
  */
-static void trio_handle_level_irq(unsigned int irq, struct irq_desc *desc)
+static void trio_handle_level_irq(struct irq_desc *desc)
 {
 	struct pci_controller *controller = irq_desc_get_handler_data(desc);
 	gxio_trio_context_t *trio_context = controller->trio;
@@ -313,7 +313,7 @@ static void trio_handle_level_irq(unsigned int irq, struct irq_desc *desc)
 	unsigned int reg_offset;
 	uint64_t level_mask;
 
-	handle_level_irq(irq, desc);
+	handle_level_irq(desc);
 
 	/*
 	 * Clear the INTx Level status, otherwise future interrupts are
diff --git a/arch/unicore32/kernel/irq.c b/arch/unicore32/kernel/irq.c
index 0be5ccd7ccd2..adfa1d1fb255 100644
--- a/arch/unicore32/kernel/irq.c
+++ b/arch/unicore32/kernel/irq.c
@@ -113,9 +113,10 @@ static struct irq_chip puv3_low_gpio_chip = {
  * and call the handler.
  */
 static void
-puv3_gpio_handler(unsigned int irq, struct irq_desc *desc)
+puv3_gpio_handler(struct irq_desc *desc)
 {
 	unsigned int mask;
+	unsigned int irq;
 
 	mask = readl(GPIO_GEDR);
 	do {
diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
index bc4604e500a3..eca6d5e3ad25 100644
--- a/arch/x86/kernel/irq_64.c
+++ b/arch/x86/kernel/irq_64.c
@@ -78,6 +78,6 @@ bool handle_irq(unsigned irq, struct pt_regs *regs)
 	if (unlikely(!desc))
 		return false;
 
-	generic_handle_irq_desc(irq, desc);
+	generic_handle_irq_desc(desc);
 	return true;
 }
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
index cab9aaa7802c..24efba1c1f3d 100644
--- a/arch/x86/lguest/boot.c
+++ b/arch/x86/lguest/boot.c
@@ -1021,7 +1021,7 @@ static struct clock_event_device lguest_clockevent = {
  * This is the Guest timer interrupt handler (hardware interrupt 0).  We just
  * call the clockevent infrastructure and it does whatever needs doing.
  */
-static void lguest_time_irq(unsigned int irq, struct irq_desc *desc)
+static void lguest_time_irq(struct irq_desc *desc)
 {
 	unsigned long flags;
 
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 20/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Richard Henderson, Ivan Kokshaysky,
	Matt Turner, Haavard Skinnemoen, Hans-Christian Egtvedt,
	Steven Miao, Mark Salter, Aurelien Jacquiot, David S. Miller,
	Chris Metcalf, Guan Xuetao, x86, Rusty Russell, Andreas Larsson,
	Jiang Liu
  Cc: Konrad Rzeszutek Wilk, Tony Luck, linux-kernel, linux-pci,
	linux-acpi, Ingo Molnar, linux-alpha, adi-buildroot-devel,
	linux-c6x-dev, sparclinux, lguest

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/alpha/kernel/irq.c             |    2 +-
 arch/avr32/mach-at32ap/extint.c     |    2 +-
 arch/avr32/mach-at32ap/pio.c        |    2 +-
 arch/blackfin/kernel/ipipe.c        |    4 ++--
 arch/c6x/platforms/megamod-pic.c    |    3 ++-
 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 +-
 12 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c
index bd8e47699cad..d2704d53aac8 100644
--- a/arch/alpha/kernel/irq.c
+++ b/arch/alpha/kernel/irq.c
@@ -118,6 +118,6 @@ handle_irq(int irq)
 	}
 
 	irq_enter();
-	generic_handle_irq_desc(irq, desc);
+	generic_handle_irq_desc(desc);
 	irq_exit();
 }
diff --git a/arch/avr32/mach-at32ap/extint.c b/arch/avr32/mach-at32ap/extint.c
index cfb298d66305..b83a974b7855 100644
--- a/arch/avr32/mach-at32ap/extint.c
+++ b/arch/avr32/mach-at32ap/extint.c
@@ -144,7 +144,7 @@ static struct irq_chip eic_chip = {
 	.irq_set_type	= eic_set_irq_type,
 };
 
-static void demux_eic_irq(unsigned int irq, struct irq_desc *desc)
+static void demux_eic_irq(struct irq_desc *desc)
 {
 	struct eic *eic = irq_desc_get_handler_data(desc);
 	unsigned long status, pending;
diff --git a/arch/avr32/mach-at32ap/pio.c b/arch/avr32/mach-at32ap/pio.c
index 2583e6cc44e9..85009bbc01e6 100644
--- a/arch/avr32/mach-at32ap/pio.c
+++ b/arch/avr32/mach-at32ap/pio.c
@@ -281,7 +281,7 @@ static struct irq_chip gpio_irqchip = {
 	.irq_set_type	= gpio_irq_type,
 };
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(struct irq_desc *desc)
 {
 	struct pio_device	*pio = irq_desc_get_chip_data(desc);
 	unsigned		gpio_irq;
diff --git a/arch/blackfin/kernel/ipipe.c b/arch/blackfin/kernel/ipipe.c
index f657b38163e3..8daca4d56992 100644
--- a/arch/blackfin/kernel/ipipe.c
+++ b/arch/blackfin/kernel/ipipe.c
@@ -54,9 +54,9 @@ atomic_t __ipipe_irq_lvdepth[IVG15 + 1];
 unsigned long __ipipe_irq_lvmask = bfin_no_irqs;
 EXPORT_SYMBOL(__ipipe_irq_lvmask);
 
-static void __ipipe_ack_irq(unsigned irq, struct irq_desc *desc)
+static void __ipipe_ack_irq(struct irq_desc *desc)
 {
-	desc->ipipe_ack(irq, desc);
+	desc->ipipe_ack(irq_desc_get_irq(desc), desc);
 }
 
 /*
diff --git a/arch/c6x/platforms/megamod-pic.c b/arch/c6x/platforms/megamod-pic.c
index 74e3371eb824..c15f0b15faf4 100644
--- a/arch/c6x/platforms/megamod-pic.c
+++ b/arch/c6x/platforms/megamod-pic.c
@@ -93,12 +93,13 @@ static struct irq_chip megamod_chip = {
 	.irq_unmask	= unmask_megamod,
 };
 
-static void megamod_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void megamod_irq_cascade(struct irq_desc *desc)
 {
 	struct megamod_cascade_data *cascade;
 	struct megamod_pic *pic;
 	u32 events;
 	int n, idx;
+	unsigned int irq;
 
 	cascade = irq_desc_get_handler_data(desc);
 
diff --git a/arch/sparc/kernel/leon_kernel.c b/arch/sparc/kernel/leon_kernel.c
index 0299f052a2ef..42efcf85f721 100644
--- a/arch/sparc/kernel/leon_kernel.c
+++ b/arch/sparc/kernel/leon_kernel.c
@@ -53,7 +53,7 @@ static inline unsigned int leon_eirq_get(int cpu)
 }
 
 /* Handle one or multiple IRQs from the extended interrupt controller */
-static void leon_handle_ext_irq(unsigned int irq, struct irq_desc *desc)
+static void leon_handle_ext_irq(struct irq_desc *desc)
 {
 	unsigned int eirq;
 	struct irq_bucket *p;
diff --git a/arch/sparc/kernel/leon_pci_grpci1.c b/arch/sparc/kernel/leon_pci_grpci1.c
index 3382f7b3eeef..1e77128a8f88 100644
--- a/arch/sparc/kernel/leon_pci_grpci1.c
+++ b/arch/sparc/kernel/leon_pci_grpci1.c
@@ -357,7 +357,7 @@ static struct irq_chip grpci1_irq = {
 };
 
 /* Handle one or multiple IRQs from the PCI core */
-static void grpci1_pci_flow_irq(unsigned int irq, struct irq_desc *desc)
+static void grpci1_pci_flow_irq(struct irq_desc *desc)
 {
 	struct grpci1_priv *priv = grpci1priv;
 	int i, ack = 0;
diff --git a/arch/sparc/kernel/leon_pci_grpci2.c b/arch/sparc/kernel/leon_pci_grpci2.c
index 94e392bdee7d..0398fc2c0e44 100644
--- a/arch/sparc/kernel/leon_pci_grpci2.c
+++ b/arch/sparc/kernel/leon_pci_grpci2.c
@@ -498,7 +498,7 @@ static struct irq_chip grpci2_irq = {
 };
 
 /* Handle one or multiple IRQs from the PCI core */
-static void grpci2_pci_flow_irq(unsigned int irq, struct irq_desc *desc)
+static void grpci2_pci_flow_irq(struct irq_desc *desc)
 {
 	struct grpci2_priv *priv = grpci2priv;
 	int i, ack = 0;
diff --git a/arch/tile/kernel/pci_gx.c b/arch/tile/kernel/pci_gx.c
index 65b701b3b5ed..4c017d0d2de8 100644
--- a/arch/tile/kernel/pci_gx.c
+++ b/arch/tile/kernel/pci_gx.c
@@ -304,7 +304,7 @@ static struct irq_chip tilegx_legacy_irq_chip = {
  * to Linux which just calls handle_level_irq() after clearing the
  * MAC INTx Assert status bit associated with this interrupt.
  */
-static void trio_handle_level_irq(unsigned int irq, struct irq_desc *desc)
+static void trio_handle_level_irq(struct irq_desc *desc)
 {
 	struct pci_controller *controller = irq_desc_get_handler_data(desc);
 	gxio_trio_context_t *trio_context = controller->trio;
@@ -313,7 +313,7 @@ static void trio_handle_level_irq(unsigned int irq, struct irq_desc *desc)
 	unsigned int reg_offset;
 	uint64_t level_mask;
 
-	handle_level_irq(irq, desc);
+	handle_level_irq(desc);
 
 	/*
 	 * Clear the INTx Level status, otherwise future interrupts are
diff --git a/arch/unicore32/kernel/irq.c b/arch/unicore32/kernel/irq.c
index 0be5ccd7ccd2..adfa1d1fb255 100644
--- a/arch/unicore32/kernel/irq.c
+++ b/arch/unicore32/kernel/irq.c
@@ -113,9 +113,10 @@ static struct irq_chip puv3_low_gpio_chip = {
  * and call the handler.
  */
 static void
-puv3_gpio_handler(unsigned int irq, struct irq_desc *desc)
+puv3_gpio_handler(struct irq_desc *desc)
 {
 	unsigned int mask;
+	unsigned int irq;
 
 	mask = readl(GPIO_GEDR);
 	do {
diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
index bc4604e500a3..eca6d5e3ad25 100644
--- a/arch/x86/kernel/irq_64.c
+++ b/arch/x86/kernel/irq_64.c
@@ -78,6 +78,6 @@ bool handle_irq(unsigned irq, struct pt_regs *regs)
 	if (unlikely(!desc))
 		return false;
 
-	generic_handle_irq_desc(irq, desc);
+	generic_handle_irq_desc(desc);
 	return true;
 }
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
index cab9aaa7802c..24efba1c1f3d 100644
--- a/arch/x86/lguest/boot.c
+++ b/arch/x86/lguest/boot.c
@@ -1021,7 +1021,7 @@ static struct clock_event_device lguest_clockevent = {
  * This is the Guest timer interrupt handler (hardware interrupt 0).  We just
  * call the clockevent infrastructure and it does whatever needs doing.
  */
-static void lguest_time_irq(unsigned int irq, struct irq_desc *desc)
+static void lguest_time_irq(struct irq_desc *desc)
 {
 	unsigned long flags;
 
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 21/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20 10:00   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Linus Walleij, Ray Jui,
	Scott Branden, Mika Westerberg, Heikki Krogerus,
	Matthias Brugger, Alessandro Rubini,
	Jean-Christophe Plagniol-Villard, Heiko Stuebner,
	Srinivas Kandagatla, Maxime Coquelin, Patrice Chotard,
	Tomasz Figa
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, Barry Song, linux-gpio, linux-arm-kernel,
	bcm-kernel-feedback-list, linux-mediatek, linux-rockchip, kernel,
	linux-samsung-soc, spear-devel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c     |    2 +-
 drivers/pinctrl/intel/pinctrl-baytrail.c      |    2 +-
 drivers/pinctrl/intel/pinctrl-cherryview.c    |    2 +-
 drivers/pinctrl/intel/pinctrl-intel.c         |    2 +-
 drivers/pinctrl/mediatek/pinctrl-mtk-common.c |    2 +-
 drivers/pinctrl/nomadik/pinctrl-nomadik.c     |    4 ++--
 drivers/pinctrl/pinctrl-amd.c                 |    5 +++--
 drivers/pinctrl/pinctrl-at91.c                |    2 +-
 drivers/pinctrl/pinctrl-coh901.c              |    3 ++-
 drivers/pinctrl/pinctrl-rockchip.c            |    3 ++-
 drivers/pinctrl/pinctrl-single.c              |    2 +-
 drivers/pinctrl/pinctrl-st.c                  |    4 ++--
 drivers/pinctrl/qcom/pinctrl-msm.c            |    4 ++--
 drivers/pinctrl/samsung/pinctrl-exynos.c      |    4 ++--
 drivers/pinctrl/samsung/pinctrl-s3c24xx.c     |    8 ++++----
 drivers/pinctrl/samsung/pinctrl-s3c64xx.c     |   10 +++++-----
 drivers/pinctrl/sirf/pinctrl-sirf.c           |    5 +++--
 drivers/pinctrl/spear/pinctrl-plgpio.c        |    2 +-
 drivers/pinctrl/sunxi/pinctrl-sunxi.c         |    3 ++-
 19 files changed, 37 insertions(+), 32 deletions(-)

diff --git a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
index 4ad5c1a996e3..df940687524f 100644
--- a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
@@ -143,7 +143,7 @@ static inline bool cygnus_get_bit(struct cygnus_gpio *chip, unsigned int reg,
 	return !!(readl(chip->base + offset) & BIT(shift));
 }
 
-static void cygnus_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void cygnus_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/intel/pinctrl-baytrail.c
index 2062c224e32f..94870cedb0ad 100644
--- a/drivers/pinctrl/intel/pinctrl-baytrail.c
+++ b/drivers/pinctrl/intel/pinctrl-baytrail.c
@@ -421,7 +421,7 @@ static void byt_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
 	spin_unlock_irqrestore(&vg->lock, flags);
 }
 
-static void byt_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void byt_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct byt_gpio *vg = to_byt_gpio(irq_desc_get_handler_data(desc));
diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c
index 878e798bcb56..cfdc5f1c9cd6 100644
--- a/drivers/pinctrl/intel/pinctrl-cherryview.c
+++ b/drivers/pinctrl/intel/pinctrl-cherryview.c
@@ -1364,7 +1364,7 @@ static struct irq_chip chv_gpio_irqchip = {
 	.flags = IRQCHIP_SKIP_SET_WAKE,
 };
 
-static void chv_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void chv_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct chv_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
index a40681097402..a64ca4bd69cd 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -836,7 +836,7 @@ static void intel_gpio_community_irq_handler(struct gpio_chip *gc,
 	}
 }
 
-static void intel_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void intel_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct intel_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
index fd05ca6125b0..9ec45d4875db 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
@@ -1016,7 +1016,7 @@ mtk_eint_debounce_process(struct mtk_pinctrl *pctl, int index)
 	}
 }
 
-static void mtk_eint_irq_handler(unsigned irq, struct irq_desc *desc)
+static void mtk_eint_irq_handler(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct mtk_pinctrl *pctl = irq_desc_get_handler_data(desc);
diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik.c b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
index 902f53b855bf..cd70a30f8d8e 100644
--- a/drivers/pinctrl/nomadik/pinctrl-nomadik.c
+++ b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
@@ -871,7 +871,7 @@ static void __nmk_gpio_irq_handler(struct irq_desc *desc, u32 status)
 	chained_irq_exit(host_chip, desc);
 }
 
-static void nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void nmk_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct nmk_gpio_chip *nmk_chip = container_of(chip, struct nmk_gpio_chip, chip);
@@ -884,7 +884,7 @@ static void nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	__nmk_gpio_irq_handler(desc, status);
 }
 
-static void nmk_gpio_latent_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void nmk_gpio_latent_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct nmk_gpio_chip *nmk_chip = container_of(chip, struct nmk_gpio_chip, chip);
diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c
index 639cd77c1fbb..08b7e4d543e7 100644
--- a/drivers/pinctrl/pinctrl-amd.c
+++ b/drivers/pinctrl/pinctrl-amd.c
@@ -492,7 +492,7 @@ static struct irq_chip amd_gpio_irqchip = {
 	.irq_set_type = amd_gpio_irq_set_type,
 };
 
-static void amd_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void amd_gpio_irq_handler(struct irq_desc *desc)
 {
 	u32 i;
 	u32 off;
@@ -501,6 +501,7 @@ static void amd_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	u64 reg64;
 	int handled = 0;
 	unsigned long flags;
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct amd_gpio *gpio_dev = to_amd_gpio(gc);
@@ -540,7 +541,7 @@ static void amd_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	}
 
 	if (handled == 0)
-		handle_bad_irq(irq, desc);
+		handle_bad_irq(desc);
 
 	spin_lock_irqsave(&gpio_dev->lock, flags);
 	reg = readl(gpio_dev->base + WAKE_INT_MASTER_REG);
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index 92d5f9ec1cce..0145257991fe 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -1579,7 +1579,7 @@ static struct irq_chip gpio_irqchip = {
 	.irq_set_wake	= gpio_irq_set_wake,
 };
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gpio_chip = irq_desc_get_handler_data(desc);
diff --git a/drivers/pinctrl/pinctrl-coh901.c b/drivers/pinctrl/pinctrl-coh901.c
index 9579442a221d..3b443f23d4a0 100644
--- a/drivers/pinctrl/pinctrl-coh901.c
+++ b/drivers/pinctrl/pinctrl-coh901.c
@@ -519,8 +519,9 @@ static struct irq_chip u300_gpio_irqchip = {
 	.irq_set_type		= u300_gpio_irq_type,
 };
 
-static void u300_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void u300_gpio_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_to_irq(desc);
 	struct irq_chip *parent_chip = irq_desc_get_chip(desc);
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct u300_gpio *gpio = to_u300_gpio(chip);
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index 97a4a3dddb30..9ea3a0e550ac 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -1394,7 +1394,7 @@ static const struct gpio_chip rockchip_gpiolib_chip = {
  * Interrupt handling
  */
 
-static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void rockchip_irq_demux(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct rockchip_pin_bank *bank = irq_desc_get_handler_data(desc);
@@ -1408,6 +1408,7 @@ static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
 
 	while (pend) {
 		unsigned int virq;
+		unsigned int irq;
 
 		irq = __ffs(pend);
 		pend &= ~BIT(irq);
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index a8db57db5f5b..d71cad948bf2 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -1679,7 +1679,7 @@ static irqreturn_t pcs_irq_handler(int irq, void *d)
  * Use this if you have a separate interrupt for each
  * pinctrl-single instance.
  */
-static void pcs_irq_chain_handler(unsigned int irq, struct irq_desc *desc)
+static void pcs_irq_chain_handler(struct irq_desc *desc)
 {
 	struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip;
diff --git a/drivers/pinctrl/pinctrl-st.c b/drivers/pinctrl/pinctrl-st.c
index a4f8d38ed7be..8f92e929582d 100644
--- a/drivers/pinctrl/pinctrl-st.c
+++ b/drivers/pinctrl/pinctrl-st.c
@@ -1460,7 +1460,7 @@ static void __gpio_irq_handler(struct st_gpio_bank *bank)
 	}
 }
 
-static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void st_gpio_irq_handler(struct irq_desc *desc)
 {
 	/* interrupt dedicated per bank */
 	struct irq_chip *chip = irq_desc_get_chip(desc);
@@ -1472,7 +1472,7 @@ static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 	chained_irq_exit(chip, desc);
 }
 
-static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
+static void st_gpio_irqmux_handler(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct st_pinctrl *info = irq_desc_get_handler_data(desc);
diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
index 7439d19af0dd..1d2e642130ab 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -764,7 +764,7 @@ static struct irq_chip msm_gpio_irq_chip = {
 	.irq_set_wake   = msm_gpio_irq_set_wake,
 };
 
-static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void msm_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	const struct msm_pingroup *g;
@@ -793,7 +793,7 @@ static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 
 	/* No interrupts were flagged */
 	if (handled == 0)
-		handle_bad_irq(irq, desc);
+		handle_bad_irq(desc);
 
 	chained_irq_exit(chip, desc);
 }
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c
index 66fb5ee5a8ae..5a5eba7c697d 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -420,7 +420,7 @@ static const struct of_device_id exynos_wkup_irq_ids[] = {
 };
 
 /* interrupt handler for wakeup interrupts 0..15 */
-static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
+static void exynos_irq_eint0_15(struct irq_desc *desc)
 {
 	struct exynos_weint_data *eintd = irq_desc_get_handler_data(desc);
 	struct samsung_pin_bank *bank = eintd->bank;
@@ -452,7 +452,7 @@ static inline void exynos_irq_demux_eint(unsigned long pend,
 }
 
 /* interrupt handler for wakeup interrupt 16 */
-static void exynos_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
+static void exynos_irq_demux_eint16_31(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct exynos_muxed_weint_data *eintd = irq_desc_get_handler_data(desc);
diff --git a/drivers/pinctrl/samsung/pinctrl-s3c24xx.c b/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
index f83e4aeff42c..9b153fda5606 100644
--- a/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
+++ b/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
@@ -240,7 +240,7 @@ static struct irq_chip s3c2410_eint0_3_chip = {
 	.irq_set_type	= s3c24xx_eint_type,
 };
 
-static void s3c2410_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c2410_demux_eint0_3(struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
@@ -295,7 +295,7 @@ static struct irq_chip s3c2412_eint0_3_chip = {
 	.irq_set_type	= s3c24xx_eint_type,
 };
 
-static void s3c2412_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c2412_demux_eint0_3(struct irq_desc *desc)
 {
 	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
@@ -388,12 +388,12 @@ static inline void s3c24xx_demux_eint(struct irq_desc *desc,
 	chained_irq_exit(chip, desc);
 }
 
-static void s3c24xx_demux_eint4_7(unsigned int irq, struct irq_desc *desc)
+static void s3c24xx_demux_eint4_7(struct irq_desc *desc)
 {
 	s3c24xx_demux_eint(desc, 0, 0xf0);
 }
 
-static void s3c24xx_demux_eint8_23(unsigned int irq, struct irq_desc *desc)
+static void s3c24xx_demux_eint8_23(struct irq_desc *desc)
 {
 	s3c24xx_demux_eint(desc, 8, 0xffff00);
 }
diff --git a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
index 0ffe5db216f7..abd8fcb54ff7 100644
--- a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
+++ b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
@@ -408,7 +408,7 @@ static const struct irq_domain_ops s3c64xx_gpio_irqd_ops = {
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-static void s3c64xx_eint_gpio_irq(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_eint_gpio_irq(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct s3c64xx_eint_gpio_data *data = irq_desc_get_handler_data(desc);
@@ -633,22 +633,22 @@ static inline void s3c64xx_irq_demux_eint(struct irq_desc *desc, u32 range)
 	chained_irq_exit(chip, desc);
 }
 
-static void s3c64xx_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_demux_eint0_3(struct irq_desc *desc)
 {
 	s3c64xx_irq_demux_eint(desc, 0xf);
 }
 
-static void s3c64xx_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_demux_eint4_11(struct irq_desc *desc)
 {
 	s3c64xx_irq_demux_eint(desc, 0xff0);
 }
 
-static void s3c64xx_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_demux_eint12_19(struct irq_desc *desc)
 {
 	s3c64xx_irq_demux_eint(desc, 0xff000);
 }
 
-static void s3c64xx_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_demux_eint20_27(struct irq_desc *desc)
 {
 	s3c64xx_irq_demux_eint(desc, 0xff00000);
 }
diff --git a/drivers/pinctrl/sirf/pinctrl-sirf.c b/drivers/pinctrl/sirf/pinctrl-sirf.c
index 46cafde08ebf..d3659688f440 100644
--- a/drivers/pinctrl/sirf/pinctrl-sirf.c
+++ b/drivers/pinctrl/sirf/pinctrl-sirf.c
@@ -545,8 +545,9 @@ static struct irq_chip sirfsoc_irq_chip = {
 	.irq_set_type = sirfsoc_gpio_irq_type,
 };
 
-static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc)
+static void sirfsoc_gpio_handle_irq(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct sirfsoc_gpio_chip *sgpio = to_sirfsoc_gpio(gc);
 	struct sirfsoc_gpio_bank *bank;
@@ -569,7 +570,7 @@ static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc)
 		printk(KERN_WARNING
 			"%s: gpio id %d status %#x no interrupt is flagged\n",
 			__func__, bank->id, status);
-		handle_bad_irq(irq, desc);
+		handle_bad_irq(desc);
 		return;
 	}
 
diff --git a/drivers/pinctrl/spear/pinctrl-plgpio.c b/drivers/pinctrl/spear/pinctrl-plgpio.c
index ae8f29fb5536..1f0af250dbb5 100644
--- a/drivers/pinctrl/spear/pinctrl-plgpio.c
+++ b/drivers/pinctrl/spear/pinctrl-plgpio.c
@@ -356,7 +356,7 @@ static struct irq_chip plgpio_irqchip = {
 	.irq_set_type	= plgpio_irq_set_type,
 };
 
-static void plgpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void plgpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct plgpio *plgpio = container_of(gc, struct plgpio, chip);
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index 563cec6dc24e..12c78f7330d2 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -709,8 +709,9 @@ static struct irq_chip sunxi_pinctrl_level_irq_chip = {
 			  IRQCHIP_EOI_IF_HANDLED,
 };
 
-static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
+static void sunxi_pinctrl_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct sunxi_pinctrl *pctl = irq_desc_get_handler_data(desc);
 	unsigned long bank, reg, val;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 21/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Linus Walleij, Ray Jui,
	Scott Branden, Mika Westerberg, Heikki Krogerus,
	Matthias Brugger, Alessandro Rubini,
	Jean-Christophe Plagniol-Villard, Heiko Stuebner,
	Srinivas Kandagatla, Maxime Coquelin, Patrice Chotard,
	Tomasz Figa, Thomas Abraham, Kukjin Kim, Krzysztof Kozlowski,
	Barry Song, Viresh Kumar, Maxime Ripard, Hongzhou Yang,
	Maoguang Meng, Yingjoe Chen, Axel Lin, Jiang Liu,
	Bjorn Andersson, Stanimir Varbanov, Stephen Boyd, Bin Shi,
	Fan Wu, Hans de Goede, Chen-Yu Tsai
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, Barry Song, linux-gpio, linux-arm-kernel,
	bcm-kernel-feedback-list, linux-mediatek, linux-rockchip, kernel,
	linux-samsung-soc, spear-devel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c     |    2 +-
 drivers/pinctrl/intel/pinctrl-baytrail.c      |    2 +-
 drivers/pinctrl/intel/pinctrl-cherryview.c    |    2 +-
 drivers/pinctrl/intel/pinctrl-intel.c         |    2 +-
 drivers/pinctrl/mediatek/pinctrl-mtk-common.c |    2 +-
 drivers/pinctrl/nomadik/pinctrl-nomadik.c     |    4 ++--
 drivers/pinctrl/pinctrl-amd.c                 |    5 +++--
 drivers/pinctrl/pinctrl-at91.c                |    2 +-
 drivers/pinctrl/pinctrl-coh901.c              |    3 ++-
 drivers/pinctrl/pinctrl-rockchip.c            |    3 ++-
 drivers/pinctrl/pinctrl-single.c              |    2 +-
 drivers/pinctrl/pinctrl-st.c                  |    4 ++--
 drivers/pinctrl/qcom/pinctrl-msm.c            |    4 ++--
 drivers/pinctrl/samsung/pinctrl-exynos.c      |    4 ++--
 drivers/pinctrl/samsung/pinctrl-s3c24xx.c     |    8 ++++----
 drivers/pinctrl/samsung/pinctrl-s3c64xx.c     |   10 +++++-----
 drivers/pinctrl/sirf/pinctrl-sirf.c           |    5 +++--
 drivers/pinctrl/spear/pinctrl-plgpio.c        |    2 +-
 drivers/pinctrl/sunxi/pinctrl-sunxi.c         |    3 ++-
 19 files changed, 37 insertions(+), 32 deletions(-)

diff --git a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
index 4ad5c1a996e3..df940687524f 100644
--- a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
@@ -143,7 +143,7 @@ static inline bool cygnus_get_bit(struct cygnus_gpio *chip, unsigned int reg,
 	return !!(readl(chip->base + offset) & BIT(shift));
 }
 
-static void cygnus_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void cygnus_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/intel/pinctrl-baytrail.c
index 2062c224e32f..94870cedb0ad 100644
--- a/drivers/pinctrl/intel/pinctrl-baytrail.c
+++ b/drivers/pinctrl/intel/pinctrl-baytrail.c
@@ -421,7 +421,7 @@ static void byt_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
 	spin_unlock_irqrestore(&vg->lock, flags);
 }
 
-static void byt_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void byt_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct byt_gpio *vg = to_byt_gpio(irq_desc_get_handler_data(desc));
diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c
index 878e798bcb56..cfdc5f1c9cd6 100644
--- a/drivers/pinctrl/intel/pinctrl-cherryview.c
+++ b/drivers/pinctrl/intel/pinctrl-cherryview.c
@@ -1364,7 +1364,7 @@ static struct irq_chip chv_gpio_irqchip = {
 	.flags = IRQCHIP_SKIP_SET_WAKE,
 };
 
-static void chv_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void chv_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct chv_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
index a40681097402..a64ca4bd69cd 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -836,7 +836,7 @@ static void intel_gpio_community_irq_handler(struct gpio_chip *gc,
 	}
 }
 
-static void intel_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void intel_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct intel_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
index fd05ca6125b0..9ec45d4875db 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
@@ -1016,7 +1016,7 @@ mtk_eint_debounce_process(struct mtk_pinctrl *pctl, int index)
 	}
 }
 
-static void mtk_eint_irq_handler(unsigned irq, struct irq_desc *desc)
+static void mtk_eint_irq_handler(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct mtk_pinctrl *pctl = irq_desc_get_handler_data(desc);
diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik.c b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
index 902f53b855bf..cd70a30f8d8e 100644
--- a/drivers/pinctrl/nomadik/pinctrl-nomadik.c
+++ b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
@@ -871,7 +871,7 @@ static void __nmk_gpio_irq_handler(struct irq_desc *desc, u32 status)
 	chained_irq_exit(host_chip, desc);
 }
 
-static void nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void nmk_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct nmk_gpio_chip *nmk_chip = container_of(chip, struct nmk_gpio_chip, chip);
@@ -884,7 +884,7 @@ static void nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	__nmk_gpio_irq_handler(desc, status);
 }
 
-static void nmk_gpio_latent_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void nmk_gpio_latent_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct nmk_gpio_chip *nmk_chip = container_of(chip, struct nmk_gpio_chip, chip);
diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c
index 639cd77c1fbb..08b7e4d543e7 100644
--- a/drivers/pinctrl/pinctrl-amd.c
+++ b/drivers/pinctrl/pinctrl-amd.c
@@ -492,7 +492,7 @@ static struct irq_chip amd_gpio_irqchip = {
 	.irq_set_type = amd_gpio_irq_set_type,
 };
 
-static void amd_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void amd_gpio_irq_handler(struct irq_desc *desc)
 {
 	u32 i;
 	u32 off;
@@ -501,6 +501,7 @@ static void amd_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	u64 reg64;
 	int handled = 0;
 	unsigned long flags;
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct amd_gpio *gpio_dev = to_amd_gpio(gc);
@@ -540,7 +541,7 @@ static void amd_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	}
 
 	if (handled == 0)
-		handle_bad_irq(irq, desc);
+		handle_bad_irq(desc);
 
 	spin_lock_irqsave(&gpio_dev->lock, flags);
 	reg = readl(gpio_dev->base + WAKE_INT_MASTER_REG);
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index 92d5f9ec1cce..0145257991fe 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -1579,7 +1579,7 @@ static struct irq_chip gpio_irqchip = {
 	.irq_set_wake	= gpio_irq_set_wake,
 };
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gpio_chip = irq_desc_get_handler_data(desc);
diff --git a/drivers/pinctrl/pinctrl-coh901.c b/drivers/pinctrl/pinctrl-coh901.c
index 9579442a221d..3b443f23d4a0 100644
--- a/drivers/pinctrl/pinctrl-coh901.c
+++ b/drivers/pinctrl/pinctrl-coh901.c
@@ -519,8 +519,9 @@ static struct irq_chip u300_gpio_irqchip = {
 	.irq_set_type		= u300_gpio_irq_type,
 };
 
-static void u300_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void u300_gpio_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_to_irq(desc);
 	struct irq_chip *parent_chip = irq_desc_get_chip(desc);
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct u300_gpio *gpio = to_u300_gpio(chip);
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index 97a4a3dddb30..9ea3a0e550ac 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -1394,7 +1394,7 @@ static const struct gpio_chip rockchip_gpiolib_chip = {
  * Interrupt handling
  */
 
-static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void rockchip_irq_demux(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct rockchip_pin_bank *bank = irq_desc_get_handler_data(desc);
@@ -1408,6 +1408,7 @@ static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
 
 	while (pend) {
 		unsigned int virq;
+		unsigned int irq;
 
 		irq = __ffs(pend);
 		pend &= ~BIT(irq);
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index a8db57db5f5b..d71cad948bf2 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -1679,7 +1679,7 @@ static irqreturn_t pcs_irq_handler(int irq, void *d)
  * Use this if you have a separate interrupt for each
  * pinctrl-single instance.
  */
-static void pcs_irq_chain_handler(unsigned int irq, struct irq_desc *desc)
+static void pcs_irq_chain_handler(struct irq_desc *desc)
 {
 	struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip;
diff --git a/drivers/pinctrl/pinctrl-st.c b/drivers/pinctrl/pinctrl-st.c
index a4f8d38ed7be..8f92e929582d 100644
--- a/drivers/pinctrl/pinctrl-st.c
+++ b/drivers/pinctrl/pinctrl-st.c
@@ -1460,7 +1460,7 @@ static void __gpio_irq_handler(struct st_gpio_bank *bank)
 	}
 }
 
-static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void st_gpio_irq_handler(struct irq_desc *desc)
 {
 	/* interrupt dedicated per bank */
 	struct irq_chip *chip = irq_desc_get_chip(desc);
@@ -1472,7 +1472,7 @@ static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 	chained_irq_exit(chip, desc);
 }
 
-static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
+static void st_gpio_irqmux_handler(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct st_pinctrl *info = irq_desc_get_handler_data(desc);
diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
index 7439d19af0dd..1d2e642130ab 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -764,7 +764,7 @@ static struct irq_chip msm_gpio_irq_chip = {
 	.irq_set_wake   = msm_gpio_irq_set_wake,
 };
 
-static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void msm_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	const struct msm_pingroup *g;
@@ -793,7 +793,7 @@ static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 
 	/* No interrupts were flagged */
 	if (handled == 0)
-		handle_bad_irq(irq, desc);
+		handle_bad_irq(desc);
 
 	chained_irq_exit(chip, desc);
 }
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c
index 66fb5ee5a8ae..5a5eba7c697d 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -420,7 +420,7 @@ static const struct of_device_id exynos_wkup_irq_ids[] = {
 };
 
 /* interrupt handler for wakeup interrupts 0..15 */
-static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
+static void exynos_irq_eint0_15(struct irq_desc *desc)
 {
 	struct exynos_weint_data *eintd = irq_desc_get_handler_data(desc);
 	struct samsung_pin_bank *bank = eintd->bank;
@@ -452,7 +452,7 @@ static inline void exynos_irq_demux_eint(unsigned long pend,
 }
 
 /* interrupt handler for wakeup interrupt 16 */
-static void exynos_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
+static void exynos_irq_demux_eint16_31(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct exynos_muxed_weint_data *eintd = irq_desc_get_handler_data(desc);
diff --git a/drivers/pinctrl/samsung/pinctrl-s3c24xx.c b/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
index f83e4aeff42c..9b153fda5606 100644
--- a/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
+++ b/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
@@ -240,7 +240,7 @@ static struct irq_chip s3c2410_eint0_3_chip = {
 	.irq_set_type	= s3c24xx_eint_type,
 };
 
-static void s3c2410_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c2410_demux_eint0_3(struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
@@ -295,7 +295,7 @@ static struct irq_chip s3c2412_eint0_3_chip = {
 	.irq_set_type	= s3c24xx_eint_type,
 };
 
-static void s3c2412_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c2412_demux_eint0_3(struct irq_desc *desc)
 {
 	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
@@ -388,12 +388,12 @@ static inline void s3c24xx_demux_eint(struct irq_desc *desc,
 	chained_irq_exit(chip, desc);
 }
 
-static void s3c24xx_demux_eint4_7(unsigned int irq, struct irq_desc *desc)
+static void s3c24xx_demux_eint4_7(struct irq_desc *desc)
 {
 	s3c24xx_demux_eint(desc, 0, 0xf0);
 }
 
-static void s3c24xx_demux_eint8_23(unsigned int irq, struct irq_desc *desc)
+static void s3c24xx_demux_eint8_23(struct irq_desc *desc)
 {
 	s3c24xx_demux_eint(desc, 8, 0xffff00);
 }
diff --git a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
index 0ffe5db216f7..abd8fcb54ff7 100644
--- a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
+++ b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
@@ -408,7 +408,7 @@ static const struct irq_domain_ops s3c64xx_gpio_irqd_ops = {
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-static void s3c64xx_eint_gpio_irq(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_eint_gpio_irq(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct s3c64xx_eint_gpio_data *data = irq_desc_get_handler_data(desc);
@@ -633,22 +633,22 @@ static inline void s3c64xx_irq_demux_eint(struct irq_desc *desc, u32 range)
 	chained_irq_exit(chip, desc);
 }
 
-static void s3c64xx_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_demux_eint0_3(struct irq_desc *desc)
 {
 	s3c64xx_irq_demux_eint(desc, 0xf);
 }
 
-static void s3c64xx_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_demux_eint4_11(struct irq_desc *desc)
 {
 	s3c64xx_irq_demux_eint(desc, 0xff0);
 }
 
-static void s3c64xx_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_demux_eint12_19(struct irq_desc *desc)
 {
 	s3c64xx_irq_demux_eint(desc, 0xff000);
 }
 
-static void s3c64xx_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_demux_eint20_27(struct irq_desc *desc)
 {
 	s3c64xx_irq_demux_eint(desc, 0xff00000);
 }
diff --git a/drivers/pinctrl/sirf/pinctrl-sirf.c b/drivers/pinctrl/sirf/pinctrl-sirf.c
index 46cafde08ebf..d3659688f440 100644
--- a/drivers/pinctrl/sirf/pinctrl-sirf.c
+++ b/drivers/pinctrl/sirf/pinctrl-sirf.c
@@ -545,8 +545,9 @@ static struct irq_chip sirfsoc_irq_chip = {
 	.irq_set_type = sirfsoc_gpio_irq_type,
 };
 
-static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc)
+static void sirfsoc_gpio_handle_irq(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct sirfsoc_gpio_chip *sgpio = to_sirfsoc_gpio(gc);
 	struct sirfsoc_gpio_bank *bank;
@@ -569,7 +570,7 @@ static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc)
 		printk(KERN_WARNING
 			"%s: gpio id %d status %#x no interrupt is flagged\n",
 			__func__, bank->id, status);
-		handle_bad_irq(irq, desc);
+		handle_bad_irq(desc);
 		return;
 	}
 
diff --git a/drivers/pinctrl/spear/pinctrl-plgpio.c b/drivers/pinctrl/spear/pinctrl-plgpio.c
index ae8f29fb5536..1f0af250dbb5 100644
--- a/drivers/pinctrl/spear/pinctrl-plgpio.c
+++ b/drivers/pinctrl/spear/pinctrl-plgpio.c
@@ -356,7 +356,7 @@ static struct irq_chip plgpio_irqchip = {
 	.irq_set_type	= plgpio_irq_set_type,
 };
 
-static void plgpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void plgpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct plgpio *plgpio = container_of(gc, struct plgpio, chip);
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index 563cec6dc24e..12c78f7330d2 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -709,8 +709,9 @@ static struct irq_chip sunxi_pinctrl_level_irq_chip = {
 			  IRQCHIP_EOI_IF_HANDLED,
 };
 
-static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
+static void sunxi_pinctrl_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct sunxi_pinctrl *pctl = irq_desc_get_handler_data(desc);
 	unsigned long bank, reg, val;
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 22/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20 10:00   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Tien Hock Loh, Linus Walleij,
	Alexandre Courbot, Ray Jui, David Cohen,
	Javier Martinez Canillas, Santosh Shilimkar, Kevin Hilman,
	Stephen Warren, Thierry Reding, Michal Simek,
	Sören Brinkmann
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi, linux-gpio, bcm-kernel-feedback-list,
	linux-omap, linux-tegra, linux-arm-kernel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/gpio/gpio-altera.c     |    6 ++----
 drivers/gpio/gpio-bcm-kona.c   |    2 +-
 drivers/gpio/gpio-davinci.c    |    3 ++-
 drivers/gpio/gpio-dwapb.c      |    2 +-
 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      |    2 +-
 drivers/gpio/gpio-mxc.c        |    4 ++--
 drivers/gpio/gpio-mxs.c        |    2 +-
 drivers/gpio/gpio-omap.c       |    2 +-
 drivers/gpio/gpio-pl061.c      |    2 +-
 drivers/gpio/gpio-pxa.c        |    2 +-
 drivers/gpio/gpio-sa1100.c     |    4 ++--
 drivers/gpio/gpio-tegra.c      |    2 +-
 drivers/gpio/gpio-timberdale.c |    5 +++--
 drivers/gpio/gpio-tz1090.c     |    4 ++--
 drivers/gpio/gpio-vf610.c      |    2 +-
 drivers/gpio/gpio-zynq.c       |    2 +-
 22 files changed, 31 insertions(+), 30 deletions(-)

diff --git a/drivers/gpio/gpio-altera.c b/drivers/gpio/gpio-altera.c
index 449fb46cb8a0..985c3bd9a03e 100644
--- a/drivers/gpio/gpio-altera.c
+++ b/drivers/gpio/gpio-altera.c
@@ -200,8 +200,7 @@ static int altera_gpio_direction_output(struct gpio_chip *gc,
 	return 0;
 }
 
-static void altera_gpio_irq_edge_handler(unsigned int irq,
-					struct irq_desc *desc)
+static void altera_gpio_irq_edge_handler(struct irq_desc *desc)
 {
 	struct altera_gpio_chip *altera_gc;
 	struct irq_chip *chip;
@@ -230,8 +229,7 @@ static void altera_gpio_irq_edge_handler(unsigned int irq,
 }
 
 
-static void altera_gpio_irq_leveL_high_handler(unsigned int irq,
-					      struct irq_desc *desc)
+static void altera_gpio_irq_leveL_high_handler(struct irq_desc *desc)
 {
 	struct altera_gpio_chip *altera_gc;
 	struct irq_chip *chip;
diff --git a/drivers/gpio/gpio-bcm-kona.c b/drivers/gpio/gpio-bcm-kona.c
index 2e7a8c66fe57..6471892f4f83 100644
--- a/drivers/gpio/gpio-bcm-kona.c
+++ b/drivers/gpio/gpio-bcm-kona.c
@@ -427,7 +427,7 @@ static int bcm_kona_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void bcm_kona_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void bcm_kona_gpio_irq_handler(struct irq_desc *desc)
 {
 	void __iomem *reg_base;
 	int bit, bank_id;
diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index 477d5b8616ab..31206ea4c84e 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -327,8 +327,9 @@ static struct irq_chip gpio_irqchip = {
 };
 
 static void
-gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+gpio_irq_handler(struct irq_desc *desc)
 {
+	unsigned irq = irq_desc_get_irq(desc);
 	struct davinci_gpio_regs __iomem *g;
 	u32 mask = 0xffff;
 	struct davinci_gpio_controller *d;
diff --git a/drivers/gpio/gpio-dwapb.c b/drivers/gpio/gpio-dwapb.c
index 649be07a845d..bf7cb1be756d 100644
--- a/drivers/gpio/gpio-dwapb.c
+++ b/drivers/gpio/gpio-dwapb.c
@@ -147,7 +147,7 @@ static u32 dwapb_do_irq(struct dwapb_gpio *gpio)
 	return ret;
 }
 
-static void dwapb_irq_handler(u32 irq, struct irq_desc *desc)
+static void dwapb_irq_handler(struct irq_desc *desc)
 {
 	struct dwapb_gpio *gpio = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-ep93xx.c b/drivers/gpio/gpio-ep93xx.c
index 45684f36ddb1..03648a8a6f8e 100644
--- a/drivers/gpio/gpio-ep93xx.c
+++ b/drivers/gpio/gpio-ep93xx.c
@@ -78,7 +78,7 @@ static void ep93xx_gpio_int_debounce(unsigned int irq, bool enable)
 		EP93XX_GPIO_REG(int_debounce_register_offset[port]));
 }
 
-static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ep93xx_gpio_ab_irq_handler(struct irq_desc *desc)
 {
 	unsigned char status;
 	int i;
@@ -100,13 +100,14 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ep93xx_gpio_f_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ep93xx_gpio_f_irq_handler(struct irq_desc *desc)
 {
 	/*
 	 * map discontiguous hw irq range to continuous sw irq range:
 	 *
 	 *  IRQ_EP93XX_GPIO{0..7}MUX -> gpio_to_irq(EP93XX_GPIO_LINE_F({0..7})
 	 */
+	unsigned int irq = irq_desc_get_irq(desc);
 	int port_f_idx = ((irq + 1) & 7) ^ 4; /* {19..22,47..50} -> {0..7} */
 	int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_F(0)) + port_f_idx;
 
diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
index aa28c65eb6b4..70097472b02c 100644
--- a/drivers/gpio/gpio-intel-mid.c
+++ b/drivers/gpio/gpio-intel-mid.c
@@ -301,7 +301,7 @@ static const struct pci_device_id intel_gpio_ids[] = {
 };
 MODULE_DEVICE_TABLE(pci, intel_gpio_ids);
 
-static void intel_mid_irq_handler(unsigned irq, struct irq_desc *desc)
+static void intel_mid_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct intel_mid_gpio *priv = to_intel_gpio_priv(gc);
diff --git a/drivers/gpio/gpio-lynxpoint.c b/drivers/gpio/gpio-lynxpoint.c
index 127c755b38dc..23e884aefe36 100644
--- a/drivers/gpio/gpio-lynxpoint.c
+++ b/drivers/gpio/gpio-lynxpoint.c
@@ -234,7 +234,7 @@ static int lp_gpio_direction_output(struct gpio_chip *chip,
 	return 0;
 }
 
-static void lp_gpio_irq_handler(unsigned hwirq, struct irq_desc *desc)
+static void lp_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c
index a65b75161aa4..281dea4d2e39 100644
--- a/drivers/gpio/gpio-mpc8xxx.c
+++ b/drivers/gpio/gpio-mpc8xxx.c
@@ -185,7 +185,7 @@ static int mpc8xxx_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
 		return -ENXIO;
 }
 
-static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc8xxx_gpio_irq_cascade(struct irq_desc *desc)
 {
 	struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-msic.c b/drivers/gpio/gpio-msic.c
index 01acf0a8cdb1..35b3046d1c7d 100644
--- a/drivers/gpio/gpio-msic.c
+++ b/drivers/gpio/gpio-msic.c
@@ -232,7 +232,7 @@ static struct irq_chip msic_irqchip = {
 	.irq_bus_sync_unlock	= msic_bus_sync_unlock,
 };
 
-static void msic_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void msic_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct msic_gpio *mg = irq_data_get_irq_handler_data(data);
diff --git a/drivers/gpio/gpio-msm-v2.c b/drivers/gpio/gpio-msm-v2.c
index 52ff18229fdc..f4a69e005409 100644
--- a/drivers/gpio/gpio-msm-v2.c
+++ b/drivers/gpio/gpio-msm-v2.c
@@ -313,7 +313,7 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type)
  * which have been set as summary IRQ lines and which are triggered,
  * and to call their interrupt handlers.
  */
-static void msm_summary_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void msm_summary_irq_handler(struct irq_desc *desc)
 {
 	unsigned long i;
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
index a8c302ef7bc4..5b12549e3d6c 100644
--- a/drivers/gpio/gpio-mvebu.c
+++ b/drivers/gpio/gpio-mvebu.c
@@ -458,7 +458,7 @@ static int mvebu_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void mvebu_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void mvebu_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct mvebu_gpio_chip *mvchip = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
index f10948c04f7c..1f5186002326 100644
--- a/drivers/gpio/gpio-mxc.c
+++ b/drivers/gpio/gpio-mxc.c
@@ -272,7 +272,7 @@ static void mxc_gpio_irq_handler(struct mxc_gpio_port *port, u32 irq_stat)
 }
 
 /* MX1 and MX3 has one interrupt *per* gpio port */
-static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx3_gpio_irq_handler(struct irq_desc *desc)
 {
 	u32 irq_stat;
 	struct mxc_gpio_port *port = irq_desc_get_handler_data(desc);
@@ -288,7 +288,7 @@ static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 }
 
 /* MX2 has one interrupt *for all* gpio ports */
-static void mx2_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx2_gpio_irq_handler(struct irq_desc *desc)
 {
 	u32 irq_msk, irq_stat;
 	struct mxc_gpio_port *port;
diff --git a/drivers/gpio/gpio-mxs.c b/drivers/gpio/gpio-mxs.c
index 039c7d50e64f..e5b286e9f016 100644
--- a/drivers/gpio/gpio-mxs.c
+++ b/drivers/gpio/gpio-mxs.c
@@ -154,7 +154,7 @@ static void mxs_flip_edge(struct mxs_gpio_port *port, u32 gpio)
 }
 
 /* MXS has one interrupt *per* gpio port */
-static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mxs_gpio_irq_handler(struct irq_desc *desc)
 {
 	u32 irq_stat;
 	struct mxs_gpio_port *port = irq_desc_get_handler_data(desc);
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index acbf3feff1e2..7f764d786efe 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -711,7 +711,7 @@ static void omap_gpio_free(struct gpio_chip *chip, unsigned offset)
  * line's interrupt handler has been run, we may miss some nested
  * interrupts.
  */
-static void omap_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void omap_gpio_irq_handler(struct irq_desc *desc)
 {
 	void __iomem *isr_reg = NULL;
 	u32 isr;
diff --git a/drivers/gpio/gpio-pl061.c b/drivers/gpio/gpio-pl061.c
index 04756130437f..229ef653e0f8 100644
--- a/drivers/gpio/gpio-pl061.c
+++ b/drivers/gpio/gpio-pl061.c
@@ -187,7 +187,7 @@ static int pl061_irq_type(struct irq_data *d, unsigned trigger)
 	return 0;
 }
 
-static void pl061_irq_handler(unsigned irq, struct irq_desc *desc)
+static void pl061_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending;
 	int offset;
diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index cdbbcf0faf9d..a6d51338b86e 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -401,7 +401,7 @@ static int pxa_gpio_irq_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc)
+static void pxa_gpio_demux_handler(struct irq_desc *desc)
 {
 	struct pxa_gpio_chip *c;
 	int loop, gpio, gpio_base, n;
diff --git a/drivers/gpio/gpio-sa1100.c b/drivers/gpio/gpio-sa1100.c
index bec397a60204..cde43049d5f6 100644
--- a/drivers/gpio/gpio-sa1100.c
+++ b/drivers/gpio/gpio-sa1100.c
@@ -173,9 +173,9 @@ static struct irq_domain *sa1100_gpio_irqdomain;
  * and call the handler.
  */
 static void
-sa1100_gpio_handler(unsigned int irq, struct irq_desc *desc)
+sa1100_gpio_handler(struct irq_desc *desc)
 {
-	unsigned int mask;
+	unsigned int mask, irq;
 
 	mask = GEDR;
 	do {
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index 89ed8a56eb0b..bfd5f39d1bc3 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -266,7 +266,7 @@ static void tegra_gpio_irq_shutdown(struct irq_data *d)
 	gpiochip_unlock_as_irq(&tegra_gpio_chip, gpio);
 }
 
-static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void tegra_gpio_irq_handler(struct irq_desc *desc)
 {
 	int port;
 	int pin;
diff --git a/drivers/gpio/gpio-timberdale.c b/drivers/gpio/gpio-timberdale.c
index d4e8cb4f2e53..107094139ec4 100644
--- a/drivers/gpio/gpio-timberdale.c
+++ b/drivers/gpio/gpio-timberdale.c
@@ -192,13 +192,14 @@ out:
 	return ret;
 }
 
-static void timbgpio_irq(unsigned int irq, struct irq_desc *desc)
+static void timbgpio_irq(struct irq_desc *desc)
 {
 	struct timbgpio *tgpio = irq_desc_get_handler_data(desc);
+	struct irq_data *data = irq_desc_get_irq_data(desc);
 	unsigned long ipr;
 	int offset;
 
-	desc->irq_data.chip->irq_ack(irq_get_irq_data(irq));
+	data->chip->irq_ack(data);
 	ipr = ioread32(tgpio->membase + TGPIO_IPR);
 	iowrite32(ipr, tgpio->membase + TGPIO_ICR);
 
diff --git a/drivers/gpio/gpio-tz1090.c b/drivers/gpio/gpio-tz1090.c
index 445660adc898..58dfa595dbd7 100644
--- a/drivers/gpio/gpio-tz1090.c
+++ b/drivers/gpio/gpio-tz1090.c
@@ -375,7 +375,7 @@ static int gpio_set_irq_wake(struct irq_data *data, unsigned int on)
 #define gpio_set_irq_wake NULL
 #endif
 
-static void tz1090_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void tz1090_gpio_irq_handler(struct irq_desc *desc)
 {
 	irq_hw_number_t hw;
 	unsigned int irq_stat, irq_no;
@@ -400,7 +400,7 @@ static void tz1090_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 				== IRQ_TYPE_EDGE_BOTH)
 			tz1090_gpio_irq_next_edge(bank, hw);
 
-		generic_handle_irq_desc(irq_no, child_desc);
+		generic_handle_irq_desc(child_desc);
 	}
 }
 
diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
index fa344388f4da..18d0ae80dc4a 100644
--- a/drivers/gpio/gpio-vf610.c
+++ b/drivers/gpio/gpio-vf610.c
@@ -118,7 +118,7 @@ static int vf610_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
 	return pinctrl_gpio_direction_output(chip->base + gpio);
 }
 
-static void vf610_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void vf610_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct vf610_gpio_port *port = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c
index 70e3a568b1cb..92d91d3b6dd7 100644
--- a/drivers/gpio/gpio-zynq.c
+++ b/drivers/gpio/gpio-zynq.c
@@ -495,7 +495,7 @@ static void zynq_gpio_handle_bank_irq(struct zynq_gpio *gpio,
  * application for that pin.
  * Note: A bug is reported if no handler is set for the gpio pin.
  */
-static void zynq_gpio_irqhandler(unsigned int irq, struct irq_desc *desc)
+static void zynq_gpio_irqhandler(struct irq_desc *desc)
 {
 	u32 int_sts, int_enb;
 	unsigned int bank_num;
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 22/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: linux-arm-kernel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/gpio/gpio-altera.c     |    6 ++----
 drivers/gpio/gpio-bcm-kona.c   |    2 +-
 drivers/gpio/gpio-davinci.c    |    3 ++-
 drivers/gpio/gpio-dwapb.c      |    2 +-
 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      |    2 +-
 drivers/gpio/gpio-mxc.c        |    4 ++--
 drivers/gpio/gpio-mxs.c        |    2 +-
 drivers/gpio/gpio-omap.c       |    2 +-
 drivers/gpio/gpio-pl061.c      |    2 +-
 drivers/gpio/gpio-pxa.c        |    2 +-
 drivers/gpio/gpio-sa1100.c     |    4 ++--
 drivers/gpio/gpio-tegra.c      |    2 +-
 drivers/gpio/gpio-timberdale.c |    5 +++--
 drivers/gpio/gpio-tz1090.c     |    4 ++--
 drivers/gpio/gpio-vf610.c      |    2 +-
 drivers/gpio/gpio-zynq.c       |    2 +-
 22 files changed, 31 insertions(+), 30 deletions(-)

diff --git a/drivers/gpio/gpio-altera.c b/drivers/gpio/gpio-altera.c
index 449fb46cb8a0..985c3bd9a03e 100644
--- a/drivers/gpio/gpio-altera.c
+++ b/drivers/gpio/gpio-altera.c
@@ -200,8 +200,7 @@ static int altera_gpio_direction_output(struct gpio_chip *gc,
 	return 0;
 }
 
-static void altera_gpio_irq_edge_handler(unsigned int irq,
-					struct irq_desc *desc)
+static void altera_gpio_irq_edge_handler(struct irq_desc *desc)
 {
 	struct altera_gpio_chip *altera_gc;
 	struct irq_chip *chip;
@@ -230,8 +229,7 @@ static void altera_gpio_irq_edge_handler(unsigned int irq,
 }
 
 
-static void altera_gpio_irq_leveL_high_handler(unsigned int irq,
-					      struct irq_desc *desc)
+static void altera_gpio_irq_leveL_high_handler(struct irq_desc *desc)
 {
 	struct altera_gpio_chip *altera_gc;
 	struct irq_chip *chip;
diff --git a/drivers/gpio/gpio-bcm-kona.c b/drivers/gpio/gpio-bcm-kona.c
index 2e7a8c66fe57..6471892f4f83 100644
--- a/drivers/gpio/gpio-bcm-kona.c
+++ b/drivers/gpio/gpio-bcm-kona.c
@@ -427,7 +427,7 @@ static int bcm_kona_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void bcm_kona_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void bcm_kona_gpio_irq_handler(struct irq_desc *desc)
 {
 	void __iomem *reg_base;
 	int bit, bank_id;
diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index 477d5b8616ab..31206ea4c84e 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -327,8 +327,9 @@ static struct irq_chip gpio_irqchip = {
 };
 
 static void
-gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+gpio_irq_handler(struct irq_desc *desc)
 {
+	unsigned irq = irq_desc_get_irq(desc);
 	struct davinci_gpio_regs __iomem *g;
 	u32 mask = 0xffff;
 	struct davinci_gpio_controller *d;
diff --git a/drivers/gpio/gpio-dwapb.c b/drivers/gpio/gpio-dwapb.c
index 649be07a845d..bf7cb1be756d 100644
--- a/drivers/gpio/gpio-dwapb.c
+++ b/drivers/gpio/gpio-dwapb.c
@@ -147,7 +147,7 @@ static u32 dwapb_do_irq(struct dwapb_gpio *gpio)
 	return ret;
 }
 
-static void dwapb_irq_handler(u32 irq, struct irq_desc *desc)
+static void dwapb_irq_handler(struct irq_desc *desc)
 {
 	struct dwapb_gpio *gpio = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-ep93xx.c b/drivers/gpio/gpio-ep93xx.c
index 45684f36ddb1..03648a8a6f8e 100644
--- a/drivers/gpio/gpio-ep93xx.c
+++ b/drivers/gpio/gpio-ep93xx.c
@@ -78,7 +78,7 @@ static void ep93xx_gpio_int_debounce(unsigned int irq, bool enable)
 		EP93XX_GPIO_REG(int_debounce_register_offset[port]));
 }
 
-static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ep93xx_gpio_ab_irq_handler(struct irq_desc *desc)
 {
 	unsigned char status;
 	int i;
@@ -100,13 +100,14 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ep93xx_gpio_f_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ep93xx_gpio_f_irq_handler(struct irq_desc *desc)
 {
 	/*
 	 * map discontiguous hw irq range to continuous sw irq range:
 	 *
 	 *  IRQ_EP93XX_GPIO{0..7}MUX -> gpio_to_irq(EP93XX_GPIO_LINE_F({0..7})
 	 */
+	unsigned int irq = irq_desc_get_irq(desc);
 	int port_f_idx = ((irq + 1) & 7) ^ 4; /* {19..22,47..50} -> {0..7} */
 	int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_F(0)) + port_f_idx;
 
diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
index aa28c65eb6b4..70097472b02c 100644
--- a/drivers/gpio/gpio-intel-mid.c
+++ b/drivers/gpio/gpio-intel-mid.c
@@ -301,7 +301,7 @@ static const struct pci_device_id intel_gpio_ids[] = {
 };
 MODULE_DEVICE_TABLE(pci, intel_gpio_ids);
 
-static void intel_mid_irq_handler(unsigned irq, struct irq_desc *desc)
+static void intel_mid_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct intel_mid_gpio *priv = to_intel_gpio_priv(gc);
diff --git a/drivers/gpio/gpio-lynxpoint.c b/drivers/gpio/gpio-lynxpoint.c
index 127c755b38dc..23e884aefe36 100644
--- a/drivers/gpio/gpio-lynxpoint.c
+++ b/drivers/gpio/gpio-lynxpoint.c
@@ -234,7 +234,7 @@ static int lp_gpio_direction_output(struct gpio_chip *chip,
 	return 0;
 }
 
-static void lp_gpio_irq_handler(unsigned hwirq, struct irq_desc *desc)
+static void lp_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c
index a65b75161aa4..281dea4d2e39 100644
--- a/drivers/gpio/gpio-mpc8xxx.c
+++ b/drivers/gpio/gpio-mpc8xxx.c
@@ -185,7 +185,7 @@ static int mpc8xxx_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
 		return -ENXIO;
 }
 
-static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc8xxx_gpio_irq_cascade(struct irq_desc *desc)
 {
 	struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-msic.c b/drivers/gpio/gpio-msic.c
index 01acf0a8cdb1..35b3046d1c7d 100644
--- a/drivers/gpio/gpio-msic.c
+++ b/drivers/gpio/gpio-msic.c
@@ -232,7 +232,7 @@ static struct irq_chip msic_irqchip = {
 	.irq_bus_sync_unlock	= msic_bus_sync_unlock,
 };
 
-static void msic_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void msic_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct msic_gpio *mg = irq_data_get_irq_handler_data(data);
diff --git a/drivers/gpio/gpio-msm-v2.c b/drivers/gpio/gpio-msm-v2.c
index 52ff18229fdc..f4a69e005409 100644
--- a/drivers/gpio/gpio-msm-v2.c
+++ b/drivers/gpio/gpio-msm-v2.c
@@ -313,7 +313,7 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type)
  * which have been set as summary IRQ lines and which are triggered,
  * and to call their interrupt handlers.
  */
-static void msm_summary_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void msm_summary_irq_handler(struct irq_desc *desc)
 {
 	unsigned long i;
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
index a8c302ef7bc4..5b12549e3d6c 100644
--- a/drivers/gpio/gpio-mvebu.c
+++ b/drivers/gpio/gpio-mvebu.c
@@ -458,7 +458,7 @@ static int mvebu_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void mvebu_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void mvebu_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct mvebu_gpio_chip *mvchip = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
index f10948c04f7c..1f5186002326 100644
--- a/drivers/gpio/gpio-mxc.c
+++ b/drivers/gpio/gpio-mxc.c
@@ -272,7 +272,7 @@ static void mxc_gpio_irq_handler(struct mxc_gpio_port *port, u32 irq_stat)
 }
 
 /* MX1 and MX3 has one interrupt *per* gpio port */
-static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx3_gpio_irq_handler(struct irq_desc *desc)
 {
 	u32 irq_stat;
 	struct mxc_gpio_port *port = irq_desc_get_handler_data(desc);
@@ -288,7 +288,7 @@ static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 }
 
 /* MX2 has one interrupt *for all* gpio ports */
-static void mx2_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx2_gpio_irq_handler(struct irq_desc *desc)
 {
 	u32 irq_msk, irq_stat;
 	struct mxc_gpio_port *port;
diff --git a/drivers/gpio/gpio-mxs.c b/drivers/gpio/gpio-mxs.c
index 039c7d50e64f..e5b286e9f016 100644
--- a/drivers/gpio/gpio-mxs.c
+++ b/drivers/gpio/gpio-mxs.c
@@ -154,7 +154,7 @@ static void mxs_flip_edge(struct mxs_gpio_port *port, u32 gpio)
 }
 
 /* MXS has one interrupt *per* gpio port */
-static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mxs_gpio_irq_handler(struct irq_desc *desc)
 {
 	u32 irq_stat;
 	struct mxs_gpio_port *port = irq_desc_get_handler_data(desc);
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index acbf3feff1e2..7f764d786efe 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -711,7 +711,7 @@ static void omap_gpio_free(struct gpio_chip *chip, unsigned offset)
  * line's interrupt handler has been run, we may miss some nested
  * interrupts.
  */
-static void omap_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void omap_gpio_irq_handler(struct irq_desc *desc)
 {
 	void __iomem *isr_reg = NULL;
 	u32 isr;
diff --git a/drivers/gpio/gpio-pl061.c b/drivers/gpio/gpio-pl061.c
index 04756130437f..229ef653e0f8 100644
--- a/drivers/gpio/gpio-pl061.c
+++ b/drivers/gpio/gpio-pl061.c
@@ -187,7 +187,7 @@ static int pl061_irq_type(struct irq_data *d, unsigned trigger)
 	return 0;
 }
 
-static void pl061_irq_handler(unsigned irq, struct irq_desc *desc)
+static void pl061_irq_handler(struct irq_desc *desc)
 {
 	unsigned long pending;
 	int offset;
diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index cdbbcf0faf9d..a6d51338b86e 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -401,7 +401,7 @@ static int pxa_gpio_irq_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc)
+static void pxa_gpio_demux_handler(struct irq_desc *desc)
 {
 	struct pxa_gpio_chip *c;
 	int loop, gpio, gpio_base, n;
diff --git a/drivers/gpio/gpio-sa1100.c b/drivers/gpio/gpio-sa1100.c
index bec397a60204..cde43049d5f6 100644
--- a/drivers/gpio/gpio-sa1100.c
+++ b/drivers/gpio/gpio-sa1100.c
@@ -173,9 +173,9 @@ static struct irq_domain *sa1100_gpio_irqdomain;
  * and call the handler.
  */
 static void
-sa1100_gpio_handler(unsigned int irq, struct irq_desc *desc)
+sa1100_gpio_handler(struct irq_desc *desc)
 {
-	unsigned int mask;
+	unsigned int mask, irq;
 
 	mask = GEDR;
 	do {
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index 89ed8a56eb0b..bfd5f39d1bc3 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -266,7 +266,7 @@ static void tegra_gpio_irq_shutdown(struct irq_data *d)
 	gpiochip_unlock_as_irq(&tegra_gpio_chip, gpio);
 }
 
-static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void tegra_gpio_irq_handler(struct irq_desc *desc)
 {
 	int port;
 	int pin;
diff --git a/drivers/gpio/gpio-timberdale.c b/drivers/gpio/gpio-timberdale.c
index d4e8cb4f2e53..107094139ec4 100644
--- a/drivers/gpio/gpio-timberdale.c
+++ b/drivers/gpio/gpio-timberdale.c
@@ -192,13 +192,14 @@ out:
 	return ret;
 }
 
-static void timbgpio_irq(unsigned int irq, struct irq_desc *desc)
+static void timbgpio_irq(struct irq_desc *desc)
 {
 	struct timbgpio *tgpio = irq_desc_get_handler_data(desc);
+	struct irq_data *data = irq_desc_get_irq_data(desc);
 	unsigned long ipr;
 	int offset;
 
-	desc->irq_data.chip->irq_ack(irq_get_irq_data(irq));
+	data->chip->irq_ack(data);
 	ipr = ioread32(tgpio->membase + TGPIO_IPR);
 	iowrite32(ipr, tgpio->membase + TGPIO_ICR);
 
diff --git a/drivers/gpio/gpio-tz1090.c b/drivers/gpio/gpio-tz1090.c
index 445660adc898..58dfa595dbd7 100644
--- a/drivers/gpio/gpio-tz1090.c
+++ b/drivers/gpio/gpio-tz1090.c
@@ -375,7 +375,7 @@ static int gpio_set_irq_wake(struct irq_data *data, unsigned int on)
 #define gpio_set_irq_wake NULL
 #endif
 
-static void tz1090_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void tz1090_gpio_irq_handler(struct irq_desc *desc)
 {
 	irq_hw_number_t hw;
 	unsigned int irq_stat, irq_no;
@@ -400,7 +400,7 @@ static void tz1090_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 				== IRQ_TYPE_EDGE_BOTH)
 			tz1090_gpio_irq_next_edge(bank, hw);
 
-		generic_handle_irq_desc(irq_no, child_desc);
+		generic_handle_irq_desc(child_desc);
 	}
 }
 
diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
index fa344388f4da..18d0ae80dc4a 100644
--- a/drivers/gpio/gpio-vf610.c
+++ b/drivers/gpio/gpio-vf610.c
@@ -118,7 +118,7 @@ static int vf610_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
 	return pinctrl_gpio_direction_output(chip->base + gpio);
 }
 
-static void vf610_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void vf610_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct vf610_gpio_port *port = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c
index 70e3a568b1cb..92d91d3b6dd7 100644
--- a/drivers/gpio/gpio-zynq.c
+++ b/drivers/gpio/gpio-zynq.c
@@ -495,7 +495,7 @@ static void zynq_gpio_handle_bank_irq(struct zynq_gpio *gpio,
  * application for that pin.
  * Note: A bug is reported if no handler is set for the gpio pin.
  */
-static void zynq_gpio_irqhandler(unsigned int irq, struct irq_desc *desc)
+static void zynq_gpio_irqhandler(struct irq_desc *desc)
 {
 	u32 int_sts, int_enb;
 	unsigned int bank_num;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 23/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20 10:00   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jason Cooper, Kukjin Kim,
	Krzysztof Kozlowski, Kevin Cernekee, Florian Fainelli,
	James Hogan, Maxime Ripard
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi, linux-arm-kernel, linux-samsung-soc,
	linux-mips, linux-metag

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/irqchip/exynos-combiner.c    |    4 ++--
 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    |    2 +-
 drivers/irqchip/irq-gic.c            |    2 +-
 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          |    2 +-
 drivers/irqchip/irq-s3c24xx.c        |    3 ++-
 drivers/irqchip/irq-sunxi-nmi.c      |    2 +-
 drivers/irqchip/irq-tb10x.c          |    4 ++--
 drivers/irqchip/irq-versatile-fpga.c |    6 +++---
 drivers/irqchip/irq-vic.c            |    2 +-
 drivers/irqchip/spear-shirq.c        |    2 +-
 19 files changed, 30 insertions(+), 28 deletions(-)

diff --git a/drivers/irqchip/exynos-combiner.c b/drivers/irqchip/exynos-combiner.c
index 039ceb46fcc0..2bf152307bac 100644
--- a/drivers/irqchip/exynos-combiner.c
+++ b/drivers/irqchip/exynos-combiner.c
@@ -60,7 +60,7 @@ static void combiner_unmask_irq(struct irq_data *data)
 	__raw_writel(mask, combiner_base(data) + COMBINER_ENABLE_SET);
 }
 
-static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+static void combiner_handle_cascade_irq(struct irq_desc *desc)
 {
 	struct combiner_chip_data *chip_data = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
@@ -81,7 +81,7 @@ static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
 	cascade_irq = irq_find_mapping(combiner_irq_domain, combiner_irq);
 
 	if (unlikely(!cascade_irq))
-		handle_bad_irq(irq, desc);
+		handle_bad_irq(desc);
 	else
 		generic_handle_irq(cascade_irq);
 
diff --git a/drivers/irqchip/irq-bcm7038-l1.c b/drivers/irqchip/irq-bcm7038-l1.c
index d3b8c8be15f6..9ad6540bd57e 100644
--- a/drivers/irqchip/irq-bcm7038-l1.c
+++ b/drivers/irqchip/irq-bcm7038-l1.c
@@ -116,7 +116,7 @@ static inline void l1_writel(u32 val, void __iomem *reg)
 		writel(val, reg);
 }
 
-static void bcm7038_l1_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void bcm7038_l1_irq_handle(struct irq_desc *desc)
 {
 	struct bcm7038_l1_chip *intc = irq_desc_get_handler_data(desc);
 	struct bcm7038_l1_cpu *cpu;
diff --git a/drivers/irqchip/irq-bcm7120-l2.c b/drivers/irqchip/irq-bcm7120-l2.c
index 3ba5cc780fcb..4ee0d839009e 100644
--- a/drivers/irqchip/irq-bcm7120-l2.c
+++ b/drivers/irqchip/irq-bcm7120-l2.c
@@ -52,7 +52,7 @@ struct bcm7120_l2_intc_data {
 	const __be32 *map_mask_prop;
 };
 
-static void bcm7120_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void bcm7120_l2_intc_irq_handle(struct irq_desc *desc)
 {
 	struct bcm7120_l2_intc_data *b = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/irq-brcmstb-l2.c b/drivers/irqchip/irq-brcmstb-l2.c
index d6bcc6be0777..f82b96a514fe 100644
--- a/drivers/irqchip/irq-brcmstb-l2.c
+++ b/drivers/irqchip/irq-brcmstb-l2.c
@@ -51,7 +51,7 @@ struct brcmstb_l2_intc_data {
 	u32 saved_mask; /* for suspend/resume */
 };
 
-static void brcmstb_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void brcmstb_l2_intc_irq_handle(struct irq_desc *desc)
 {
 	struct brcmstb_l2_intc_data *b = irq_desc_get_handler_data(desc);
 	struct irq_chip_generic *gc = irq_get_domain_generic_chip(b->domain, 0);
@@ -65,13 +65,13 @@ static void brcmstb_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
 
 	if (status == 0) {
 		raw_spin_lock(&desc->lock);
-		handle_bad_irq(irq, desc);
+		handle_bad_irq(desc);
 		raw_spin_unlock(&desc->lock);
 		goto out;
 	}
 
 	do {
-		irq = ffs(status) - 1;
+		unsigned int irq = ffs(status) - 1;
 		/* ack at our level */
 		irq_reg_writel(gc, 1 << irq, CPU_CLEAR);
 		status &= ~(1 << irq);
diff --git a/drivers/irqchip/irq-dw-apb-ictl.c b/drivers/irqchip/irq-dw-apb-ictl.c
index cddcd3b75f00..7a00d7822228 100644
--- a/drivers/irqchip/irq-dw-apb-ictl.c
+++ b/drivers/irqchip/irq-dw-apb-ictl.c
@@ -26,7 +26,7 @@
 #define APB_INT_FINALSTATUS_L	0x30
 #define APB_INT_FINALSTATUS_H	0x34
 
-static void dw_apb_ictl_handler(unsigned int irq, struct irq_desc *desc)
+static void dw_apb_ictl_handler(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_chip_generic *gc = irq_desc_get_handler_data(desc);
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 6c8a5a7fb4a0..e24d240a8fe8 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -286,7 +286,7 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
 	} while (1);
 }
 
-static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+static void gic_handle_cascade_irq(struct irq_desc *desc)
 {
 	struct gic_chip_data *chip_data = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/irq-imgpdc.c b/drivers/irqchip/irq-imgpdc.c
index 8071c2eb0248..5d8a482100f7 100644
--- a/drivers/irqchip/irq-imgpdc.c
+++ b/drivers/irqchip/irq-imgpdc.c
@@ -218,8 +218,9 @@ static int pdc_irq_set_wake(struct irq_data *data, unsigned int on)
 	return 0;
 }
 
-static void pdc_intc_perip_isr(unsigned int irq, struct irq_desc *desc)
+static void pdc_intc_perip_isr(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pdc_intc_priv *priv;
 	unsigned int i, irq_no;
 
@@ -239,7 +240,7 @@ found:
 	generic_handle_irq(irq_no);
 }
 
-static void pdc_intc_syswake_isr(unsigned int irq, struct irq_desc *desc)
+static void pdc_intc_syswake_isr(struct irq_desc *desc)
 {
 	struct pdc_intc_priv *priv;
 	unsigned int syswake, irq_no;
diff --git a/drivers/irqchip/irq-keystone.c b/drivers/irqchip/irq-keystone.c
index 78e8b3ce5252..f97a65ef5f8c 100644
--- a/drivers/irqchip/irq-keystone.c
+++ b/drivers/irqchip/irq-keystone.c
@@ -84,8 +84,9 @@ static void keystone_irq_ack(struct irq_data *d)
 	/* nothing to do here */
 }
 
-static void keystone_irq_handler(unsigned irq, struct irq_desc *desc)
+static void keystone_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct keystone_irq_device *kirq = irq_desc_get_handler_data(desc);
 	unsigned long pending;
 	int src, virq;
diff --git a/drivers/irqchip/irq-metag-ext.c b/drivers/irqchip/irq-metag-ext.c
index 52e501d8c8f0..f4b46643f2d2 100644
--- a/drivers/irqchip/irq-metag-ext.c
+++ b/drivers/irqchip/irq-metag-ext.c
@@ -436,7 +436,6 @@ static int meta_intc_irq_set_type(struct irq_data *data, unsigned int flow_type)
 
 /**
  * meta_intc_irq_demux() - external irq de-multiplexer
- * @irq:	the virtual interrupt number
  * @desc:	the interrupt description structure for this irq
  *
  * The cpu receives an interrupt on TR2 when a SoC interrupt has occurred. It is
@@ -446,7 +445,7 @@ static int meta_intc_irq_set_type(struct irq_data *data, unsigned int flow_type)
  * Whilst using TR2 to detect external interrupts is a software convention it is
  * (hopefully) unlikely to change.
  */
-static void meta_intc_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void meta_intc_irq_demux(struct irq_desc *desc)
 {
 	struct meta_intc_priv *priv = &meta_intc_priv;
 	irq_hw_number_t hw;
diff --git a/drivers/irqchip/irq-metag.c b/drivers/irqchip/irq-metag.c
index c16c186d97d3..f806a61d6660 100644
--- a/drivers/irqchip/irq-metag.c
+++ b/drivers/irqchip/irq-metag.c
@@ -213,14 +213,13 @@ static int metag_internal_irq_set_affinity(struct irq_data *data,
 
 /*
  *	metag_internal_irq_demux - irq de-multiplexer
- *	@irq:	the interrupt number
  *	@desc:	the interrupt description structure for this irq
  *
  *	The cpu receives an interrupt on TR1 when an interrupt has
  *	occurred. It is this function's job to demux this irq and
  *	figure out exactly which trigger needs servicing.
  */
-static void metag_internal_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void metag_internal_irq_demux(struct irq_desc *desc)
 {
 	struct metag_internal_irq_priv *priv = irq_desc_get_handler_data(desc);
 	irq_hw_number_t hw;
diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c
index fb2e64b1f414..36d6b457e8e9 100644
--- a/drivers/irqchip/irq-mips-gic.c
+++ b/drivers/irqchip/irq-mips-gic.c
@@ -510,7 +510,7 @@ static void __gic_irq_dispatch(void)
 	gic_handle_shared_int();
 }
 
-static void gic_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void gic_irq_dispatch(struct irq_desc *desc)
 {
 	__gic_irq_dispatch();
 }
diff --git a/drivers/irqchip/irq-mmp.c b/drivers/irqchip/irq-mmp.c
index c0da57bdb89d..bde3bbd245a4 100644
--- a/drivers/irqchip/irq-mmp.c
+++ b/drivers/irqchip/irq-mmp.c
@@ -130,8 +130,9 @@ struct irq_chip icu_irq_chip = {
 	.irq_unmask	= icu_unmask_irq,
 };
 
-static void icu_mux_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void icu_mux_irq_demux(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *domain;
 	struct icu_chip_data *data;
 	int i;
diff --git a/drivers/irqchip/irq-orion.c b/drivers/irqchip/irq-orion.c
index 58e034db0e7c..9e5a36cd1b8f 100644
--- a/drivers/irqchip/irq-orion.c
+++ b/drivers/irqchip/irq-orion.c
@@ -107,7 +107,7 @@ IRQCHIP_DECLARE(orion_intc, "marvell,orion-intc", orion_irq_init);
 #define ORION_BRIDGE_IRQ_CAUSE	0x00
 #define ORION_BRIDGE_IRQ_MASK	0x04
 
-static void orion_bridge_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void orion_bridge_irq_handler(struct irq_desc *desc)
 {
 	struct irq_domain *d = irq_desc_get_handler_data(desc);
 
diff --git a/drivers/irqchip/irq-s3c24xx.c b/drivers/irqchip/irq-s3c24xx.c
index c8d373fcd823..885b4bacf5ad 100644
--- a/drivers/irqchip/irq-s3c24xx.c
+++ b/drivers/irqchip/irq-s3c24xx.c
@@ -299,7 +299,7 @@ static struct irq_chip s3c_irq_eint0t4 = {
 	.irq_set_type	= s3c_irqext0_type,
 };
 
-static void s3c_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct s3c_irq_data *irq_data = irq_desc_get_chip_data(desc);
@@ -309,6 +309,7 @@ static void s3c_irq_demux(unsigned int irq, struct irq_desc *desc)
 	unsigned long msk;
 	unsigned int n;
 	unsigned int offset;
+	unsigned int irq;
 
 	/* we're using individual domains for the non-dt case
 	 * and one big domain for the dt case where the subintc
diff --git a/drivers/irqchip/irq-sunxi-nmi.c b/drivers/irqchip/irq-sunxi-nmi.c
index 2eaa9d9df241..4e16ccd398f8 100644
--- a/drivers/irqchip/irq-sunxi-nmi.c
+++ b/drivers/irqchip/irq-sunxi-nmi.c
@@ -58,7 +58,7 @@ static inline u32 sunxi_sc_nmi_read(struct irq_chip_generic *gc, u32 off)
 	return irq_reg_readl(gc, off);
 }
 
-static void sunxi_sc_nmi_handle_irq(unsigned int irq, struct irq_desc *desc)
+static void sunxi_sc_nmi_handle_irq(struct irq_desc *desc)
 {
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/irq-tb10x.c b/drivers/irqchip/irq-tb10x.c
index accc20036a3c..bdcc39218d46 100644
--- a/drivers/irqchip/irq-tb10x.c
+++ b/drivers/irqchip/irq-tb10x.c
@@ -97,11 +97,11 @@ static int tb10x_irq_set_type(struct irq_data *data, unsigned int flow_type)
 	return IRQ_SET_MASK_OK;
 }
 
-static void tb10x_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void tb10x_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
 
-	generic_handle_irq(irq_find_mapping(domain, irq));
+	generic_handle_irq(irq_find_mapping(domain, irq_desc_get_irq(desc)));
 }
 
 static int __init of_tb10x_init_irq(struct device_node *ictl,
diff --git a/drivers/irqchip/irq-versatile-fpga.c b/drivers/irqchip/irq-versatile-fpga.c
index 1ab451729a5c..6ce21c1e9fff 100644
--- a/drivers/irqchip/irq-versatile-fpga.c
+++ b/drivers/irqchip/irq-versatile-fpga.c
@@ -66,18 +66,18 @@ static void fpga_irq_unmask(struct irq_data *d)
 	writel(mask, f->base + IRQ_ENABLE_SET);
 }
 
-static void fpga_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void fpga_irq_handle(struct irq_desc *desc)
 {
 	struct fpga_irq_data *f = irq_desc_get_handler_data(desc);
 	u32 status = readl(f->base + IRQ_STATUS);
 
 	if (status == 0) {
-		do_bad_IRQ(irq, desc);
+		do_bad_IRQ(desc);
 		return;
 	}
 
 	do {
-		irq = ffs(status) - 1;
+		unsigned int irq = ffs(status) - 1;
 		status &= ~(1 << irq);
 		generic_handle_irq(irq_find_mapping(f->domain, irq));
 	} while (status);
diff --git a/drivers/irqchip/irq-vic.c b/drivers/irqchip/irq-vic.c
index 54089debf2dc..9f090e4284e4 100644
--- a/drivers/irqchip/irq-vic.c
+++ b/drivers/irqchip/irq-vic.c
@@ -226,7 +226,7 @@ static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs)
 	return handled;
 }
 
-static void vic_handle_irq_cascaded(unsigned int irq, struct irq_desc *desc)
+static void vic_handle_irq_cascaded(struct irq_desc *desc)
 {
 	u32 stat, hwirq;
 	struct irq_chip *host_chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/spear-shirq.c b/drivers/irqchip/spear-shirq.c
index fb68ee9c0424..1396f0fad479 100644
--- a/drivers/irqchip/spear-shirq.c
+++ b/drivers/irqchip/spear-shirq.c
@@ -183,7 +183,7 @@ static struct spear_shirq *spear320_shirq_blocks[] = {
 	&spear320_shirq_intrcomm_ras,
 };
 
-static void shirq_handler(unsigned irq, struct irq_desc *desc)
+static void shirq_handler(struct irq_desc *desc)
 {
 	struct spear_shirq *shirq = irq_desc_get_handler_data(desc);
 	u32 pend;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 23/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: linux-arm-kernel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/irqchip/exynos-combiner.c    |    4 ++--
 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    |    2 +-
 drivers/irqchip/irq-gic.c            |    2 +-
 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          |    2 +-
 drivers/irqchip/irq-s3c24xx.c        |    3 ++-
 drivers/irqchip/irq-sunxi-nmi.c      |    2 +-
 drivers/irqchip/irq-tb10x.c          |    4 ++--
 drivers/irqchip/irq-versatile-fpga.c |    6 +++---
 drivers/irqchip/irq-vic.c            |    2 +-
 drivers/irqchip/spear-shirq.c        |    2 +-
 19 files changed, 30 insertions(+), 28 deletions(-)

diff --git a/drivers/irqchip/exynos-combiner.c b/drivers/irqchip/exynos-combiner.c
index 039ceb46fcc0..2bf152307bac 100644
--- a/drivers/irqchip/exynos-combiner.c
+++ b/drivers/irqchip/exynos-combiner.c
@@ -60,7 +60,7 @@ static void combiner_unmask_irq(struct irq_data *data)
 	__raw_writel(mask, combiner_base(data) + COMBINER_ENABLE_SET);
 }
 
-static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+static void combiner_handle_cascade_irq(struct irq_desc *desc)
 {
 	struct combiner_chip_data *chip_data = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
@@ -81,7 +81,7 @@ static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
 	cascade_irq = irq_find_mapping(combiner_irq_domain, combiner_irq);
 
 	if (unlikely(!cascade_irq))
-		handle_bad_irq(irq, desc);
+		handle_bad_irq(desc);
 	else
 		generic_handle_irq(cascade_irq);
 
diff --git a/drivers/irqchip/irq-bcm7038-l1.c b/drivers/irqchip/irq-bcm7038-l1.c
index d3b8c8be15f6..9ad6540bd57e 100644
--- a/drivers/irqchip/irq-bcm7038-l1.c
+++ b/drivers/irqchip/irq-bcm7038-l1.c
@@ -116,7 +116,7 @@ static inline void l1_writel(u32 val, void __iomem *reg)
 		writel(val, reg);
 }
 
-static void bcm7038_l1_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void bcm7038_l1_irq_handle(struct irq_desc *desc)
 {
 	struct bcm7038_l1_chip *intc = irq_desc_get_handler_data(desc);
 	struct bcm7038_l1_cpu *cpu;
diff --git a/drivers/irqchip/irq-bcm7120-l2.c b/drivers/irqchip/irq-bcm7120-l2.c
index 3ba5cc780fcb..4ee0d839009e 100644
--- a/drivers/irqchip/irq-bcm7120-l2.c
+++ b/drivers/irqchip/irq-bcm7120-l2.c
@@ -52,7 +52,7 @@ struct bcm7120_l2_intc_data {
 	const __be32 *map_mask_prop;
 };
 
-static void bcm7120_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void bcm7120_l2_intc_irq_handle(struct irq_desc *desc)
 {
 	struct bcm7120_l2_intc_data *b = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/irq-brcmstb-l2.c b/drivers/irqchip/irq-brcmstb-l2.c
index d6bcc6be0777..f82b96a514fe 100644
--- a/drivers/irqchip/irq-brcmstb-l2.c
+++ b/drivers/irqchip/irq-brcmstb-l2.c
@@ -51,7 +51,7 @@ struct brcmstb_l2_intc_data {
 	u32 saved_mask; /* for suspend/resume */
 };
 
-static void brcmstb_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void brcmstb_l2_intc_irq_handle(struct irq_desc *desc)
 {
 	struct brcmstb_l2_intc_data *b = irq_desc_get_handler_data(desc);
 	struct irq_chip_generic *gc = irq_get_domain_generic_chip(b->domain, 0);
@@ -65,13 +65,13 @@ static void brcmstb_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
 
 	if (status == 0) {
 		raw_spin_lock(&desc->lock);
-		handle_bad_irq(irq, desc);
+		handle_bad_irq(desc);
 		raw_spin_unlock(&desc->lock);
 		goto out;
 	}
 
 	do {
-		irq = ffs(status) - 1;
+		unsigned int irq = ffs(status) - 1;
 		/* ack at our level */
 		irq_reg_writel(gc, 1 << irq, CPU_CLEAR);
 		status &= ~(1 << irq);
diff --git a/drivers/irqchip/irq-dw-apb-ictl.c b/drivers/irqchip/irq-dw-apb-ictl.c
index cddcd3b75f00..7a00d7822228 100644
--- a/drivers/irqchip/irq-dw-apb-ictl.c
+++ b/drivers/irqchip/irq-dw-apb-ictl.c
@@ -26,7 +26,7 @@
 #define APB_INT_FINALSTATUS_L	0x30
 #define APB_INT_FINALSTATUS_H	0x34
 
-static void dw_apb_ictl_handler(unsigned int irq, struct irq_desc *desc)
+static void dw_apb_ictl_handler(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_chip_generic *gc = irq_desc_get_handler_data(desc);
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 6c8a5a7fb4a0..e24d240a8fe8 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -286,7 +286,7 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
 	} while (1);
 }
 
-static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+static void gic_handle_cascade_irq(struct irq_desc *desc)
 {
 	struct gic_chip_data *chip_data = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/irq-imgpdc.c b/drivers/irqchip/irq-imgpdc.c
index 8071c2eb0248..5d8a482100f7 100644
--- a/drivers/irqchip/irq-imgpdc.c
+++ b/drivers/irqchip/irq-imgpdc.c
@@ -218,8 +218,9 @@ static int pdc_irq_set_wake(struct irq_data *data, unsigned int on)
 	return 0;
 }
 
-static void pdc_intc_perip_isr(unsigned int irq, struct irq_desc *desc)
+static void pdc_intc_perip_isr(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pdc_intc_priv *priv;
 	unsigned int i, irq_no;
 
@@ -239,7 +240,7 @@ found:
 	generic_handle_irq(irq_no);
 }
 
-static void pdc_intc_syswake_isr(unsigned int irq, struct irq_desc *desc)
+static void pdc_intc_syswake_isr(struct irq_desc *desc)
 {
 	struct pdc_intc_priv *priv;
 	unsigned int syswake, irq_no;
diff --git a/drivers/irqchip/irq-keystone.c b/drivers/irqchip/irq-keystone.c
index 78e8b3ce5252..f97a65ef5f8c 100644
--- a/drivers/irqchip/irq-keystone.c
+++ b/drivers/irqchip/irq-keystone.c
@@ -84,8 +84,9 @@ static void keystone_irq_ack(struct irq_data *d)
 	/* nothing to do here */
 }
 
-static void keystone_irq_handler(unsigned irq, struct irq_desc *desc)
+static void keystone_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct keystone_irq_device *kirq = irq_desc_get_handler_data(desc);
 	unsigned long pending;
 	int src, virq;
diff --git a/drivers/irqchip/irq-metag-ext.c b/drivers/irqchip/irq-metag-ext.c
index 52e501d8c8f0..f4b46643f2d2 100644
--- a/drivers/irqchip/irq-metag-ext.c
+++ b/drivers/irqchip/irq-metag-ext.c
@@ -436,7 +436,6 @@ static int meta_intc_irq_set_type(struct irq_data *data, unsigned int flow_type)
 
 /**
  * meta_intc_irq_demux() - external irq de-multiplexer
- * @irq:	the virtual interrupt number
  * @desc:	the interrupt description structure for this irq
  *
  * The cpu receives an interrupt on TR2 when a SoC interrupt has occurred. It is
@@ -446,7 +445,7 @@ static int meta_intc_irq_set_type(struct irq_data *data, unsigned int flow_type)
  * Whilst using TR2 to detect external interrupts is a software convention it is
  * (hopefully) unlikely to change.
  */
-static void meta_intc_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void meta_intc_irq_demux(struct irq_desc *desc)
 {
 	struct meta_intc_priv *priv = &meta_intc_priv;
 	irq_hw_number_t hw;
diff --git a/drivers/irqchip/irq-metag.c b/drivers/irqchip/irq-metag.c
index c16c186d97d3..f806a61d6660 100644
--- a/drivers/irqchip/irq-metag.c
+++ b/drivers/irqchip/irq-metag.c
@@ -213,14 +213,13 @@ static int metag_internal_irq_set_affinity(struct irq_data *data,
 
 /*
  *	metag_internal_irq_demux - irq de-multiplexer
- *	@irq:	the interrupt number
  *	@desc:	the interrupt description structure for this irq
  *
  *	The cpu receives an interrupt on TR1 when an interrupt has
  *	occurred. It is this function's job to demux this irq and
  *	figure out exactly which trigger needs servicing.
  */
-static void metag_internal_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void metag_internal_irq_demux(struct irq_desc *desc)
 {
 	struct metag_internal_irq_priv *priv = irq_desc_get_handler_data(desc);
 	irq_hw_number_t hw;
diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c
index fb2e64b1f414..36d6b457e8e9 100644
--- a/drivers/irqchip/irq-mips-gic.c
+++ b/drivers/irqchip/irq-mips-gic.c
@@ -510,7 +510,7 @@ static void __gic_irq_dispatch(void)
 	gic_handle_shared_int();
 }
 
-static void gic_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void gic_irq_dispatch(struct irq_desc *desc)
 {
 	__gic_irq_dispatch();
 }
diff --git a/drivers/irqchip/irq-mmp.c b/drivers/irqchip/irq-mmp.c
index c0da57bdb89d..bde3bbd245a4 100644
--- a/drivers/irqchip/irq-mmp.c
+++ b/drivers/irqchip/irq-mmp.c
@@ -130,8 +130,9 @@ struct irq_chip icu_irq_chip = {
 	.irq_unmask	= icu_unmask_irq,
 };
 
-static void icu_mux_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void icu_mux_irq_demux(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *domain;
 	struct icu_chip_data *data;
 	int i;
diff --git a/drivers/irqchip/irq-orion.c b/drivers/irqchip/irq-orion.c
index 58e034db0e7c..9e5a36cd1b8f 100644
--- a/drivers/irqchip/irq-orion.c
+++ b/drivers/irqchip/irq-orion.c
@@ -107,7 +107,7 @@ IRQCHIP_DECLARE(orion_intc, "marvell,orion-intc", orion_irq_init);
 #define ORION_BRIDGE_IRQ_CAUSE	0x00
 #define ORION_BRIDGE_IRQ_MASK	0x04
 
-static void orion_bridge_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void orion_bridge_irq_handler(struct irq_desc *desc)
 {
 	struct irq_domain *d = irq_desc_get_handler_data(desc);
 
diff --git a/drivers/irqchip/irq-s3c24xx.c b/drivers/irqchip/irq-s3c24xx.c
index c8d373fcd823..885b4bacf5ad 100644
--- a/drivers/irqchip/irq-s3c24xx.c
+++ b/drivers/irqchip/irq-s3c24xx.c
@@ -299,7 +299,7 @@ static struct irq_chip s3c_irq_eint0t4 = {
 	.irq_set_type	= s3c_irqext0_type,
 };
 
-static void s3c_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct s3c_irq_data *irq_data = irq_desc_get_chip_data(desc);
@@ -309,6 +309,7 @@ static void s3c_irq_demux(unsigned int irq, struct irq_desc *desc)
 	unsigned long msk;
 	unsigned int n;
 	unsigned int offset;
+	unsigned int irq;
 
 	/* we're using individual domains for the non-dt case
 	 * and one big domain for the dt case where the subintc
diff --git a/drivers/irqchip/irq-sunxi-nmi.c b/drivers/irqchip/irq-sunxi-nmi.c
index 2eaa9d9df241..4e16ccd398f8 100644
--- a/drivers/irqchip/irq-sunxi-nmi.c
+++ b/drivers/irqchip/irq-sunxi-nmi.c
@@ -58,7 +58,7 @@ static inline u32 sunxi_sc_nmi_read(struct irq_chip_generic *gc, u32 off)
 	return irq_reg_readl(gc, off);
 }
 
-static void sunxi_sc_nmi_handle_irq(unsigned int irq, struct irq_desc *desc)
+static void sunxi_sc_nmi_handle_irq(struct irq_desc *desc)
 {
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/irq-tb10x.c b/drivers/irqchip/irq-tb10x.c
index accc20036a3c..bdcc39218d46 100644
--- a/drivers/irqchip/irq-tb10x.c
+++ b/drivers/irqchip/irq-tb10x.c
@@ -97,11 +97,11 @@ static int tb10x_irq_set_type(struct irq_data *data, unsigned int flow_type)
 	return IRQ_SET_MASK_OK;
 }
 
-static void tb10x_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void tb10x_irq_cascade(struct irq_desc *desc)
 {
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
 
-	generic_handle_irq(irq_find_mapping(domain, irq));
+	generic_handle_irq(irq_find_mapping(domain, irq_desc_get_irq(desc)));
 }
 
 static int __init of_tb10x_init_irq(struct device_node *ictl,
diff --git a/drivers/irqchip/irq-versatile-fpga.c b/drivers/irqchip/irq-versatile-fpga.c
index 1ab451729a5c..6ce21c1e9fff 100644
--- a/drivers/irqchip/irq-versatile-fpga.c
+++ b/drivers/irqchip/irq-versatile-fpga.c
@@ -66,18 +66,18 @@ static void fpga_irq_unmask(struct irq_data *d)
 	writel(mask, f->base + IRQ_ENABLE_SET);
 }
 
-static void fpga_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void fpga_irq_handle(struct irq_desc *desc)
 {
 	struct fpga_irq_data *f = irq_desc_get_handler_data(desc);
 	u32 status = readl(f->base + IRQ_STATUS);
 
 	if (status == 0) {
-		do_bad_IRQ(irq, desc);
+		do_bad_IRQ(desc);
 		return;
 	}
 
 	do {
-		irq = ffs(status) - 1;
+		unsigned int irq = ffs(status) - 1;
 		status &= ~(1 << irq);
 		generic_handle_irq(irq_find_mapping(f->domain, irq));
 	} while (status);
diff --git a/drivers/irqchip/irq-vic.c b/drivers/irqchip/irq-vic.c
index 54089debf2dc..9f090e4284e4 100644
--- a/drivers/irqchip/irq-vic.c
+++ b/drivers/irqchip/irq-vic.c
@@ -226,7 +226,7 @@ static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs)
 	return handled;
 }
 
-static void vic_handle_irq_cascaded(unsigned int irq, struct irq_desc *desc)
+static void vic_handle_irq_cascaded(struct irq_desc *desc)
 {
 	u32 stat, hwirq;
 	struct irq_chip *host_chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/spear-shirq.c b/drivers/irqchip/spear-shirq.c
index fb68ee9c0424..1396f0fad479 100644
--- a/drivers/irqchip/spear-shirq.c
+++ b/drivers/irqchip/spear-shirq.c
@@ -183,7 +183,7 @@ static struct spear_shirq *spear320_shirq_blocks[] = {
 	&spear320_shirq_intrcomm_ras,
 };
 
-static void shirq_handler(unsigned irq, struct irq_desc *desc)
+static void shirq_handler(struct irq_desc *desc)
 {
 	struct spear_shirq *shirq = irq_desc_get_handler_data(desc);
 	u32 pend;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 24/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
                   ` (24 preceding siblings ...)
  (?)
@ 2015-05-20 10:00 ` Jiang Liu
  2015-05-20 10:43     ` Lee Jones
  -1 siblings, 1 reply; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Samuel Ortiz, Lee Jones, Kumar Gala,
	Andy Gross, David Brown
  Cc: Jiang Liu, Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel,
	linux-pci, linux-acpi, linux-arm-msm, linux-soc

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/mfd/asic3.c        |    2 +-
 drivers/mfd/ezx-pcap.c     |    2 +-
 drivers/mfd/htc-egpio.c    |    2 +-
 drivers/mfd/jz4740-adc.c   |    2 +-
 drivers/mfd/pm8921-core.c  |    2 +-
 drivers/mfd/t7l66xb.c      |    2 +-
 drivers/mfd/tc6393xb.c     |    2 +-
 drivers/mfd/ucb1x00-core.c |    4 ++--
 8 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c
index 977bd3a3eed0..6bf17842a3e4 100644
--- a/drivers/mfd/asic3.c
+++ b/drivers/mfd/asic3.c
@@ -138,7 +138,7 @@ static void asic3_irq_flip_edge(struct asic3 *asic,
 	spin_unlock_irqrestore(&asic->lock, flags);
 }
 
-static void asic3_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void asic3_irq_demux(struct irq_desc *desc)
 {
 	struct asic3 *asic = irq_desc_get_handler_data(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
index e5f4ffaa5414..ab83124d75f7 100644
--- a/drivers/mfd/ezx-pcap.c
+++ b/drivers/mfd/ezx-pcap.c
@@ -205,7 +205,7 @@ static void pcap_isr_work(struct work_struct *work)
 	} while (gpio_get_value(pdata->gpio));
 }
 
-static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pcap_irq_handler(struct irq_desc *desc)
 {
 	struct pcap_chip *pcap = irq_desc_get_handler_data(desc);
 
diff --git a/drivers/mfd/htc-egpio.c b/drivers/mfd/htc-egpio.c
index 49f39feca784..8a3264e35403 100644
--- a/drivers/mfd/htc-egpio.c
+++ b/drivers/mfd/htc-egpio.c
@@ -98,7 +98,7 @@ static struct irq_chip egpio_muxed_chip = {
 	.irq_unmask	= egpio_unmask,
 };
 
-static void egpio_handler(unsigned int irq, struct irq_desc *desc)
+static void egpio_handler(struct irq_desc *desc)
 {
 	struct egpio_info *ei = irq_desc_get_handler_data(desc);
 	int irqpin;
diff --git a/drivers/mfd/jz4740-adc.c b/drivers/mfd/jz4740-adc.c
index b31c54e4ecb2..ec1cd2297ea4 100644
--- a/drivers/mfd/jz4740-adc.c
+++ b/drivers/mfd/jz4740-adc.c
@@ -65,7 +65,7 @@ struct jz4740_adc {
 	spinlock_t lock;
 };
 
-static void jz4740_adc_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void jz4740_adc_irq_demux(struct irq_desc *desc)
 {
 	struct irq_chip_generic *gc = irq_desc_get_handler_data(desc);
 	uint8_t status;
diff --git a/drivers/mfd/pm8921-core.c b/drivers/mfd/pm8921-core.c
index 5a92646a2ccb..87dd27e49a8b 100644
--- a/drivers/mfd/pm8921-core.c
+++ b/drivers/mfd/pm8921-core.c
@@ -156,7 +156,7 @@ static int pm8xxx_irq_master_handler(struct pm_irq_chip *chip, int master)
 	return ret;
 }
 
-static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pm8xxx_irq_handler(struct irq_desc *desc)
 {
 	struct pm_irq_chip *chip = irq_desc_get_handler_data(desc);
 	struct irq_chip *irq_chip = irq_desc_get_chip(desc);
diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c
index b752ca2be549..55ade59303b1 100644
--- a/drivers/mfd/t7l66xb.c
+++ b/drivers/mfd/t7l66xb.c
@@ -185,7 +185,7 @@ static struct mfd_cell t7l66xb_cells[] = {
 /*--------------------------------------------------------------------------*/
 
 /* Handle the T7L66XB interrupt mux */
-static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc)
+static void t7l66xb_irq(struct irq_desc *desc)
 {
 	struct t7l66xb *t7l66xb = irq_desc_get_handler_data(desc);
 	unsigned int isr;
diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c
index d21253a51cff..e22722cd667c 100644
--- a/drivers/mfd/tc6393xb.c
+++ b/drivers/mfd/tc6393xb.c
@@ -523,7 +523,7 @@ static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base)
 /*--------------------------------------------------------------------------*/
 
 static void
-tc6393xb_irq(unsigned int irq, struct irq_desc *desc)
+tc6393xb_irq(struct irq_desc *desc)
 {
 	struct tc6393xb *tc6393xb = irq_desc_get_handler_data(desc);
 	unsigned int isr;
diff --git a/drivers/mfd/ucb1x00-core.c b/drivers/mfd/ucb1x00-core.c
index 58ea9fdd3a15..2f8f922a34de 100644
--- a/drivers/mfd/ucb1x00-core.c
+++ b/drivers/mfd/ucb1x00-core.c
@@ -282,7 +282,7 @@ void ucb1x00_adc_disable(struct ucb1x00 *ucb)
  * SIBCLK to talk to the chip.  We leave the clock running until
  * we have finished processing all interrupts from the chip.
  */
-static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc)
+static void ucb1x00_irq(struct irq_desc *desc)
 {
 	struct ucb1x00 *ucb = irq_desc_get_handler_data(desc);
 	unsigned int isr, i;
@@ -292,7 +292,7 @@ static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc)
 	ucb1x00_reg_write(ucb, UCB_IE_CLEAR, isr);
 	ucb1x00_reg_write(ucb, UCB_IE_CLEAR, 0);
 
-	for (i = 0; i < 16 && isr; i++, isr >>= 1, irq++)
+	for (i = 0; i < 16 && isr; i++, isr >>= 1)
 		if (isr & 1)
 			generic_handle_irq(ucb->irq_base + i);
 	ucb1x00_disable(ucb);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 25/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20 10:00   ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Dan Williams, Vinod Koul,
	Murali Karicheri, Jiang Liu, Philipp Zabel, Steve Longerbeam,
	Gilad Avidov
  Cc: Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, dmaengine, linux-arm-kernel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/dma/ipu/ipu_irq.c       |    6 ++++--
 drivers/gpu/ipu-v3/ipu-common.c |    4 ++--
 drivers/pci/host/pci-keystone.c |    7 ++++---
 drivers/spmi/spmi-pmic-arb.c    |    2 +-
 4 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/dma/ipu/ipu_irq.c b/drivers/dma/ipu/ipu_irq.c
index 0e12af37fe2f..edd12278dc3e 100644
--- a/drivers/dma/ipu/ipu_irq.c
+++ b/drivers/dma/ipu/ipu_irq.c
@@ -266,8 +266,9 @@ int ipu_irq_unmap(unsigned int source)
 }
 
 /* Chained IRQ handler for IPU error interrupt */
-static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_err(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_to_irq(desc);
 	struct ipu *ipu = irq_desc_get_handler_data(desc);
 	u32 status;
 	int i, line;
@@ -307,8 +308,9 @@ static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
 }
 
 /* Chained IRQ handler for IPU function interrupt */
-static void ipu_irq_fn(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_fn(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_to_irq(desc);
 	struct ipu *ipu = irq_desc_get_handler_data(desc);
 	u32 status;
 	int i, line;
diff --git a/drivers/gpu/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
index 7022825b7a2c..1125b03c36af 100644
--- a/drivers/gpu/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -912,7 +912,7 @@ static void ipu_irq_handle(struct ipu_soc *ipu, const int *regs, int num_regs)
 	}
 }
 
-static void ipu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_handler(struct irq_desc *desc)
 {
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
@@ -925,7 +925,7 @@ static void ipu_irq_handler(unsigned int irq, struct irq_desc *desc)
 	chained_irq_exit(chip, desc);
 }
 
-static void ipu_err_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ipu_err_irq_handler(struct irq_desc *desc)
 {
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/pci/host/pci-keystone.c b/drivers/pci/host/pci-keystone.c
index 75333b0c4f0a..659a73da372c 100644
--- a/drivers/pci/host/pci-keystone.c
+++ b/drivers/pci/host/pci-keystone.c
@@ -112,8 +112,9 @@ static int ks_pcie_establish_link(struct keystone_pcie *ks_pcie)
 	return 0;
 }
 
-static void ks_pcie_msi_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ks_pcie_msi_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_to_irq(desc);
 	struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
 	u32 offset = irq - ks_pcie->msi_host_irqs[0];
 	struct pcie_port *pp = &ks_pcie->pp;
@@ -133,14 +134,14 @@ static void ks_pcie_msi_irq_handler(unsigned int irq, struct irq_desc *desc)
 
 /**
  * ks_pcie_legacy_irq_handler() - Handle legacy interrupt
- * @irq: IRQ line for legacy interrupts
  * @desc: Pointer to irq descriptor
  *
  * Traverse through pending legacy interrupts and invoke handler for each. Also
  * takes care of interrupt controller level mask/ack operation.
  */
-static void ks_pcie_legacy_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ks_pcie_legacy_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_to_irq(desc);
 	struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
 	struct pcie_port *pp = &ks_pcie->pp;
 	u32 irq_offset = irq - ks_pcie->legacy_host_irqs[0];
diff --git a/drivers/spmi/spmi-pmic-arb.c b/drivers/spmi/spmi-pmic-arb.c
index b32cb0a813cb..d7e7846917ae 100644
--- a/drivers/spmi/spmi-pmic-arb.c
+++ b/drivers/spmi/spmi-pmic-arb.c
@@ -451,7 +451,7 @@ static void periph_interrupt(struct spmi_pmic_arb_dev *pa, u8 apid)
 	}
 }
 
-static void pmic_arb_chained_irq(unsigned int irq, struct irq_desc *desc)
+static void pmic_arb_chained_irq(struct irq_desc *desc)
 {
 	struct spmi_pmic_arb_dev *pa = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* [RFC v1 25/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:00   ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:00 UTC (permalink / raw)
  To: linux-arm-kernel

Now most IRQ flow handlers make no use of the first parameter 'irq'.
And for those who do make use of 'irq', we could easily get the irq
number through irq_desc->irq_data->irq. So kill the first parameter
'irq' of irq_flow_handler_t.

To ease review, I have split the changes into several parts, though
they should be merge as one to support bisecting.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/dma/ipu/ipu_irq.c       |    6 ++++--
 drivers/gpu/ipu-v3/ipu-common.c |    4 ++--
 drivers/pci/host/pci-keystone.c |    7 ++++---
 drivers/spmi/spmi-pmic-arb.c    |    2 +-
 4 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/dma/ipu/ipu_irq.c b/drivers/dma/ipu/ipu_irq.c
index 0e12af37fe2f..edd12278dc3e 100644
--- a/drivers/dma/ipu/ipu_irq.c
+++ b/drivers/dma/ipu/ipu_irq.c
@@ -266,8 +266,9 @@ int ipu_irq_unmap(unsigned int source)
 }
 
 /* Chained IRQ handler for IPU error interrupt */
-static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_err(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_to_irq(desc);
 	struct ipu *ipu = irq_desc_get_handler_data(desc);
 	u32 status;
 	int i, line;
@@ -307,8 +308,9 @@ static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
 }
 
 /* Chained IRQ handler for IPU function interrupt */
-static void ipu_irq_fn(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_fn(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_to_irq(desc);
 	struct ipu *ipu = irq_desc_get_handler_data(desc);
 	u32 status;
 	int i, line;
diff --git a/drivers/gpu/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
index 7022825b7a2c..1125b03c36af 100644
--- a/drivers/gpu/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -912,7 +912,7 @@ static void ipu_irq_handle(struct ipu_soc *ipu, const int *regs, int num_regs)
 	}
 }
 
-static void ipu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_handler(struct irq_desc *desc)
 {
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
@@ -925,7 +925,7 @@ static void ipu_irq_handler(unsigned int irq, struct irq_desc *desc)
 	chained_irq_exit(chip, desc);
 }
 
-static void ipu_err_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ipu_err_irq_handler(struct irq_desc *desc)
 {
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/pci/host/pci-keystone.c b/drivers/pci/host/pci-keystone.c
index 75333b0c4f0a..659a73da372c 100644
--- a/drivers/pci/host/pci-keystone.c
+++ b/drivers/pci/host/pci-keystone.c
@@ -112,8 +112,9 @@ static int ks_pcie_establish_link(struct keystone_pcie *ks_pcie)
 	return 0;
 }
 
-static void ks_pcie_msi_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ks_pcie_msi_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_to_irq(desc);
 	struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
 	u32 offset = irq - ks_pcie->msi_host_irqs[0];
 	struct pcie_port *pp = &ks_pcie->pp;
@@ -133,14 +134,14 @@ static void ks_pcie_msi_irq_handler(unsigned int irq, struct irq_desc *desc)
 
 /**
  * ks_pcie_legacy_irq_handler() - Handle legacy interrupt
- * @irq: IRQ line for legacy interrupts
  * @desc: Pointer to irq descriptor
  *
  * Traverse through pending legacy interrupts and invoke handler for each. Also
  * takes care of interrupt controller level mask/ack operation.
  */
-static void ks_pcie_legacy_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ks_pcie_legacy_irq_handler(struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_to_irq(desc);
 	struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
 	struct pcie_port *pp = &ks_pcie->pp;
 	u32 irq_offset = irq - ks_pcie->legacy_host_irqs[0];
diff --git a/drivers/spmi/spmi-pmic-arb.c b/drivers/spmi/spmi-pmic-arb.c
index b32cb0a813cb..d7e7846917ae 100644
--- a/drivers/spmi/spmi-pmic-arb.c
+++ b/drivers/spmi/spmi-pmic-arb.c
@@ -451,7 +451,7 @@ static void periph_interrupt(struct spmi_pmic_arb_dev *pa, u8 apid)
 	}
 }
 
-static void pmic_arb_chained_irq(unsigned int irq, struct irq_desc *desc)
+static void pmic_arb_chained_irq(struct irq_desc *desc)
 {
 	struct spmi_pmic_arb_dev *pa = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* Re: [RFC v1 02/25] avr32, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` [RFC v1 02/25] avr32, " Jiang Liu
@ 2015-05-20 10:15   ` Hans-Christian Egtvedt
  0 siblings, 0 replies; 120+ messages in thread
From: Hans-Christian Egtvedt @ 2015-05-20 10:15 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Haavard Skinnemoen,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi

Around Wed 20 May 2015 17:59:50 +0800 or thereabout, Jiang Liu wrote:
> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>

Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>

> ---
>  arch/avr32/mach-at32ap/pio.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/avr32/mach-at32ap/pio.c b/arch/avr32/mach-at32ap/pio.c
> index 903c7d81d0d5..2583e6cc44e9 100644
> --- a/arch/avr32/mach-at32ap/pio.c
> +++ b/arch/avr32/mach-at32ap/pio.c
> @@ -286,7 +286,7 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
>  	struct pio_device	*pio = irq_desc_get_chip_data(desc);
>  	unsigned		gpio_irq;
>  
> -	gpio_irq = (unsigned) irq_get_handler_data(irq);
> +	gpio_irq = (unsigned) irq_desc_get_handler_data(desc);
>  	for (;;) {
>  		u32		isr;
>  
-- 
mvh
Hans-Christian Egtvedt

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 00/25] Optimize irq flow handler
  2015-05-20  9:59 ` Jiang Liu
@ 2015-05-20 10:16   ` Ingo Molnar
  -1 siblings, 0 replies; 120+ messages in thread
From: Ingo Molnar @ 2015-05-20 10:16 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Matthias Brugger,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-arm-kernel, linux-mediatek


* Jiang Liu <jiang.liu@linux.intel.com> wrote:

>   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

Those kinds of identical titles are not acceptable.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 00/25] Optimize irq flow handler
@ 2015-05-20 10:16   ` Ingo Molnar
  0 siblings, 0 replies; 120+ messages in thread
From: Ingo Molnar @ 2015-05-20 10:16 UTC (permalink / raw)
  To: linux-arm-kernel


* Jiang Liu <jiang.liu@linux.intel.com> wrote:

>   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

Those kinds of identical titles are not acceptable.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 20/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 10:00   ` Jiang Liu
  (?)
@ 2015-05-20 10:16     ` Hans-Christian Egtvedt
  -1 siblings, 0 replies; 120+ messages in thread
From: Hans-Christian Egtvedt @ 2015-05-20 10:16 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Richard Henderson, Ivan Kokshaysky,
	Matt Turner, Haavard Skinnemoen, Steven Miao, Mark Salter,
	Aurelien Jacquiot, David S. Miller, Chris Metcalf, Guan Xuetao,
	x86, Rusty Russell, Andreas Larsson, Joe Perches,
	Christoph Lameter

Around Wed 20 May 2015 18:00:08 +0800 or thereabout, Jiang Liu wrote:
> Now most IRQ flow handlers make no use of the first parameter 'irq'.
> And for those who do make use of 'irq', we could easily get the irq
> number through irq_desc->irq_data->irq. So kill the first parameter
> 'irq' of irq_flow_handler_t.
> 
> To ease review, I have split the changes into several parts, though
> they should be merge as one to support bisecting.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  arch/alpha/kernel/irq.c             |    2 +-
>  arch/avr32/mach-at32ap/extint.c     |    2 +-
>  arch/avr32/mach-at32ap/pio.c        |    2 +-

For the AVR32 related bits

Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>

>  arch/blackfin/kernel/ipipe.c        |    4 ++--
>  arch/c6x/platforms/megamod-pic.c    |    3 ++-
>  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 +-
>  12 files changed, 16 insertions(+), 14 deletions(-)

<snipp diff>

-- 
HcE

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 20/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:16     ` Hans-Christian Egtvedt
  0 siblings, 0 replies; 120+ messages in thread
From: Hans-Christian Egtvedt @ 2015-05-20 10:16 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Richard Henderson, Ivan Kokshaysky,
	Matt Turner, Haavard Skinnemoen, Steven Miao, Mark Salter,
	Aurelien Jacquiot, David S. Miller, Chris Metcalf, Guan Xuetao,
	x86, Rusty Russell, Andreas Larsson, Joe Perches,
	Christoph Lameter, Brian Gerst, Konrad Rzeszutek Wilk, Tony Luck,
	linux-kernel, linux-pci, linux-acpi, Ingo Molnar, linux-alpha,
	adi-buildroot-devel, linux-c6x-dev, sparclinux, lguest

Around Wed 20 May 2015 18:00:08 +0800 or thereabout, Jiang Liu wrote:
> Now most IRQ flow handlers make no use of the first parameter 'irq'.
> And for those who do make use of 'irq', we could easily get the irq
> number through irq_desc->irq_data->irq. So kill the first parameter
> 'irq' of irq_flow_handler_t.
> 
> To ease review, I have split the changes into several parts, though
> they should be merge as one to support bisecting.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  arch/alpha/kernel/irq.c             |    2 +-
>  arch/avr32/mach-at32ap/extint.c     |    2 +-
>  arch/avr32/mach-at32ap/pio.c        |    2 +-

For the AVR32 related bits

Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>

>  arch/blackfin/kernel/ipipe.c        |    4 ++--
>  arch/c6x/platforms/megamod-pic.c    |    3 ++-
>  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 +-
>  12 files changed, 16 insertions(+), 14 deletions(-)

<snipp diff>

-- 
HcE

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 20/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:16     ` Hans-Christian Egtvedt
  0 siblings, 0 replies; 120+ messages in thread
From: Hans-Christian Egtvedt @ 2015-05-20 10:16 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Richard Henderson, Ivan Kokshaysky,
	Matt Turner, Haavard Skinnemoen, Steven Miao, Mark Salter,
	Aurelien Jacquiot, David S. Miller, Chris Metcalf, Guan Xuetao,
	x86, Rusty Russell, Andreas Larsson, Joe Perches,
	Christoph Lameter

Around Wed 20 May 2015 18:00:08 +0800 or thereabout, Jiang Liu wrote:
> Now most IRQ flow handlers make no use of the first parameter 'irq'.
> And for those who do make use of 'irq', we could easily get the irq
> number through irq_desc->irq_data->irq. So kill the first parameter
> 'irq' of irq_flow_handler_t.
> 
> To ease review, I have split the changes into several parts, though
> they should be merge as one to support bisecting.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  arch/alpha/kernel/irq.c             |    2 +-
>  arch/avr32/mach-at32ap/extint.c     |    2 +-
>  arch/avr32/mach-at32ap/pio.c        |    2 +-

For the AVR32 related bits

Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>

>  arch/blackfin/kernel/ipipe.c        |    4 ++--
>  arch/c6x/platforms/megamod-pic.c    |    3 ++-
>  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 +-
>  12 files changed, 16 insertions(+), 14 deletions(-)

<snipp diff>

-- 
HcE

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 00/25] Optimize irq flow handler
  2015-05-20 10:16   ` Ingo Molnar
@ 2015-05-20 10:23     ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:23 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Matthias Brugger,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-arm-kernel, linux-mediatek

On 2015/5/20 18:16, Ingo Molnar wrote:
> 
> * Jiang Liu <jiang.liu@linux.intel.com> wrote:
> 
>>   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
> 
> Those kinds of identical titles are not acceptable.
Hi Ingo,
	Those patches with identical titles will be merged into one
when ready for merging, they are split for review only.
Thanks!
Gerry

> 
> Thanks,
> 
> 	Ingo
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 00/25] Optimize irq flow handler
@ 2015-05-20 10:23     ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 10:23 UTC (permalink / raw)
  To: linux-arm-kernel

On 2015/5/20 18:16, Ingo Molnar wrote:
> 
> * Jiang Liu <jiang.liu@linux.intel.com> wrote:
> 
>>   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
> 
> Those kinds of identical titles are not acceptable.
Hi Ingo,
	Those patches with identical titles will be merged into one
when ready for merging, they are split for review only.
Thanks!
Gerry

> 
> Thanks,
> 
> 	Ingo
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 24/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 10:00 ` [RFC v1 24/25] " Jiang Liu
@ 2015-05-20 10:43     ` Lee Jones
  0 siblings, 0 replies; 120+ messages in thread
From: Lee Jones @ 2015-05-20 10:43 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Samuel Ortiz, Kumar Gala,
	Andy Gross, David Brown, Konrad Rzeszutek Wilk, Tony Luck, x86,
	linux-kernel, linux-pci, linux-acpi, linux-arm-msm, linux-soc

On Wed, 20 May 2015, Jiang Liu wrote:

> Now most IRQ flow handlers make no use of the first parameter 'irq'.
> And for those who do make use of 'irq', we could easily get the irq
> number through irq_desc->irq_data->irq. So kill the first parameter
> 'irq' of irq_flow_handler_t.
> 
> To ease review, I have split the changes into several parts, though
> they should be merge as one to support bisecting.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  drivers/mfd/asic3.c        |    2 +-
>  drivers/mfd/ezx-pcap.c     |    2 +-
>  drivers/mfd/htc-egpio.c    |    2 +-
>  drivers/mfd/jz4740-adc.c   |    2 +-
>  drivers/mfd/pm8921-core.c  |    2 +-
>  drivers/mfd/t7l66xb.c      |    2 +-
>  drivers/mfd/tc6393xb.c     |    2 +-
>  drivers/mfd/ucb1x00-core.c |    4 ++--
>  8 files changed, 9 insertions(+), 9 deletions(-)

So long as you've build tested each of these files:

Acked-by: Lee Jones <lee.jones@linaro.org>

> diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c
> index 977bd3a3eed0..6bf17842a3e4 100644
> --- a/drivers/mfd/asic3.c
> +++ b/drivers/mfd/asic3.c
> @@ -138,7 +138,7 @@ static void asic3_irq_flip_edge(struct asic3 *asic,
>  	spin_unlock_irqrestore(&asic->lock, flags);
>  }
>  
> -static void asic3_irq_demux(unsigned int irq, struct irq_desc *desc)
> +static void asic3_irq_demux(struct irq_desc *desc)
>  {
>  	struct asic3 *asic = irq_desc_get_handler_data(desc);
>  	struct irq_data *data = irq_desc_get_irq_data(desc);
> diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
> index e5f4ffaa5414..ab83124d75f7 100644
> --- a/drivers/mfd/ezx-pcap.c
> +++ b/drivers/mfd/ezx-pcap.c
> @@ -205,7 +205,7 @@ static void pcap_isr_work(struct work_struct *work)
>  	} while (gpio_get_value(pdata->gpio));
>  }
>  
> -static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void pcap_irq_handler(struct irq_desc *desc)
>  {
>  	struct pcap_chip *pcap = irq_desc_get_handler_data(desc);
>  
> diff --git a/drivers/mfd/htc-egpio.c b/drivers/mfd/htc-egpio.c
> index 49f39feca784..8a3264e35403 100644
> --- a/drivers/mfd/htc-egpio.c
> +++ b/drivers/mfd/htc-egpio.c
> @@ -98,7 +98,7 @@ static struct irq_chip egpio_muxed_chip = {
>  	.irq_unmask	= egpio_unmask,
>  };
>  
> -static void egpio_handler(unsigned int irq, struct irq_desc *desc)
> +static void egpio_handler(struct irq_desc *desc)
>  {
>  	struct egpio_info *ei = irq_desc_get_handler_data(desc);
>  	int irqpin;
> diff --git a/drivers/mfd/jz4740-adc.c b/drivers/mfd/jz4740-adc.c
> index b31c54e4ecb2..ec1cd2297ea4 100644
> --- a/drivers/mfd/jz4740-adc.c
> +++ b/drivers/mfd/jz4740-adc.c
> @@ -65,7 +65,7 @@ struct jz4740_adc {
>  	spinlock_t lock;
>  };
>  
> -static void jz4740_adc_irq_demux(unsigned int irq, struct irq_desc *desc)
> +static void jz4740_adc_irq_demux(struct irq_desc *desc)
>  {
>  	struct irq_chip_generic *gc = irq_desc_get_handler_data(desc);
>  	uint8_t status;
> diff --git a/drivers/mfd/pm8921-core.c b/drivers/mfd/pm8921-core.c
> index 5a92646a2ccb..87dd27e49a8b 100644
> --- a/drivers/mfd/pm8921-core.c
> +++ b/drivers/mfd/pm8921-core.c
> @@ -156,7 +156,7 @@ static int pm8xxx_irq_master_handler(struct pm_irq_chip *chip, int master)
>  	return ret;
>  }
>  
> -static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void pm8xxx_irq_handler(struct irq_desc *desc)
>  {
>  	struct pm_irq_chip *chip = irq_desc_get_handler_data(desc);
>  	struct irq_chip *irq_chip = irq_desc_get_chip(desc);
> diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c
> index b752ca2be549..55ade59303b1 100644
> --- a/drivers/mfd/t7l66xb.c
> +++ b/drivers/mfd/t7l66xb.c
> @@ -185,7 +185,7 @@ static struct mfd_cell t7l66xb_cells[] = {
>  /*--------------------------------------------------------------------------*/
>  
>  /* Handle the T7L66XB interrupt mux */
> -static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc)
> +static void t7l66xb_irq(struct irq_desc *desc)
>  {
>  	struct t7l66xb *t7l66xb = irq_desc_get_handler_data(desc);
>  	unsigned int isr;
> diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c
> index d21253a51cff..e22722cd667c 100644
> --- a/drivers/mfd/tc6393xb.c
> +++ b/drivers/mfd/tc6393xb.c
> @@ -523,7 +523,7 @@ static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base)
>  /*--------------------------------------------------------------------------*/
>  
>  static void
> -tc6393xb_irq(unsigned int irq, struct irq_desc *desc)
> +tc6393xb_irq(struct irq_desc *desc)
>  {
>  	struct tc6393xb *tc6393xb = irq_desc_get_handler_data(desc);
>  	unsigned int isr;
> diff --git a/drivers/mfd/ucb1x00-core.c b/drivers/mfd/ucb1x00-core.c
> index 58ea9fdd3a15..2f8f922a34de 100644
> --- a/drivers/mfd/ucb1x00-core.c
> +++ b/drivers/mfd/ucb1x00-core.c
> @@ -282,7 +282,7 @@ void ucb1x00_adc_disable(struct ucb1x00 *ucb)
>   * SIBCLK to talk to the chip.  We leave the clock running until
>   * we have finished processing all interrupts from the chip.
>   */
> -static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc)
> +static void ucb1x00_irq(struct irq_desc *desc)
>  {
>  	struct ucb1x00 *ucb = irq_desc_get_handler_data(desc);
>  	unsigned int isr, i;
> @@ -292,7 +292,7 @@ static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc)
>  	ucb1x00_reg_write(ucb, UCB_IE_CLEAR, isr);
>  	ucb1x00_reg_write(ucb, UCB_IE_CLEAR, 0);
>  
> -	for (i = 0; i < 16 && isr; i++, isr >>= 1, irq++)
> +	for (i = 0; i < 16 && isr; i++, isr >>= 1)
>  		if (isr & 1)
>  			generic_handle_irq(ucb->irq_base + i);
>  	ucb1x00_disable(ucb);

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 24/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 10:43     ` Lee Jones
  0 siblings, 0 replies; 120+ messages in thread
From: Lee Jones @ 2015-05-20 10:43 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Samuel Ortiz, Kumar Gala,
	Andy Gross, David Brown, Konrad Rzeszutek Wilk, Tony Luck, x86,
	linux-kernel, linux-pci, linux-acpi, linux-arm-msm, linux-soc

On Wed, 20 May 2015, Jiang Liu wrote:

> Now most IRQ flow handlers make no use of the first parameter 'irq'.
> And for those who do make use of 'irq', we could easily get the irq
> number through irq_desc->irq_data->irq. So kill the first parameter
> 'irq' of irq_flow_handler_t.
> 
> To ease review, I have split the changes into several parts, though
> they should be merge as one to support bisecting.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  drivers/mfd/asic3.c        |    2 +-
>  drivers/mfd/ezx-pcap.c     |    2 +-
>  drivers/mfd/htc-egpio.c    |    2 +-
>  drivers/mfd/jz4740-adc.c   |    2 +-
>  drivers/mfd/pm8921-core.c  |    2 +-
>  drivers/mfd/t7l66xb.c      |    2 +-
>  drivers/mfd/tc6393xb.c     |    2 +-
>  drivers/mfd/ucb1x00-core.c |    4 ++--
>  8 files changed, 9 insertions(+), 9 deletions(-)

So long as you've build tested each of these files:

Acked-by: Lee Jones <lee.jones@linaro.org>

> diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c
> index 977bd3a3eed0..6bf17842a3e4 100644
> --- a/drivers/mfd/asic3.c
> +++ b/drivers/mfd/asic3.c
> @@ -138,7 +138,7 @@ static void asic3_irq_flip_edge(struct asic3 *asic,
>  	spin_unlock_irqrestore(&asic->lock, flags);
>  }
>  
> -static void asic3_irq_demux(unsigned int irq, struct irq_desc *desc)
> +static void asic3_irq_demux(struct irq_desc *desc)
>  {
>  	struct asic3 *asic = irq_desc_get_handler_data(desc);
>  	struct irq_data *data = irq_desc_get_irq_data(desc);
> diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
> index e5f4ffaa5414..ab83124d75f7 100644
> --- a/drivers/mfd/ezx-pcap.c
> +++ b/drivers/mfd/ezx-pcap.c
> @@ -205,7 +205,7 @@ static void pcap_isr_work(struct work_struct *work)
>  	} while (gpio_get_value(pdata->gpio));
>  }
>  
> -static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void pcap_irq_handler(struct irq_desc *desc)
>  {
>  	struct pcap_chip *pcap = irq_desc_get_handler_data(desc);
>  
> diff --git a/drivers/mfd/htc-egpio.c b/drivers/mfd/htc-egpio.c
> index 49f39feca784..8a3264e35403 100644
> --- a/drivers/mfd/htc-egpio.c
> +++ b/drivers/mfd/htc-egpio.c
> @@ -98,7 +98,7 @@ static struct irq_chip egpio_muxed_chip = {
>  	.irq_unmask	= egpio_unmask,
>  };
>  
> -static void egpio_handler(unsigned int irq, struct irq_desc *desc)
> +static void egpio_handler(struct irq_desc *desc)
>  {
>  	struct egpio_info *ei = irq_desc_get_handler_data(desc);
>  	int irqpin;
> diff --git a/drivers/mfd/jz4740-adc.c b/drivers/mfd/jz4740-adc.c
> index b31c54e4ecb2..ec1cd2297ea4 100644
> --- a/drivers/mfd/jz4740-adc.c
> +++ b/drivers/mfd/jz4740-adc.c
> @@ -65,7 +65,7 @@ struct jz4740_adc {
>  	spinlock_t lock;
>  };
>  
> -static void jz4740_adc_irq_demux(unsigned int irq, struct irq_desc *desc)
> +static void jz4740_adc_irq_demux(struct irq_desc *desc)
>  {
>  	struct irq_chip_generic *gc = irq_desc_get_handler_data(desc);
>  	uint8_t status;
> diff --git a/drivers/mfd/pm8921-core.c b/drivers/mfd/pm8921-core.c
> index 5a92646a2ccb..87dd27e49a8b 100644
> --- a/drivers/mfd/pm8921-core.c
> +++ b/drivers/mfd/pm8921-core.c
> @@ -156,7 +156,7 @@ static int pm8xxx_irq_master_handler(struct pm_irq_chip *chip, int master)
>  	return ret;
>  }
>  
> -static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void pm8xxx_irq_handler(struct irq_desc *desc)
>  {
>  	struct pm_irq_chip *chip = irq_desc_get_handler_data(desc);
>  	struct irq_chip *irq_chip = irq_desc_get_chip(desc);
> diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c
> index b752ca2be549..55ade59303b1 100644
> --- a/drivers/mfd/t7l66xb.c
> +++ b/drivers/mfd/t7l66xb.c
> @@ -185,7 +185,7 @@ static struct mfd_cell t7l66xb_cells[] = {
>  /*--------------------------------------------------------------------------*/
>  
>  /* Handle the T7L66XB interrupt mux */
> -static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc)
> +static void t7l66xb_irq(struct irq_desc *desc)
>  {
>  	struct t7l66xb *t7l66xb = irq_desc_get_handler_data(desc);
>  	unsigned int isr;
> diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c
> index d21253a51cff..e22722cd667c 100644
> --- a/drivers/mfd/tc6393xb.c
> +++ b/drivers/mfd/tc6393xb.c
> @@ -523,7 +523,7 @@ static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base)
>  /*--------------------------------------------------------------------------*/
>  
>  static void
> -tc6393xb_irq(unsigned int irq, struct irq_desc *desc)
> +tc6393xb_irq(struct irq_desc *desc)
>  {
>  	struct tc6393xb *tc6393xb = irq_desc_get_handler_data(desc);
>  	unsigned int isr;
> diff --git a/drivers/mfd/ucb1x00-core.c b/drivers/mfd/ucb1x00-core.c
> index 58ea9fdd3a15..2f8f922a34de 100644
> --- a/drivers/mfd/ucb1x00-core.c
> +++ b/drivers/mfd/ucb1x00-core.c
> @@ -282,7 +282,7 @@ void ucb1x00_adc_disable(struct ucb1x00 *ucb)
>   * SIBCLK to talk to the chip.  We leave the clock running until
>   * we have finished processing all interrupts from the chip.
>   */
> -static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc)
> +static void ucb1x00_irq(struct irq_desc *desc)
>  {
>  	struct ucb1x00 *ucb = irq_desc_get_handler_data(desc);
>  	unsigned int isr, i;
> @@ -292,7 +292,7 @@ static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc)
>  	ucb1x00_reg_write(ucb, UCB_IE_CLEAR, isr);
>  	ucb1x00_reg_write(ucb, UCB_IE_CLEAR, 0);
>  
> -	for (i = 0; i < 16 && isr; i++, isr >>= 1, irq++)
> +	for (i = 0; i < 16 && isr; i++, isr >>= 1)
>  		if (isr & 1)
>  			generic_handle_irq(ucb->irq_base + i);
>  	ucb1x00_disable(ucb);

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 08/25] mfd: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59 ` [RFC v1 08/25] mfd: " Jiang Liu
@ 2015-05-20 10:44     ` Lee Jones
  0 siblings, 0 replies; 120+ messages in thread
From: Lee Jones @ 2015-05-20 10:44 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Samuel Ortiz, Tony Lindgren,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-omap

On Wed, 20 May 2015, Jiang Liu wrote:

> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.
> 
> Do the same thing to avoid pattern "irq_get_chip_data(data->irq)".
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  drivers/mfd/ezx-pcap.c    |    2 +-
>  drivers/mfd/max8997-irq.c |    8 ++++----
>  drivers/mfd/mt6397-core.c |    8 ++++----
>  drivers/mfd/t7l66xb.c     |    2 +-
>  drivers/mfd/tc6393xb.c    |    2 +-
>  drivers/mfd/twl6030-irq.c |    2 +-
>  6 files changed, 12 insertions(+), 12 deletions(-)

Again, so long as this has been properly tested:

Acked-by: Lee Jones <lee.jones@linaro.org>

> diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
> index 5991faddd3c6..e5f4ffaa5414 100644
> --- a/drivers/mfd/ezx-pcap.c
> +++ b/drivers/mfd/ezx-pcap.c
> @@ -207,7 +207,7 @@ static void pcap_isr_work(struct work_struct *work)
>  
>  static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
> -	struct pcap_chip *pcap = irq_get_handler_data(irq);
> +	struct pcap_chip *pcap = irq_desc_get_handler_data(desc);
>  
>  	desc->irq_data.chip->irq_ack(&desc->irq_data);
>  	queue_work(pcap->workqueue, &pcap->isr_work);
> diff --git a/drivers/mfd/max8997-irq.c b/drivers/mfd/max8997-irq.c
> index 43fa61413e93..381738b477f8 100644
> --- a/drivers/mfd/max8997-irq.c
> +++ b/drivers/mfd/max8997-irq.c
> @@ -113,14 +113,14 @@ static const struct max8997_irq_data max8997_irqs[] = {
>  
>  static void max8997_irq_lock(struct irq_data *data)
>  {
> -	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
> +	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
>  
>  	mutex_lock(&max8997->irqlock);
>  }
>  
>  static void max8997_irq_sync_unlock(struct irq_data *data)
>  {
> -	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
> +	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
>  	int i;
>  
>  	for (i = 0; i < MAX8997_IRQ_GROUP_NR; i++) {
> @@ -148,7 +148,7 @@ irq_to_max8997_irq(struct max8997_dev *max8997, int irq)
>  
>  static void max8997_irq_mask(struct irq_data *data)
>  {
> -	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
> +	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
>  	const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997,
>  								data->irq);
>  
> @@ -157,7 +157,7 @@ static void max8997_irq_mask(struct irq_data *data)
>  
>  static void max8997_irq_unmask(struct irq_data *data)
>  {
> -	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
> +	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
>  	const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997,
>  								data->irq);
>  
> diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
> index 09bc7804952a..dab325b9d0df 100644
> --- a/drivers/mfd/mt6397-core.c
> +++ b/drivers/mfd/mt6397-core.c
> @@ -39,14 +39,14 @@ static const struct mfd_cell mt6397_devs[] = {
>  
>  static void mt6397_irq_lock(struct irq_data *data)
>  {
> -	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
> +	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
>  
>  	mutex_lock(&mt6397->irqlock);
>  }
>  
>  static void mt6397_irq_sync_unlock(struct irq_data *data)
>  {
> -	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
> +	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
>  
>  	regmap_write(mt6397->regmap, MT6397_INT_CON0, mt6397->irq_masks_cur[0]);
>  	regmap_write(mt6397->regmap, MT6397_INT_CON1, mt6397->irq_masks_cur[1]);
> @@ -56,7 +56,7 @@ static void mt6397_irq_sync_unlock(struct irq_data *data)
>  
>  static void mt6397_irq_disable(struct irq_data *data)
>  {
> -	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
> +	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
>  	int shift = data->hwirq & 0xf;
>  	int reg = data->hwirq >> 4;
>  
> @@ -65,7 +65,7 @@ static void mt6397_irq_disable(struct irq_data *data)
>  
>  static void mt6397_irq_enable(struct irq_data *data)
>  {
> -	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
> +	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
>  	int shift = data->hwirq & 0xf;
>  	int reg = data->hwirq >> 4;
>  
> diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c
> index c09fb5dccd50..b752ca2be549 100644
> --- a/drivers/mfd/t7l66xb.c
> +++ b/drivers/mfd/t7l66xb.c
> @@ -187,7 +187,7 @@ static struct mfd_cell t7l66xb_cells[] = {
>  /* Handle the T7L66XB interrupt mux */
>  static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc)
>  {
> -	struct t7l66xb *t7l66xb = irq_get_handler_data(irq);
> +	struct t7l66xb *t7l66xb = irq_desc_get_handler_data(desc);
>  	unsigned int isr;
>  	unsigned int i, irq_base;
>  
> diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c
> index 63458b39a97d..d21253a51cff 100644
> --- a/drivers/mfd/tc6393xb.c
> +++ b/drivers/mfd/tc6393xb.c
> @@ -525,7 +525,7 @@ static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base)
>  static void
>  tc6393xb_irq(unsigned int irq, struct irq_desc *desc)
>  {
> -	struct tc6393xb *tc6393xb = irq_get_handler_data(irq);
> +	struct tc6393xb *tc6393xb = irq_desc_get_handler_data(desc);
>  	unsigned int isr;
>  	unsigned int i, irq_base;
>  
> diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c
> index 2807e1a95663..5b8cd5cd42cf 100644
> --- a/drivers/mfd/twl6030-irq.c
> +++ b/drivers/mfd/twl6030-irq.c
> @@ -231,7 +231,7 @@ static irqreturn_t twl6030_irq_thread(int irq, void *data)
>  
>  static int twl6030_irq_set_wake(struct irq_data *d, unsigned int on)
>  {
> -	struct twl6030_irq *pdata = irq_get_chip_data(d->irq);
> +	struct twl6030_irq *pdata = irq_data_get_irq_chip_data(d);
>  
>  	if (on)
>  		atomic_inc(&pdata->wakeirqs);

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 08/25] mfd: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-05-20 10:44     ` Lee Jones
  0 siblings, 0 replies; 120+ messages in thread
From: Lee Jones @ 2015-05-20 10:44 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Samuel Ortiz, Tony Lindgren,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-omap

On Wed, 20 May 2015, Jiang Liu wrote:

> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.
> 
> Do the same thing to avoid pattern "irq_get_chip_data(data->irq)".
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  drivers/mfd/ezx-pcap.c    |    2 +-
>  drivers/mfd/max8997-irq.c |    8 ++++----
>  drivers/mfd/mt6397-core.c |    8 ++++----
>  drivers/mfd/t7l66xb.c     |    2 +-
>  drivers/mfd/tc6393xb.c    |    2 +-
>  drivers/mfd/twl6030-irq.c |    2 +-
>  6 files changed, 12 insertions(+), 12 deletions(-)

Again, so long as this has been properly tested:

Acked-by: Lee Jones <lee.jones@linaro.org>

> diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
> index 5991faddd3c6..e5f4ffaa5414 100644
> --- a/drivers/mfd/ezx-pcap.c
> +++ b/drivers/mfd/ezx-pcap.c
> @@ -207,7 +207,7 @@ static void pcap_isr_work(struct work_struct *work)
>  
>  static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
> -	struct pcap_chip *pcap = irq_get_handler_data(irq);
> +	struct pcap_chip *pcap = irq_desc_get_handler_data(desc);
>  
>  	desc->irq_data.chip->irq_ack(&desc->irq_data);
>  	queue_work(pcap->workqueue, &pcap->isr_work);
> diff --git a/drivers/mfd/max8997-irq.c b/drivers/mfd/max8997-irq.c
> index 43fa61413e93..381738b477f8 100644
> --- a/drivers/mfd/max8997-irq.c
> +++ b/drivers/mfd/max8997-irq.c
> @@ -113,14 +113,14 @@ static const struct max8997_irq_data max8997_irqs[] = {
>  
>  static void max8997_irq_lock(struct irq_data *data)
>  {
> -	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
> +	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
>  
>  	mutex_lock(&max8997->irqlock);
>  }
>  
>  static void max8997_irq_sync_unlock(struct irq_data *data)
>  {
> -	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
> +	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
>  	int i;
>  
>  	for (i = 0; i < MAX8997_IRQ_GROUP_NR; i++) {
> @@ -148,7 +148,7 @@ irq_to_max8997_irq(struct max8997_dev *max8997, int irq)
>  
>  static void max8997_irq_mask(struct irq_data *data)
>  {
> -	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
> +	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
>  	const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997,
>  								data->irq);
>  
> @@ -157,7 +157,7 @@ static void max8997_irq_mask(struct irq_data *data)
>  
>  static void max8997_irq_unmask(struct irq_data *data)
>  {
> -	struct max8997_dev *max8997 = irq_get_chip_data(data->irq);
> +	struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data);
>  	const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997,
>  								data->irq);
>  
> diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
> index 09bc7804952a..dab325b9d0df 100644
> --- a/drivers/mfd/mt6397-core.c
> +++ b/drivers/mfd/mt6397-core.c
> @@ -39,14 +39,14 @@ static const struct mfd_cell mt6397_devs[] = {
>  
>  static void mt6397_irq_lock(struct irq_data *data)
>  {
> -	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
> +	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
>  
>  	mutex_lock(&mt6397->irqlock);
>  }
>  
>  static void mt6397_irq_sync_unlock(struct irq_data *data)
>  {
> -	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
> +	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
>  
>  	regmap_write(mt6397->regmap, MT6397_INT_CON0, mt6397->irq_masks_cur[0]);
>  	regmap_write(mt6397->regmap, MT6397_INT_CON1, mt6397->irq_masks_cur[1]);
> @@ -56,7 +56,7 @@ static void mt6397_irq_sync_unlock(struct irq_data *data)
>  
>  static void mt6397_irq_disable(struct irq_data *data)
>  {
> -	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
> +	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
>  	int shift = data->hwirq & 0xf;
>  	int reg = data->hwirq >> 4;
>  
> @@ -65,7 +65,7 @@ static void mt6397_irq_disable(struct irq_data *data)
>  
>  static void mt6397_irq_enable(struct irq_data *data)
>  {
> -	struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq);
> +	struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data);
>  	int shift = data->hwirq & 0xf;
>  	int reg = data->hwirq >> 4;
>  
> diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c
> index c09fb5dccd50..b752ca2be549 100644
> --- a/drivers/mfd/t7l66xb.c
> +++ b/drivers/mfd/t7l66xb.c
> @@ -187,7 +187,7 @@ static struct mfd_cell t7l66xb_cells[] = {
>  /* Handle the T7L66XB interrupt mux */
>  static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc)
>  {
> -	struct t7l66xb *t7l66xb = irq_get_handler_data(irq);
> +	struct t7l66xb *t7l66xb = irq_desc_get_handler_data(desc);
>  	unsigned int isr;
>  	unsigned int i, irq_base;
>  
> diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c
> index 63458b39a97d..d21253a51cff 100644
> --- a/drivers/mfd/tc6393xb.c
> +++ b/drivers/mfd/tc6393xb.c
> @@ -525,7 +525,7 @@ static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base)
>  static void
>  tc6393xb_irq(unsigned int irq, struct irq_desc *desc)
>  {
> -	struct tc6393xb *tc6393xb = irq_get_handler_data(irq);
> +	struct tc6393xb *tc6393xb = irq_desc_get_handler_data(desc);
>  	unsigned int isr;
>  	unsigned int i, irq_base;
>  
> diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c
> index 2807e1a95663..5b8cd5cd42cf 100644
> --- a/drivers/mfd/twl6030-irq.c
> +++ b/drivers/mfd/twl6030-irq.c
> @@ -231,7 +231,7 @@ static irqreturn_t twl6030_irq_thread(int irq, void *data)
>  
>  static int twl6030_irq_set_wake(struct irq_data *d, unsigned int on)
>  {
> -	struct twl6030_irq *pdata = irq_get_chip_data(d->irq);
> +	struct twl6030_irq *pdata = irq_data_get_irq_chip_data(d);
>  
>  	if (on)
>  		atomic_inc(&pdata->wakeirqs);

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 10/25] sh: intc: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59   ` Jiang Liu
@ 2015-05-20 15:12     ` Thomas Gleixner
  -1 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:12 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Simon Horman, Magnus Damm,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-sh

On Wed, 20 May 2015, Jiang Liu wrote:

> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.
> 
> Also replace generic_handle_irq with generic_handle_irq_desc() to avoid
> looking up irq_desc again.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  drivers/sh/intc/core.c |    2 +-
>  drivers/sh/intc/virq.c |   14 ++++++++------
>  2 files changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
> index 81f22980b2de..e4ca964ca840 100644
> --- a/drivers/sh/intc/core.c
> +++ b/drivers/sh/intc/core.c
> @@ -67,7 +67,7 @@ void intc_set_prio_level(unsigned int irq, unsigned int level)
>  
>  static void intc_redirect_irq(unsigned int irq, struct irq_desc *desc)
>  {
> -	generic_handle_irq((unsigned int)irq_get_handler_data(irq));
> +	generic_handle_irq_desc(irq, desc);

This looks wrong. It's a redirector of irq to some other irq.

     	redir_irq = (unsigned int)irq_get_handler_data(irq);

which should be:

        redir_irq = (unsigned int)irq_desc_get_irq_handler_data(desc);

And redir_irq is certainly not the same as irq. So this wants a
conversion to irq_desc_get_irq_handler_data() first. That makes the
irq argument unused.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 10/25] sh: intc: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-05-20 15:12     ` Thomas Gleixner
  0 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:12 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Simon Horman, Magnus Damm,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-sh

On Wed, 20 May 2015, Jiang Liu wrote:

> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.
> 
> Also replace generic_handle_irq with generic_handle_irq_desc() to avoid
> looking up irq_desc again.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  drivers/sh/intc/core.c |    2 +-
>  drivers/sh/intc/virq.c |   14 ++++++++------
>  2 files changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
> index 81f22980b2de..e4ca964ca840 100644
> --- a/drivers/sh/intc/core.c
> +++ b/drivers/sh/intc/core.c
> @@ -67,7 +67,7 @@ void intc_set_prio_level(unsigned int irq, unsigned int level)
>  
>  static void intc_redirect_irq(unsigned int irq, struct irq_desc *desc)
>  {
> -	generic_handle_irq((unsigned int)irq_get_handler_data(irq));
> +	generic_handle_irq_desc(irq, desc);

This looks wrong. It's a redirector of irq to some other irq.

     	redir_irq = (unsigned int)irq_get_handler_data(irq);

which should be:

        redir_irq = (unsigned int)irq_desc_get_irq_handler_data(desc);

And redir_irq is certainly not the same as irq. So this wants a
conversion to irq_desc_get_irq_handler_data() first. That makes the
irq argument unused.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 13/25] genirq: Kill the parameter 'irq' of kstat_incr_irqs_this_cpu()
  2015-05-20 10:00 ` [RFC v1 13/25] genirq: Kill the parameter 'irq' of kstat_incr_irqs_this_cpu() Jiang Liu
@ 2015-05-20 15:23   ` Thomas Gleixner
  0 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:23 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Konrad Rzeszutek Wilk, Tony Luck, x86,
	linux-kernel, linux-pci, linux-acpi

On Wed, 20 May 2015, Jiang Liu wrote:
> diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
> index d82a77d39aeb..ab675f282291 100644
> --- a/kernel/irq/internals.h
> +++ b/kernel/irq/internals.h
> @@ -193,7 +193,7 @@ static inline bool irqd_has_set(struct irq_data *d, unsigned int mask)
>  	return __irqd_to_state(d) & mask;
>  }
>  
> -static inline void kstat_incr_irqs_this_cpu(unsigned int irq, struct irq_desc *desc)
> +static inline void kstat_incr_irqs_this_cpu(struct irq_desc *desc)
>  {
>  	__this_cpu_inc(*desc->kstat_irqs);
>  	__this_cpu_inc(kstat.irqs_sum);

That hunk does not apply. Neither on mainline nor on tip/x86/apic

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 10/25] sh: intc: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20 15:12     ` Thomas Gleixner
@ 2015-05-20 15:24       ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 15:24 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Simon Horman, Magnus Damm,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-sh

On 2015/5/20 23:12, Thomas Gleixner wrote:
> On Wed, 20 May 2015, Jiang Liu wrote:
> 
>> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
>> already have a pointer to corresponding irq_desc.
>>
>> Also replace generic_handle_irq with generic_handle_irq_desc() to avoid
>> looking up irq_desc again.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
>> ---
>>  drivers/sh/intc/core.c |    2 +-
>>  drivers/sh/intc/virq.c |   14 ++++++++------
>>  2 files changed, 9 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
>> index 81f22980b2de..e4ca964ca840 100644
>> --- a/drivers/sh/intc/core.c
>> +++ b/drivers/sh/intc/core.c
>> @@ -67,7 +67,7 @@ void intc_set_prio_level(unsigned int irq, unsigned int level)
>>  
>>  static void intc_redirect_irq(unsigned int irq, struct irq_desc *desc)
>>  {
>> -	generic_handle_irq((unsigned int)irq_get_handler_data(irq));
>> +	generic_handle_irq_desc(irq, desc);
> 
> This looks wrong. It's a redirector of irq to some other irq.
> 
>      	redir_irq = (unsigned int)irq_get_handler_data(irq);
> 
> which should be:
> 
>         redir_irq = (unsigned int)irq_desc_get_irq_handler_data(desc);
> 
> And redir_irq is certainly not the same as irq. So this wants a
> conversion to irq_desc_get_irq_handler_data() first. That makes the
> irq argument unused.

Good catch, will fix it in next version.

> 
> Thanks,
> 
> 	tglx
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 10/25] sh: intc: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-05-20 15:24       ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 15:24 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Simon Horman, Magnus Damm,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, linux-sh

On 2015/5/20 23:12, Thomas Gleixner wrote:
> On Wed, 20 May 2015, Jiang Liu wrote:
> 
>> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
>> already have a pointer to corresponding irq_desc.
>>
>> Also replace generic_handle_irq with generic_handle_irq_desc() to avoid
>> looking up irq_desc again.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
>> ---
>>  drivers/sh/intc/core.c |    2 +-
>>  drivers/sh/intc/virq.c |   14 ++++++++------
>>  2 files changed, 9 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
>> index 81f22980b2de..e4ca964ca840 100644
>> --- a/drivers/sh/intc/core.c
>> +++ b/drivers/sh/intc/core.c
>> @@ -67,7 +67,7 @@ void intc_set_prio_level(unsigned int irq, unsigned int level)
>>  
>>  static void intc_redirect_irq(unsigned int irq, struct irq_desc *desc)
>>  {
>> -	generic_handle_irq((unsigned int)irq_get_handler_data(irq));
>> +	generic_handle_irq_desc(irq, desc);
> 
> This looks wrong. It's a redirector of irq to some other irq.
> 
>      	redir_irq = (unsigned int)irq_get_handler_data(irq);
> 
> which should be:
> 
>         redir_irq = (unsigned int)irq_desc_get_irq_handler_data(desc);
> 
> And redir_irq is certainly not the same as irq. So this wants a
> conversion to irq_desc_get_irq_handler_data() first. That makes the
> irq argument unused.

Good catch, will fix it in next version.

> 
> Thanks,
> 
> 	tglx
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 10:00 ` [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t Jiang Liu
@ 2015-05-20 15:25   ` Thomas Gleixner
  2015-05-20 15:28     ` Jiang Liu
  0 siblings, 1 reply; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:25 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86,
	linux-kernel, linux-pci, linux-acpi

On Wed, 20 May 2015, Jiang Liu wrote:
> --- a/include/linux/irqdesc.h
> +++ b/include/linux/irqdesc.h
> @@ -99,6 +99,11 @@ static inline struct irq_desc *irq_data_to_desc(struct irq_data *data)
>  	return container_of(data->common, struct irq_desc, irq_common_data);
>  }
>  
> +static inline unsigned int irq_desc_get_irq(struct irq_desc *desc)
> +{
> +	return desc->irq_data.irq;
> +}
> +

Does not apply either.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 10:00   ` Jiang Liu
  (?)
@ 2015-05-20 15:28     ` Thomas Gleixner
  -1 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:28 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Russell King, Jason Cooper, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Hans Ulli Kroll,
	Shawn Guo, Sascha Hauer, Roland Stigge, Tony Lindgren,
	Rajendra Nayak, Paul Walmsley, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik

On Wed, 20 May 2015, Jiang Liu wrote:
> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
> +static void locomo_handler(struct irq_desc *desc)
>  {
>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
> +	unsigned int irq;
>  	int req, i;

That leaves irq unitialized ....

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 15:28     ` Thomas Gleixner
  0 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:28 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Russell King, Jason Cooper, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Hans Ulli Kroll,
	Shawn Guo, Sascha Hauer, Roland Stigge, Tony Lindgren,
	Rajendra Nayak, Paul Walmsley, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik, Kukjin Kim, Krzysztof Kozlowski, Arnd Bergmann,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, Russell King, linux-arm-kernel, linux-omap,
	linux-samsung-soc

On Wed, 20 May 2015, Jiang Liu wrote:
> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
> +static void locomo_handler(struct irq_desc *desc)
>  {
>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
> +	unsigned int irq;
>  	int req, i;

That leaves irq unitialized ....

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 15:28     ` Thomas Gleixner
  0 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:28 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, 20 May 2015, Jiang Liu wrote:
> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
> +static void locomo_handler(struct irq_desc *desc)
>  {
>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
> +	unsigned int irq;
>  	int req, i;

That leaves irq unitialized ....

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 15:25   ` Thomas Gleixner
@ 2015-05-20 15:28     ` Jiang Liu
  2015-05-20 18:35       ` Thomas Gleixner
  2015-05-20 18:36       ` Thomas Gleixner
  0 siblings, 2 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 15:28 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86,
	linux-kernel, linux-pci, linux-acpi

On 2015/5/20 23:25, Thomas Gleixner wrote:
> On Wed, 20 May 2015, Jiang Liu wrote:
>> --- a/include/linux/irqdesc.h
>> +++ b/include/linux/irqdesc.h
>> @@ -99,6 +99,11 @@ static inline struct irq_desc *irq_data_to_desc(struct irq_data *data)
>>  	return container_of(data->common, struct irq_desc, irq_common_data);
>>  }
>>  
>> +static inline unsigned int irq_desc_get_irq(struct irq_desc *desc)
>> +{
>> +	return desc->irq_data.irq;
>> +}
>> +
> 
> Does not apply either.
Hi Thomas,
	Will check the base again.
	Please do not apply patch after [14/25]. There are here to
ask for comments, there are still building issues with patch after
[14/25]. Just help to comment whether it's on the right direction.
If so, I will send another version for formal review.
Thanks!
Gerry

> 
> Thanks,
> 
> 	tglx
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 15:28     ` Thomas Gleixner
  (?)
@ 2015-05-20 15:32       ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 15:32 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Russell King, Jason Cooper, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Hans Ulli Kroll,
	Shawn Guo, Sascha Hauer, Roland Stigge, Tony Lindgren,
	Rajendra Nayak, Paul Walmsley, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik

On 2015/5/20 23:28, Thomas Gleixner wrote:
> On Wed, 20 May 2015, Jiang Liu wrote:
>> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
>> +static void locomo_handler(struct irq_desc *desc)
>>  {
>>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
>> +	unsigned int irq;
>>  	int req, i;
> 
> That leaves irq unitialized ....
That should be OK, 'irq' here is just a local variable.
Actually it may be changed as:
        if (req) {
                /* generate the next interrupt(s) */
-                irq = lchip->irq_base;
+                unsigned int irq = lchip->irq_base;
                for (i = 0; i <= 3; i++, irq++) {
                        if (req & (0x0100 << i)) {
                                generic_handle_irq(irq);
                        }

                }
        }

> 
> Thanks,
> 
> 	tglx
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 15:32       ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 15:32 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Russell King, Jason Cooper, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Hans Ulli Kroll,
	Shawn Guo, Sascha Hauer, Roland Stigge, Tony Lindgren,
	Rajendra Nayak, Paul Walmsley, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik, Kukjin Kim, Krzysztof Kozlowski, Arnd Bergmann,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, Russell King, linux-arm-kernel, linux-omap,
	linux-samsung-soc

On 2015/5/20 23:28, Thomas Gleixner wrote:
> On Wed, 20 May 2015, Jiang Liu wrote:
>> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
>> +static void locomo_handler(struct irq_desc *desc)
>>  {
>>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
>> +	unsigned int irq;
>>  	int req, i;
> 
> That leaves irq unitialized ....
That should be OK, 'irq' here is just a local variable.
Actually it may be changed as:
        if (req) {
                /* generate the next interrupt(s) */
-                irq = lchip->irq_base;
+                unsigned int irq = lchip->irq_base;
                for (i = 0; i <= 3; i++, irq++) {
                        if (req & (0x0100 << i)) {
                                generic_handle_irq(irq);
                        }

                }
        }

> 
> Thanks,
> 
> 	tglx
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 15:32       ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 15:32 UTC (permalink / raw)
  To: linux-arm-kernel

On 2015/5/20 23:28, Thomas Gleixner wrote:
> On Wed, 20 May 2015, Jiang Liu wrote:
>> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
>> +static void locomo_handler(struct irq_desc *desc)
>>  {
>>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
>> +	unsigned int irq;
>>  	int req, i;
> 
> That leaves irq unitialized ....
That should be OK, 'irq' here is just a local variable.
Actually it may be changed as:
        if (req) {
                /* generate the next interrupt(s) */
-                irq = lchip->irq_base;
+                unsigned int irq = lchip->irq_base;
                for (i = 0; i <= 3; i++, irq++) {
                        if (req & (0x0100 << i)) {
                                generic_handle_irq(irq);
                        }

                }
        }

> 
> Thanks,
> 
> 	tglx
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 10:00   ` Jiang Liu
  (?)
@ 2015-05-20 15:38     ` Hans Ulli Kroll
  -1 siblings, 0 replies; 120+ messages in thread
From: Hans Ulli Kroll @ 2015-05-20 15:38 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Russell King, Jason Cooper,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Hans Ulli Kroll, Shawn Guo, Sascha Hauer, Roland Stigge,
	Tony Lindgren, Rajendra Nayak, Paul Walmsley, Daniel Mack,
	Haojian Zhuang



On Wed, 20 May 2015, Jiang Liu wrote:

> Now most IRQ flow handlers make no use of the first parameter 'irq'.
> And for those who do make use of 'irq', we could easily get the irq
> number through irq_desc->irq_data->irq. So kill the first parameter
> 'irq' of irq_flow_handler_t.
> 
> To ease review, I have split the changes into several parts, though
> they should be merge as one to support bisecting.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  arch/arm/common/it8152.c               |    2 +-
>  arch/arm/common/locomo.c               |    3 ++-
>  arch/arm/common/sa1111.c               |    4 ++--
>  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             |    2 +-
>  24 files changed, 39 insertions(+), 32 deletions(-)
> 
> diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c
> index 5114b68e99d5..aaa206181f92 100644
> --- a/arch/arm/common/it8152.c
> +++ b/arch/arm/common/it8152.c
> @@ -95,7 +95,7 @@ void it8152_init_irq(void)
>  	}
>  }
>  
> -void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
> +void it8152_irq_demux(struct irq_desc *desc)
>  {
>         int bits_pd, bits_lp, bits_ld;
>         int i;
> diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
> index 02af4a07ceca..99d4535d7cc6 100644
> --- a/arch/arm/common/locomo.c
> +++ b/arch/arm/common/locomo.c
> @@ -138,9 +138,10 @@ static struct locomo_dev_info locomo_devices[] = {
>  	},
>  };
>  
> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
> +static void locomo_handler(struct irq_desc *desc)
>  {
>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
> +	unsigned int irq;
>  	int req, i;
>  
>  	/* Acknowledge the parent IRQ */
> diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
> index 0d0844fa54c2..762dfe7081f0 100644
> --- a/arch/arm/common/sa1111.c
> +++ b/arch/arm/common/sa1111.c
> @@ -197,7 +197,7 @@ static struct sa1111_dev_info sa1111_devices[] = {
>   * will call us again if there are more interrupts to process.
>   */
>  static void
> -sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
> +sa1111_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned int stat0, stat1, i;
>  	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
> @@ -213,7 +213,7 @@ sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
>  	sa1111_writel(stat1, mapbase + SA1111_INTSTATCLR1);
>  
>  	if (stat0 == 0 && stat1 == 0) {
> -		do_bad_IRQ(irq, desc);
> +		do_bad_IRQ(desc);
>  		return;
>  	}
>  
> diff --git a/arch/arm/include/asm/hardware/it8152.h b/arch/arm/include/asm/hardware/it8152.h
> index d36a73d7c0e8..076777ff3daa 100644
> --- a/arch/arm/include/asm/hardware/it8152.h
> +++ b/arch/arm/include/asm/hardware/it8152.h
> @@ -106,7 +106,7 @@ extern void __iomem *it8152_base_address;
>  struct pci_dev;
>  struct pci_sys_data;
>  
> -extern void it8152_irq_demux(unsigned int irq, struct irq_desc *desc);
> +extern void it8152_irq_demux(struct irq_desc *desc);
>  extern void it8152_init_irq(void);
>  extern int it8152_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
>  extern int it8152_pci_setup(int nr, struct pci_sys_data *sys);
> diff --git a/arch/arm/include/asm/mach/irq.h b/arch/arm/include/asm/mach/irq.h
> index 2092ee1e1300..4703e00283db 100644
> --- a/arch/arm/include/asm/mach/irq.h
> +++ b/arch/arm/include/asm/mach/irq.h
> @@ -23,10 +23,10 @@ extern int show_fiq_list(struct seq_file *, int);
>  /*
>   * This is for easy migration, but should be changed in the source
>   */
> -#define do_bad_IRQ(irq,desc)				\
> +#define do_bad_IRQ(desc)				\
>  do {							\
>  	raw_spin_lock(&desc->lock);			\
> -	handle_bad_irq(irq, desc);			\
> +	handle_bad_irq(desc);			\
>  	raw_spin_unlock(&desc->lock);			\
>  } while(0)
>  
> diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
> index 4a5a7aedcb76..30140cbdb249 100644
> --- a/arch/arm/mach-dove/irq.c
> +++ b/arch/arm/mach-dove/irq.c
> @@ -69,13 +69,14 @@ static struct irq_chip pmu_irq_chip = {
>  	.irq_ack	= pmu_irq_ack,
>  };
>  
> -static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void pmu_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long cause = readl(PMU_INTERRUPT_CAUSE);
> +	unsigned int irq;
>  
>  	cause &= readl(PMU_INTERRUPT_MASK);
>  	if (cause == 0) {
> -		do_bad_IRQ(irq, desc);
> +		do_bad_IRQ(desc);
>  		return;
>  	}
>  
> diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
> index c3a0abbc9049..f78e46662447 100644
> --- a/arch/arm/mach-footbridge/isa-irq.c
> +++ b/arch/arm/mach-footbridge/isa-irq.c
> @@ -88,12 +88,12 @@ static struct irq_chip isa_hi_chip = {
>  };
>  
>  static void
> -isa_irq_handler(unsigned int irq, struct irq_desc *desc)
> +isa_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
>  
>  	if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) {
> -		do_bad_IRQ(isa_irq, desc);
> +		do_bad_IRQ(desc);
>  		return;
>  	}
>  
> diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c
> index f8cb5710d6ee..713f655bcc74 100644
> --- a/arch/arm/mach-gemini/gpio.c
> +++ b/arch/arm/mach-gemini/gpio.c
> @@ -126,7 +126,7 @@ static int gpio_set_irq_type(struct irq_data *d, unsigned int type)
>  	return 0;
>  }
>  
> -static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void gpio_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned int port = (unsigned int)irq_desc_get_handler_data(desc);
>  	unsigned int gpio_irq_no, irq_stat;
> diff --git a/arch/arm/mach-imx/3ds_debugboard.c b/arch/arm/mach-imx/3ds_debugboard.c
> index 134377352966..d93d3337b579 100644
> --- a/arch/arm/mach-imx/3ds_debugboard.c
> +++ b/arch/arm/mach-imx/3ds_debugboard.c
> @@ -85,7 +85,7 @@ static struct platform_device smsc_lan9217_device = {
>  	.resource = smsc911x_resources,
>  };
>  
> -static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
> +static void mxc_expio_irq_handler(struct irq_desc *desc)
>  {
>  	u32 imr_val;
>  	u32 int_valid;
> diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c
> index d08c37c696f6..07aef418a0e1 100644
> --- a/arch/arm/mach-imx/mach-mx31ads.c
> +++ b/arch/arm/mach-imx/mach-mx31ads.c
> @@ -154,7 +154,7 @@ static inline void mxc_init_imx_uart(void)
>  	imx31_add_imx_uart0(&uart_pdata);
>  }
>  
> -static void mx31ads_expio_irq_handler(u32 irq, struct irq_desc *desc)
> +static void mx31ads_expio_irq_handler(struct irq_desc *desc)
>  {
>  	u32 imr_val;
>  	u32 int_valid;
> diff --git a/arch/arm/mach-iop13xx/msi.c b/arch/arm/mach-iop13xx/msi.c
> index 9f89e76dfbb9..f6235b28578c 100644
> --- a/arch/arm/mach-iop13xx/msi.c
> +++ b/arch/arm/mach-iop13xx/msi.c
> @@ -91,7 +91,7 @@ static void (*write_imipr[])(u32) = {
>  	write_imipr_3,
>  };
>  
> -static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc)
> +static void iop13xx_msi_handler(struct irq_desc *desc)
>  {
>  	int i, j;
>  	unsigned long status;
> diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c
> index 9ecb8f9c4ef5..f361fed99105 100644
> --- a/arch/arm/mach-lpc32xx/irq.c
> +++ b/arch/arm/mach-lpc32xx/irq.c
> @@ -370,7 +370,7 @@ static struct irq_chip lpc32xx_irq_chip = {
>  	.irq_set_wake = lpc32xx_irq_wake
>  };
>  
> -static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
> +static void lpc32xx_sic1_handler(struct irq_desc *desc)
>  {
>  	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC1_BASE));
>  
> @@ -383,7 +383,7 @@ static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
>  	}
>  }
>  
> -static void lpc32xx_sic2_handler(unsigned int irq, struct irq_desc *desc)
> +static void lpc32xx_sic2_handler(struct irq_desc *desc)
>  {
>  	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC2_BASE));
>  
> diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c
> index 3c0e42219200..374bccf5ce24 100644
> --- a/arch/arm/mach-omap1/fpga.c
> +++ b/arch/arm/mach-omap1/fpga.c
> @@ -87,7 +87,7 @@ static void fpga_mask_ack_irq(struct irq_data *d)
>  	fpga_ack_irq(d);
>  }
>  
> -static void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)
> +static void innovator_fpga_IRQ_demux(struct irq_desc *desc)
>  {
>  	u32 stat;
>  	int fpga_irq;
> diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
> index 7add7994dbfc..6cfc1e54d41f 100644
> --- a/arch/arm/mach-omap2/prm_common.c
> +++ b/arch/arm/mach-omap2/prm_common.c
> @@ -102,7 +102,7 @@ static void omap_prcm_events_filter_priority(unsigned long *events,
>   * dispatched accordingly. Clearing of the wakeup events should be
>   * done by the SoC specific individual handlers.
>   */
> -static void omap_prcm_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void omap_prcm_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending[OMAP_PRCM_MAX_NR_PENDING_REG];
>  	unsigned long priority_pending[OMAP_PRCM_MAX_NR_PENDING_REG];
> diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
> index d897292712eb..506365cdd58b 100644
> --- a/arch/arm/mach-pxa/balloon3.c
> +++ b/arch/arm/mach-pxa/balloon3.c
> @@ -496,8 +496,9 @@ static struct irq_chip balloon3_irq_chip = {
>  	.irq_unmask	= balloon3_unmask_irq,
>  };
>  
> -static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void balloon3_irq_handler(struct irq_desc *desc)
>  {
> +	unsigned int irq;
>  	unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
>  					balloon3_irq_enabled;
>  	do {
> diff --git a/arch/arm/mach-pxa/cm-x2xx-pci.c b/arch/arm/mach-pxa/cm-x2xx-pci.c
> index d8f816c24a2f..3221ae15bef7 100644
> --- a/arch/arm/mach-pxa/cm-x2xx-pci.c
> +++ b/arch/arm/mach-pxa/cm-x2xx-pci.c
> @@ -29,12 +29,12 @@
>  void __iomem *it8152_base_address;
>  static int cmx2xx_it8152_irq_gpio;
>  
> -static void cmx2xx_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
> +static void cmx2xx_it8152_irq_demux(struct irq_desc *desc)
>  {
>  	/* clear our parent irq */
>  	desc->irq_data.chip->irq_ack(&desc->irq_data);
>  
> -	it8152_irq_demux(irq, desc);
> +	it8152_irq_demux(desc);
>  }
>  
>  void __cmx2xx_pci_init_irq(int irq_gpio)
> diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
> index eaee2c20b189..cbf00f51808f 100644
> --- a/arch/arm/mach-pxa/lpd270.c
> +++ b/arch/arm/mach-pxa/lpd270.c
> @@ -120,9 +120,10 @@ static struct irq_chip lpd270_irq_chip = {
>  	.irq_unmask	= lpd270_unmask_irq,
>  };
>  
> -static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void lpd270_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = __raw_readw(LPD270_INT_STATUS) & lpd270_irq_enabled;
>  	do {
> diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
> index 2897da2a5df6..0d8331f8536e 100644
> --- a/arch/arm/mach-pxa/pcm990-baseboard.c
> +++ b/arch/arm/mach-pxa/pcm990-baseboard.c
> @@ -287,6 +287,7 @@ static struct irq_chip pcm990_irq_chip = {
>  static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = ~pcm990_cpld_readb(PCM990_CTRL_INTSETCLR);
>  	pending &= pcm990_irq_enabled;
> diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
> index de3b08073fe7..bd52fb914d6a 100644
> --- a/arch/arm/mach-pxa/viper.c
> +++ b/arch/arm/mach-pxa/viper.c
> @@ -276,9 +276,10 @@ static inline unsigned long viper_irq_pending(void)
>  			viper_irq_enabled_mask;
>  }
>  
> -static void viper_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void viper_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = viper_irq_pending();
>  	do {
> diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
> index ac2ae5c71ab4..7ffff0b424c2 100644
> --- a/arch/arm/mach-pxa/zeus.c
> +++ b/arch/arm/mach-pxa/zeus.c
> @@ -105,9 +105,10 @@ static inline unsigned long zeus_irq_pending(void)
>  	return __raw_readw(ZEUS_CPLD_ISA_IRQ) & zeus_irq_enabled_mask;
>  }
>  
> -static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void zeus_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = zeus_irq_pending();
>  	do {
> diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
> index fcb1d59f7aec..b7074cd5ebfd 100644
> --- a/arch/arm/mach-rpc/ecard.c
> +++ b/arch/arm/mach-rpc/ecard.c
> @@ -552,7 +552,7 @@ static void ecard_check_lockup(struct irq_desc *desc)
>  }
>  
>  static void
> -ecard_irq_handler(unsigned int irq, struct irq_desc *desc)
> +ecard_irq_handler(struct irq_desc *desc)
>  {
>  	ecard_t *ec;
>  	int called = 0;
> diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
> index 16547f2641a3..5c9ca33f61e5 100644
> --- a/arch/arm/mach-s3c64xx/common.c
> +++ b/arch/arm/mach-s3c64xx/common.c
> @@ -389,22 +389,22 @@ static inline void s3c_irq_demux_eint(unsigned int start, unsigned int end)
>  	}
>  }
>  
> -static void s3c_irq_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint0_3(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(0, 3);
>  }
>  
> -static void s3c_irq_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint4_11(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(4, 11);
>  }
>  
> -static void s3c_irq_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint12_19(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(12, 19);
>  }
>  
> -static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint20_27(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(20, 27);
>  }
> diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
> index af868d258e66..cc73c885d6a1 100644
> --- a/arch/arm/mach-sa1100/neponset.c
> +++ b/arch/arm/mach-sa1100/neponset.c
> @@ -166,7 +166,7 @@ static struct sa1100_port_fns neponset_port_fns = {
>   * ensure that the IRQ signal is deasserted before returning.  This
>   * is rather unfortunate.
>   */
> -static void neponset_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void neponset_irq_handler(struct irq_desc *desc)
>  {
>  	struct neponset_drvdata *d = irq_desc_get_handler_data(desc);
>  	unsigned int irr;
> diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
> index caba04340619..dc91cfa5483f 100644
> --- a/arch/arm/plat-orion/gpio.c
> +++ b/arch/arm/plat-orion/gpio.c
> @@ -407,7 +407,7 @@ static int gpio_irq_set_type(struct irq_data *d, u32 type)
>  	return 0;
>  }
>  
> -static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
> +static void gpio_irq_handler(struct irq_desc *desc)
>  {
>  	struct orion_gpio_chip *ochip = irq_desc_get_handler_data(desc);
>  	u32 cause, type;
> -- 
> 1.7.10.4
> 
> 

for the mach-gemini part

Signed-off-by: Hans Ulli Kroll <ulli.kroll@googlemail.com>


^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 15:38     ` Hans Ulli Kroll
  0 siblings, 0 replies; 120+ messages in thread
From: Hans Ulli Kroll @ 2015-05-20 15:38 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Russell King, Jason Cooper,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Hans Ulli Kroll, Shawn Guo, Sascha Hauer, Roland Stigge,
	Tony Lindgren, Rajendra Nayak, Paul Walmsley, Daniel Mack,
	Haojian Zhuang, Robert Jarzmik, Kukjin Kim, Krzysztof Kozlowski,
	Arnd Bergmann, Konrad Rzeszutek Wilk, Tony Luck, x86,
	linux-kernel, linux-pci, linux-acpi, Russell King,
	linux-arm-kernel, linux-omap, linux-samsung-soc



On Wed, 20 May 2015, Jiang Liu wrote:

> Now most IRQ flow handlers make no use of the first parameter 'irq'.
> And for those who do make use of 'irq', we could easily get the irq
> number through irq_desc->irq_data->irq. So kill the first parameter
> 'irq' of irq_flow_handler_t.
> 
> To ease review, I have split the changes into several parts, though
> they should be merge as one to support bisecting.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  arch/arm/common/it8152.c               |    2 +-
>  arch/arm/common/locomo.c               |    3 ++-
>  arch/arm/common/sa1111.c               |    4 ++--
>  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             |    2 +-
>  24 files changed, 39 insertions(+), 32 deletions(-)
> 
> diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c
> index 5114b68e99d5..aaa206181f92 100644
> --- a/arch/arm/common/it8152.c
> +++ b/arch/arm/common/it8152.c
> @@ -95,7 +95,7 @@ void it8152_init_irq(void)
>  	}
>  }
>  
> -void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
> +void it8152_irq_demux(struct irq_desc *desc)
>  {
>         int bits_pd, bits_lp, bits_ld;
>         int i;
> diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
> index 02af4a07ceca..99d4535d7cc6 100644
> --- a/arch/arm/common/locomo.c
> +++ b/arch/arm/common/locomo.c
> @@ -138,9 +138,10 @@ static struct locomo_dev_info locomo_devices[] = {
>  	},
>  };
>  
> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
> +static void locomo_handler(struct irq_desc *desc)
>  {
>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
> +	unsigned int irq;
>  	int req, i;
>  
>  	/* Acknowledge the parent IRQ */
> diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
> index 0d0844fa54c2..762dfe7081f0 100644
> --- a/arch/arm/common/sa1111.c
> +++ b/arch/arm/common/sa1111.c
> @@ -197,7 +197,7 @@ static struct sa1111_dev_info sa1111_devices[] = {
>   * will call us again if there are more interrupts to process.
>   */
>  static void
> -sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
> +sa1111_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned int stat0, stat1, i;
>  	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
> @@ -213,7 +213,7 @@ sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
>  	sa1111_writel(stat1, mapbase + SA1111_INTSTATCLR1);
>  
>  	if (stat0 == 0 && stat1 == 0) {
> -		do_bad_IRQ(irq, desc);
> +		do_bad_IRQ(desc);
>  		return;
>  	}
>  
> diff --git a/arch/arm/include/asm/hardware/it8152.h b/arch/arm/include/asm/hardware/it8152.h
> index d36a73d7c0e8..076777ff3daa 100644
> --- a/arch/arm/include/asm/hardware/it8152.h
> +++ b/arch/arm/include/asm/hardware/it8152.h
> @@ -106,7 +106,7 @@ extern void __iomem *it8152_base_address;
>  struct pci_dev;
>  struct pci_sys_data;
>  
> -extern void it8152_irq_demux(unsigned int irq, struct irq_desc *desc);
> +extern void it8152_irq_demux(struct irq_desc *desc);
>  extern void it8152_init_irq(void);
>  extern int it8152_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
>  extern int it8152_pci_setup(int nr, struct pci_sys_data *sys);
> diff --git a/arch/arm/include/asm/mach/irq.h b/arch/arm/include/asm/mach/irq.h
> index 2092ee1e1300..4703e00283db 100644
> --- a/arch/arm/include/asm/mach/irq.h
> +++ b/arch/arm/include/asm/mach/irq.h
> @@ -23,10 +23,10 @@ extern int show_fiq_list(struct seq_file *, int);
>  /*
>   * This is for easy migration, but should be changed in the source
>   */
> -#define do_bad_IRQ(irq,desc)				\
> +#define do_bad_IRQ(desc)				\
>  do {							\
>  	raw_spin_lock(&desc->lock);			\
> -	handle_bad_irq(irq, desc);			\
> +	handle_bad_irq(desc);			\
>  	raw_spin_unlock(&desc->lock);			\
>  } while(0)
>  
> diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
> index 4a5a7aedcb76..30140cbdb249 100644
> --- a/arch/arm/mach-dove/irq.c
> +++ b/arch/arm/mach-dove/irq.c
> @@ -69,13 +69,14 @@ static struct irq_chip pmu_irq_chip = {
>  	.irq_ack	= pmu_irq_ack,
>  };
>  
> -static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void pmu_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long cause = readl(PMU_INTERRUPT_CAUSE);
> +	unsigned int irq;
>  
>  	cause &= readl(PMU_INTERRUPT_MASK);
>  	if (cause == 0) {
> -		do_bad_IRQ(irq, desc);
> +		do_bad_IRQ(desc);
>  		return;
>  	}
>  
> diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
> index c3a0abbc9049..f78e46662447 100644
> --- a/arch/arm/mach-footbridge/isa-irq.c
> +++ b/arch/arm/mach-footbridge/isa-irq.c
> @@ -88,12 +88,12 @@ static struct irq_chip isa_hi_chip = {
>  };
>  
>  static void
> -isa_irq_handler(unsigned int irq, struct irq_desc *desc)
> +isa_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
>  
>  	if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) {
> -		do_bad_IRQ(isa_irq, desc);
> +		do_bad_IRQ(desc);
>  		return;
>  	}
>  
> diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c
> index f8cb5710d6ee..713f655bcc74 100644
> --- a/arch/arm/mach-gemini/gpio.c
> +++ b/arch/arm/mach-gemini/gpio.c
> @@ -126,7 +126,7 @@ static int gpio_set_irq_type(struct irq_data *d, unsigned int type)
>  	return 0;
>  }
>  
> -static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void gpio_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned int port = (unsigned int)irq_desc_get_handler_data(desc);
>  	unsigned int gpio_irq_no, irq_stat;
> diff --git a/arch/arm/mach-imx/3ds_debugboard.c b/arch/arm/mach-imx/3ds_debugboard.c
> index 134377352966..d93d3337b579 100644
> --- a/arch/arm/mach-imx/3ds_debugboard.c
> +++ b/arch/arm/mach-imx/3ds_debugboard.c
> @@ -85,7 +85,7 @@ static struct platform_device smsc_lan9217_device = {
>  	.resource = smsc911x_resources,
>  };
>  
> -static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
> +static void mxc_expio_irq_handler(struct irq_desc *desc)
>  {
>  	u32 imr_val;
>  	u32 int_valid;
> diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c
> index d08c37c696f6..07aef418a0e1 100644
> --- a/arch/arm/mach-imx/mach-mx31ads.c
> +++ b/arch/arm/mach-imx/mach-mx31ads.c
> @@ -154,7 +154,7 @@ static inline void mxc_init_imx_uart(void)
>  	imx31_add_imx_uart0(&uart_pdata);
>  }
>  
> -static void mx31ads_expio_irq_handler(u32 irq, struct irq_desc *desc)
> +static void mx31ads_expio_irq_handler(struct irq_desc *desc)
>  {
>  	u32 imr_val;
>  	u32 int_valid;
> diff --git a/arch/arm/mach-iop13xx/msi.c b/arch/arm/mach-iop13xx/msi.c
> index 9f89e76dfbb9..f6235b28578c 100644
> --- a/arch/arm/mach-iop13xx/msi.c
> +++ b/arch/arm/mach-iop13xx/msi.c
> @@ -91,7 +91,7 @@ static void (*write_imipr[])(u32) = {
>  	write_imipr_3,
>  };
>  
> -static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc)
> +static void iop13xx_msi_handler(struct irq_desc *desc)
>  {
>  	int i, j;
>  	unsigned long status;
> diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c
> index 9ecb8f9c4ef5..f361fed99105 100644
> --- a/arch/arm/mach-lpc32xx/irq.c
> +++ b/arch/arm/mach-lpc32xx/irq.c
> @@ -370,7 +370,7 @@ static struct irq_chip lpc32xx_irq_chip = {
>  	.irq_set_wake = lpc32xx_irq_wake
>  };
>  
> -static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
> +static void lpc32xx_sic1_handler(struct irq_desc *desc)
>  {
>  	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC1_BASE));
>  
> @@ -383,7 +383,7 @@ static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
>  	}
>  }
>  
> -static void lpc32xx_sic2_handler(unsigned int irq, struct irq_desc *desc)
> +static void lpc32xx_sic2_handler(struct irq_desc *desc)
>  {
>  	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC2_BASE));
>  
> diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c
> index 3c0e42219200..374bccf5ce24 100644
> --- a/arch/arm/mach-omap1/fpga.c
> +++ b/arch/arm/mach-omap1/fpga.c
> @@ -87,7 +87,7 @@ static void fpga_mask_ack_irq(struct irq_data *d)
>  	fpga_ack_irq(d);
>  }
>  
> -static void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)
> +static void innovator_fpga_IRQ_demux(struct irq_desc *desc)
>  {
>  	u32 stat;
>  	int fpga_irq;
> diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
> index 7add7994dbfc..6cfc1e54d41f 100644
> --- a/arch/arm/mach-omap2/prm_common.c
> +++ b/arch/arm/mach-omap2/prm_common.c
> @@ -102,7 +102,7 @@ static void omap_prcm_events_filter_priority(unsigned long *events,
>   * dispatched accordingly. Clearing of the wakeup events should be
>   * done by the SoC specific individual handlers.
>   */
> -static void omap_prcm_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void omap_prcm_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending[OMAP_PRCM_MAX_NR_PENDING_REG];
>  	unsigned long priority_pending[OMAP_PRCM_MAX_NR_PENDING_REG];
> diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
> index d897292712eb..506365cdd58b 100644
> --- a/arch/arm/mach-pxa/balloon3.c
> +++ b/arch/arm/mach-pxa/balloon3.c
> @@ -496,8 +496,9 @@ static struct irq_chip balloon3_irq_chip = {
>  	.irq_unmask	= balloon3_unmask_irq,
>  };
>  
> -static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void balloon3_irq_handler(struct irq_desc *desc)
>  {
> +	unsigned int irq;
>  	unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
>  					balloon3_irq_enabled;
>  	do {
> diff --git a/arch/arm/mach-pxa/cm-x2xx-pci.c b/arch/arm/mach-pxa/cm-x2xx-pci.c
> index d8f816c24a2f..3221ae15bef7 100644
> --- a/arch/arm/mach-pxa/cm-x2xx-pci.c
> +++ b/arch/arm/mach-pxa/cm-x2xx-pci.c
> @@ -29,12 +29,12 @@
>  void __iomem *it8152_base_address;
>  static int cmx2xx_it8152_irq_gpio;
>  
> -static void cmx2xx_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
> +static void cmx2xx_it8152_irq_demux(struct irq_desc *desc)
>  {
>  	/* clear our parent irq */
>  	desc->irq_data.chip->irq_ack(&desc->irq_data);
>  
> -	it8152_irq_demux(irq, desc);
> +	it8152_irq_demux(desc);
>  }
>  
>  void __cmx2xx_pci_init_irq(int irq_gpio)
> diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
> index eaee2c20b189..cbf00f51808f 100644
> --- a/arch/arm/mach-pxa/lpd270.c
> +++ b/arch/arm/mach-pxa/lpd270.c
> @@ -120,9 +120,10 @@ static struct irq_chip lpd270_irq_chip = {
>  	.irq_unmask	= lpd270_unmask_irq,
>  };
>  
> -static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void lpd270_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = __raw_readw(LPD270_INT_STATUS) & lpd270_irq_enabled;
>  	do {
> diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
> index 2897da2a5df6..0d8331f8536e 100644
> --- a/arch/arm/mach-pxa/pcm990-baseboard.c
> +++ b/arch/arm/mach-pxa/pcm990-baseboard.c
> @@ -287,6 +287,7 @@ static struct irq_chip pcm990_irq_chip = {
>  static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = ~pcm990_cpld_readb(PCM990_CTRL_INTSETCLR);
>  	pending &= pcm990_irq_enabled;
> diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
> index de3b08073fe7..bd52fb914d6a 100644
> --- a/arch/arm/mach-pxa/viper.c
> +++ b/arch/arm/mach-pxa/viper.c
> @@ -276,9 +276,10 @@ static inline unsigned long viper_irq_pending(void)
>  			viper_irq_enabled_mask;
>  }
>  
> -static void viper_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void viper_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = viper_irq_pending();
>  	do {
> diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
> index ac2ae5c71ab4..7ffff0b424c2 100644
> --- a/arch/arm/mach-pxa/zeus.c
> +++ b/arch/arm/mach-pxa/zeus.c
> @@ -105,9 +105,10 @@ static inline unsigned long zeus_irq_pending(void)
>  	return __raw_readw(ZEUS_CPLD_ISA_IRQ) & zeus_irq_enabled_mask;
>  }
>  
> -static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void zeus_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = zeus_irq_pending();
>  	do {
> diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
> index fcb1d59f7aec..b7074cd5ebfd 100644
> --- a/arch/arm/mach-rpc/ecard.c
> +++ b/arch/arm/mach-rpc/ecard.c
> @@ -552,7 +552,7 @@ static void ecard_check_lockup(struct irq_desc *desc)
>  }
>  
>  static void
> -ecard_irq_handler(unsigned int irq, struct irq_desc *desc)
> +ecard_irq_handler(struct irq_desc *desc)
>  {
>  	ecard_t *ec;
>  	int called = 0;
> diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
> index 16547f2641a3..5c9ca33f61e5 100644
> --- a/arch/arm/mach-s3c64xx/common.c
> +++ b/arch/arm/mach-s3c64xx/common.c
> @@ -389,22 +389,22 @@ static inline void s3c_irq_demux_eint(unsigned int start, unsigned int end)
>  	}
>  }
>  
> -static void s3c_irq_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint0_3(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(0, 3);
>  }
>  
> -static void s3c_irq_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint4_11(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(4, 11);
>  }
>  
> -static void s3c_irq_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint12_19(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(12, 19);
>  }
>  
> -static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint20_27(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(20, 27);
>  }
> diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
> index af868d258e66..cc73c885d6a1 100644
> --- a/arch/arm/mach-sa1100/neponset.c
> +++ b/arch/arm/mach-sa1100/neponset.c
> @@ -166,7 +166,7 @@ static struct sa1100_port_fns neponset_port_fns = {
>   * ensure that the IRQ signal is deasserted before returning.  This
>   * is rather unfortunate.
>   */
> -static void neponset_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void neponset_irq_handler(struct irq_desc *desc)
>  {
>  	struct neponset_drvdata *d = irq_desc_get_handler_data(desc);
>  	unsigned int irr;
> diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
> index caba04340619..dc91cfa5483f 100644
> --- a/arch/arm/plat-orion/gpio.c
> +++ b/arch/arm/plat-orion/gpio.c
> @@ -407,7 +407,7 @@ static int gpio_irq_set_type(struct irq_data *d, u32 type)
>  	return 0;
>  }
>  
> -static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
> +static void gpio_irq_handler(struct irq_desc *desc)
>  {
>  	struct orion_gpio_chip *ochip = irq_desc_get_handler_data(desc);
>  	u32 cause, type;
> -- 
> 1.7.10.4
> 
> 

for the mach-gemini part

Signed-off-by: Hans Ulli Kroll <ulli.kroll@googlemail.com>


^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 15:38     ` Hans Ulli Kroll
  0 siblings, 0 replies; 120+ messages in thread
From: Hans Ulli Kroll @ 2015-05-20 15:38 UTC (permalink / raw)
  To: linux-arm-kernel



On Wed, 20 May 2015, Jiang Liu wrote:

> Now most IRQ flow handlers make no use of the first parameter 'irq'.
> And for those who do make use of 'irq', we could easily get the irq
> number through irq_desc->irq_data->irq. So kill the first parameter
> 'irq' of irq_flow_handler_t.
> 
> To ease review, I have split the changes into several parts, though
> they should be merge as one to support bisecting.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  arch/arm/common/it8152.c               |    2 +-
>  arch/arm/common/locomo.c               |    3 ++-
>  arch/arm/common/sa1111.c               |    4 ++--
>  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             |    2 +-
>  24 files changed, 39 insertions(+), 32 deletions(-)
> 
> diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c
> index 5114b68e99d5..aaa206181f92 100644
> --- a/arch/arm/common/it8152.c
> +++ b/arch/arm/common/it8152.c
> @@ -95,7 +95,7 @@ void it8152_init_irq(void)
>  	}
>  }
>  
> -void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
> +void it8152_irq_demux(struct irq_desc *desc)
>  {
>         int bits_pd, bits_lp, bits_ld;
>         int i;
> diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
> index 02af4a07ceca..99d4535d7cc6 100644
> --- a/arch/arm/common/locomo.c
> +++ b/arch/arm/common/locomo.c
> @@ -138,9 +138,10 @@ static struct locomo_dev_info locomo_devices[] = {
>  	},
>  };
>  
> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
> +static void locomo_handler(struct irq_desc *desc)
>  {
>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
> +	unsigned int irq;
>  	int req, i;
>  
>  	/* Acknowledge the parent IRQ */
> diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
> index 0d0844fa54c2..762dfe7081f0 100644
> --- a/arch/arm/common/sa1111.c
> +++ b/arch/arm/common/sa1111.c
> @@ -197,7 +197,7 @@ static struct sa1111_dev_info sa1111_devices[] = {
>   * will call us again if there are more interrupts to process.
>   */
>  static void
> -sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
> +sa1111_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned int stat0, stat1, i;
>  	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
> @@ -213,7 +213,7 @@ sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
>  	sa1111_writel(stat1, mapbase + SA1111_INTSTATCLR1);
>  
>  	if (stat0 == 0 && stat1 == 0) {
> -		do_bad_IRQ(irq, desc);
> +		do_bad_IRQ(desc);
>  		return;
>  	}
>  
> diff --git a/arch/arm/include/asm/hardware/it8152.h b/arch/arm/include/asm/hardware/it8152.h
> index d36a73d7c0e8..076777ff3daa 100644
> --- a/arch/arm/include/asm/hardware/it8152.h
> +++ b/arch/arm/include/asm/hardware/it8152.h
> @@ -106,7 +106,7 @@ extern void __iomem *it8152_base_address;
>  struct pci_dev;
>  struct pci_sys_data;
>  
> -extern void it8152_irq_demux(unsigned int irq, struct irq_desc *desc);
> +extern void it8152_irq_demux(struct irq_desc *desc);
>  extern void it8152_init_irq(void);
>  extern int it8152_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
>  extern int it8152_pci_setup(int nr, struct pci_sys_data *sys);
> diff --git a/arch/arm/include/asm/mach/irq.h b/arch/arm/include/asm/mach/irq.h
> index 2092ee1e1300..4703e00283db 100644
> --- a/arch/arm/include/asm/mach/irq.h
> +++ b/arch/arm/include/asm/mach/irq.h
> @@ -23,10 +23,10 @@ extern int show_fiq_list(struct seq_file *, int);
>  /*
>   * This is for easy migration, but should be changed in the source
>   */
> -#define do_bad_IRQ(irq,desc)				\
> +#define do_bad_IRQ(desc)				\
>  do {							\
>  	raw_spin_lock(&desc->lock);			\
> -	handle_bad_irq(irq, desc);			\
> +	handle_bad_irq(desc);			\
>  	raw_spin_unlock(&desc->lock);			\
>  } while(0)
>  
> diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
> index 4a5a7aedcb76..30140cbdb249 100644
> --- a/arch/arm/mach-dove/irq.c
> +++ b/arch/arm/mach-dove/irq.c
> @@ -69,13 +69,14 @@ static struct irq_chip pmu_irq_chip = {
>  	.irq_ack	= pmu_irq_ack,
>  };
>  
> -static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void pmu_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long cause = readl(PMU_INTERRUPT_CAUSE);
> +	unsigned int irq;
>  
>  	cause &= readl(PMU_INTERRUPT_MASK);
>  	if (cause == 0) {
> -		do_bad_IRQ(irq, desc);
> +		do_bad_IRQ(desc);
>  		return;
>  	}
>  
> diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
> index c3a0abbc9049..f78e46662447 100644
> --- a/arch/arm/mach-footbridge/isa-irq.c
> +++ b/arch/arm/mach-footbridge/isa-irq.c
> @@ -88,12 +88,12 @@ static struct irq_chip isa_hi_chip = {
>  };
>  
>  static void
> -isa_irq_handler(unsigned int irq, struct irq_desc *desc)
> +isa_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
>  
>  	if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) {
> -		do_bad_IRQ(isa_irq, desc);
> +		do_bad_IRQ(desc);
>  		return;
>  	}
>  
> diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c
> index f8cb5710d6ee..713f655bcc74 100644
> --- a/arch/arm/mach-gemini/gpio.c
> +++ b/arch/arm/mach-gemini/gpio.c
> @@ -126,7 +126,7 @@ static int gpio_set_irq_type(struct irq_data *d, unsigned int type)
>  	return 0;
>  }
>  
> -static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void gpio_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned int port = (unsigned int)irq_desc_get_handler_data(desc);
>  	unsigned int gpio_irq_no, irq_stat;
> diff --git a/arch/arm/mach-imx/3ds_debugboard.c b/arch/arm/mach-imx/3ds_debugboard.c
> index 134377352966..d93d3337b579 100644
> --- a/arch/arm/mach-imx/3ds_debugboard.c
> +++ b/arch/arm/mach-imx/3ds_debugboard.c
> @@ -85,7 +85,7 @@ static struct platform_device smsc_lan9217_device = {
>  	.resource = smsc911x_resources,
>  };
>  
> -static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
> +static void mxc_expio_irq_handler(struct irq_desc *desc)
>  {
>  	u32 imr_val;
>  	u32 int_valid;
> diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c
> index d08c37c696f6..07aef418a0e1 100644
> --- a/arch/arm/mach-imx/mach-mx31ads.c
> +++ b/arch/arm/mach-imx/mach-mx31ads.c
> @@ -154,7 +154,7 @@ static inline void mxc_init_imx_uart(void)
>  	imx31_add_imx_uart0(&uart_pdata);
>  }
>  
> -static void mx31ads_expio_irq_handler(u32 irq, struct irq_desc *desc)
> +static void mx31ads_expio_irq_handler(struct irq_desc *desc)
>  {
>  	u32 imr_val;
>  	u32 int_valid;
> diff --git a/arch/arm/mach-iop13xx/msi.c b/arch/arm/mach-iop13xx/msi.c
> index 9f89e76dfbb9..f6235b28578c 100644
> --- a/arch/arm/mach-iop13xx/msi.c
> +++ b/arch/arm/mach-iop13xx/msi.c
> @@ -91,7 +91,7 @@ static void (*write_imipr[])(u32) = {
>  	write_imipr_3,
>  };
>  
> -static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc)
> +static void iop13xx_msi_handler(struct irq_desc *desc)
>  {
>  	int i, j;
>  	unsigned long status;
> diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c
> index 9ecb8f9c4ef5..f361fed99105 100644
> --- a/arch/arm/mach-lpc32xx/irq.c
> +++ b/arch/arm/mach-lpc32xx/irq.c
> @@ -370,7 +370,7 @@ static struct irq_chip lpc32xx_irq_chip = {
>  	.irq_set_wake = lpc32xx_irq_wake
>  };
>  
> -static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
> +static void lpc32xx_sic1_handler(struct irq_desc *desc)
>  {
>  	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC1_BASE));
>  
> @@ -383,7 +383,7 @@ static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
>  	}
>  }
>  
> -static void lpc32xx_sic2_handler(unsigned int irq, struct irq_desc *desc)
> +static void lpc32xx_sic2_handler(struct irq_desc *desc)
>  {
>  	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC2_BASE));
>  
> diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c
> index 3c0e42219200..374bccf5ce24 100644
> --- a/arch/arm/mach-omap1/fpga.c
> +++ b/arch/arm/mach-omap1/fpga.c
> @@ -87,7 +87,7 @@ static void fpga_mask_ack_irq(struct irq_data *d)
>  	fpga_ack_irq(d);
>  }
>  
> -static void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)
> +static void innovator_fpga_IRQ_demux(struct irq_desc *desc)
>  {
>  	u32 stat;
>  	int fpga_irq;
> diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
> index 7add7994dbfc..6cfc1e54d41f 100644
> --- a/arch/arm/mach-omap2/prm_common.c
> +++ b/arch/arm/mach-omap2/prm_common.c
> @@ -102,7 +102,7 @@ static void omap_prcm_events_filter_priority(unsigned long *events,
>   * dispatched accordingly. Clearing of the wakeup events should be
>   * done by the SoC specific individual handlers.
>   */
> -static void omap_prcm_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void omap_prcm_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending[OMAP_PRCM_MAX_NR_PENDING_REG];
>  	unsigned long priority_pending[OMAP_PRCM_MAX_NR_PENDING_REG];
> diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
> index d897292712eb..506365cdd58b 100644
> --- a/arch/arm/mach-pxa/balloon3.c
> +++ b/arch/arm/mach-pxa/balloon3.c
> @@ -496,8 +496,9 @@ static struct irq_chip balloon3_irq_chip = {
>  	.irq_unmask	= balloon3_unmask_irq,
>  };
>  
> -static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void balloon3_irq_handler(struct irq_desc *desc)
>  {
> +	unsigned int irq;
>  	unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
>  					balloon3_irq_enabled;
>  	do {
> diff --git a/arch/arm/mach-pxa/cm-x2xx-pci.c b/arch/arm/mach-pxa/cm-x2xx-pci.c
> index d8f816c24a2f..3221ae15bef7 100644
> --- a/arch/arm/mach-pxa/cm-x2xx-pci.c
> +++ b/arch/arm/mach-pxa/cm-x2xx-pci.c
> @@ -29,12 +29,12 @@
>  void __iomem *it8152_base_address;
>  static int cmx2xx_it8152_irq_gpio;
>  
> -static void cmx2xx_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
> +static void cmx2xx_it8152_irq_demux(struct irq_desc *desc)
>  {
>  	/* clear our parent irq */
>  	desc->irq_data.chip->irq_ack(&desc->irq_data);
>  
> -	it8152_irq_demux(irq, desc);
> +	it8152_irq_demux(desc);
>  }
>  
>  void __cmx2xx_pci_init_irq(int irq_gpio)
> diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
> index eaee2c20b189..cbf00f51808f 100644
> --- a/arch/arm/mach-pxa/lpd270.c
> +++ b/arch/arm/mach-pxa/lpd270.c
> @@ -120,9 +120,10 @@ static struct irq_chip lpd270_irq_chip = {
>  	.irq_unmask	= lpd270_unmask_irq,
>  };
>  
> -static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void lpd270_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = __raw_readw(LPD270_INT_STATUS) & lpd270_irq_enabled;
>  	do {
> diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
> index 2897da2a5df6..0d8331f8536e 100644
> --- a/arch/arm/mach-pxa/pcm990-baseboard.c
> +++ b/arch/arm/mach-pxa/pcm990-baseboard.c
> @@ -287,6 +287,7 @@ static struct irq_chip pcm990_irq_chip = {
>  static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = ~pcm990_cpld_readb(PCM990_CTRL_INTSETCLR);
>  	pending &= pcm990_irq_enabled;
> diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
> index de3b08073fe7..bd52fb914d6a 100644
> --- a/arch/arm/mach-pxa/viper.c
> +++ b/arch/arm/mach-pxa/viper.c
> @@ -276,9 +276,10 @@ static inline unsigned long viper_irq_pending(void)
>  			viper_irq_enabled_mask;
>  }
>  
> -static void viper_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void viper_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = viper_irq_pending();
>  	do {
> diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
> index ac2ae5c71ab4..7ffff0b424c2 100644
> --- a/arch/arm/mach-pxa/zeus.c
> +++ b/arch/arm/mach-pxa/zeus.c
> @@ -105,9 +105,10 @@ static inline unsigned long zeus_irq_pending(void)
>  	return __raw_readw(ZEUS_CPLD_ISA_IRQ) & zeus_irq_enabled_mask;
>  }
>  
> -static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void zeus_irq_handler(struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
>  
>  	pending = zeus_irq_pending();
>  	do {
> diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
> index fcb1d59f7aec..b7074cd5ebfd 100644
> --- a/arch/arm/mach-rpc/ecard.c
> +++ b/arch/arm/mach-rpc/ecard.c
> @@ -552,7 +552,7 @@ static void ecard_check_lockup(struct irq_desc *desc)
>  }
>  
>  static void
> -ecard_irq_handler(unsigned int irq, struct irq_desc *desc)
> +ecard_irq_handler(struct irq_desc *desc)
>  {
>  	ecard_t *ec;
>  	int called = 0;
> diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
> index 16547f2641a3..5c9ca33f61e5 100644
> --- a/arch/arm/mach-s3c64xx/common.c
> +++ b/arch/arm/mach-s3c64xx/common.c
> @@ -389,22 +389,22 @@ static inline void s3c_irq_demux_eint(unsigned int start, unsigned int end)
>  	}
>  }
>  
> -static void s3c_irq_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint0_3(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(0, 3);
>  }
>  
> -static void s3c_irq_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint4_11(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(4, 11);
>  }
>  
> -static void s3c_irq_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint12_19(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(12, 19);
>  }
>  
> -static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
> +static void s3c_irq_demux_eint20_27(struct irq_desc *desc)
>  {
>  	s3c_irq_demux_eint(20, 27);
>  }
> diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
> index af868d258e66..cc73c885d6a1 100644
> --- a/arch/arm/mach-sa1100/neponset.c
> +++ b/arch/arm/mach-sa1100/neponset.c
> @@ -166,7 +166,7 @@ static struct sa1100_port_fns neponset_port_fns = {
>   * ensure that the IRQ signal is deasserted before returning.  This
>   * is rather unfortunate.
>   */
> -static void neponset_irq_handler(unsigned int irq, struct irq_desc *desc)
> +static void neponset_irq_handler(struct irq_desc *desc)
>  {
>  	struct neponset_drvdata *d = irq_desc_get_handler_data(desc);
>  	unsigned int irr;
> diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
> index caba04340619..dc91cfa5483f 100644
> --- a/arch/arm/plat-orion/gpio.c
> +++ b/arch/arm/plat-orion/gpio.c
> @@ -407,7 +407,7 @@ static int gpio_irq_set_type(struct irq_data *d, u32 type)
>  	return 0;
>  }
>  
> -static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
> +static void gpio_irq_handler(struct irq_desc *desc)
>  {
>  	struct orion_gpio_chip *ochip = irq_desc_get_handler_data(desc);
>  	u32 cause, type;
> -- 
> 1.7.10.4
> 
> 

for the mach-gemini part

Signed-off-by: Hans Ulli Kroll <ulli.kroll@googlemail.com>

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 25/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 10:00   ` Jiang Liu
@ 2015-05-20 15:40     ` Thomas Gleixner
  -1 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:40 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Dan Williams, Vinod Koul, Murali Karicheri,
	Philipp Zabel, Steve Longerbeam, Gilad Avidov,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, dmaengine, linux-arm-kernel

On Wed, 20 May 2015, Jiang Liu wrote:
>  /* Chained IRQ handler for IPU error interrupt */
> -static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
> +static void ipu_irq_err(struct irq_desc *desc)
>  {
> +	unsigned int irq = irq_desc_to_irq(desc);

Why initializing? It's overwritten in the loop.

>  /* Chained IRQ handler for IPU function interrupt */
> -static void ipu_irq_fn(unsigned int irq, struct irq_desc *desc)
> +static void ipu_irq_fn(struct irq_desc *desc)
>  {
> +	unsigned int irq = irq_desc_to_irq(desc);

Ditto.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 25/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 15:40     ` Thomas Gleixner
  0 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:40 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, 20 May 2015, Jiang Liu wrote:
>  /* Chained IRQ handler for IPU error interrupt */
> -static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
> +static void ipu_irq_err(struct irq_desc *desc)
>  {
> +	unsigned int irq = irq_desc_to_irq(desc);

Why initializing? It's overwritten in the loop.

>  /* Chained IRQ handler for IPU function interrupt */
> -static void ipu_irq_fn(unsigned int irq, struct irq_desc *desc)
> +static void ipu_irq_fn(struct irq_desc *desc)
>  {
> +	unsigned int irq = irq_desc_to_irq(desc);

Ditto.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 15:32       ` Jiang Liu
  (?)
@ 2015-05-20 15:48         ` Thomas Gleixner
  -1 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:48 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Russell King, Jason Cooper, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Hans Ulli Kroll,
	Shawn Guo, Sascha Hauer, Roland Stigge, Tony Lindgren,
	Rajendra Nayak, Paul Walmsley, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik

On Wed, 20 May 2015, Jiang Liu wrote:

> On 2015/5/20 23:28, Thomas Gleixner wrote:
> > On Wed, 20 May 2015, Jiang Liu wrote:
> >> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
> >> +static void locomo_handler(struct irq_desc *desc)
> >>  {
> >>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
> >> +	unsigned int irq;
> >>  	int req, i;
> > 
> > That leaves irq unitialized ....
> That should be OK, 'irq' here is just a local variable.
> Actually it may be changed as:
>         if (req) {
>                 /* generate the next interrupt(s) */
> -                irq = lchip->irq_base;
> +                unsigned int irq = lchip->irq_base;

Indeed. 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 15:48         ` Thomas Gleixner
  0 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:48 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Russell King, Jason Cooper, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Hans Ulli Kroll,
	Shawn Guo, Sascha Hauer, Roland Stigge, Tony Lindgren,
	Rajendra Nayak, Paul Walmsley, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik, Kukjin Kim, Krzysztof Kozlowski, Arnd Bergmann,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, Russell King, linux-arm-kernel, linux-omap,
	linux-samsung-soc

On Wed, 20 May 2015, Jiang Liu wrote:

> On 2015/5/20 23:28, Thomas Gleixner wrote:
> > On Wed, 20 May 2015, Jiang Liu wrote:
> >> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
> >> +static void locomo_handler(struct irq_desc *desc)
> >>  {
> >>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
> >> +	unsigned int irq;
> >>  	int req, i;
> > 
> > That leaves irq unitialized ....
> That should be OK, 'irq' here is just a local variable.
> Actually it may be changed as:
>         if (req) {
>                 /* generate the next interrupt(s) */
> -                irq = lchip->irq_base;
> +                unsigned int irq = lchip->irq_base;

Indeed. 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 15:48         ` Thomas Gleixner
  0 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 15:48 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, 20 May 2015, Jiang Liu wrote:

> On 2015/5/20 23:28, Thomas Gleixner wrote:
> > On Wed, 20 May 2015, Jiang Liu wrote:
> >> -static void locomo_handler(unsigned int irq, struct irq_desc *desc)
> >> +static void locomo_handler(struct irq_desc *desc)
> >>  {
> >>  	struct locomo *lchip = irq_desc_get_chip_data(desc);
> >> +	unsigned int irq;
> >>  	int req, i;
> > 
> > That leaves irq unitialized ....
> That should be OK, 'irq' here is just a local variable.
> Actually it may be changed as:
>         if (req) {
>                 /* generate the next interrupt(s) */
> -                irq = lchip->irq_base;
> +                unsigned int irq = lchip->irq_base;

Indeed. 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 25/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 15:40     ` Thomas Gleixner
@ 2015-05-20 15:49       ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 15:49 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Dan Williams, Vinod Koul, Murali Karicheri,
	Philipp Zabel, Steve Longerbeam, Gilad Avidov,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, dmaengine, linux-arm-kernel

On 2015/5/20 23:40, Thomas Gleixner wrote:
> On Wed, 20 May 2015, Jiang Liu wrote:
>>  /* Chained IRQ handler for IPU error interrupt */
>> -static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
>> +static void ipu_irq_err(struct irq_desc *desc)
>>  {
>> +	unsigned int irq = irq_desc_to_irq(desc);
> 
> Why initializing? It's overwritten in the loop.
Hi Thomas,

I'm not familiar with the hardware, but if src2map() returns 0
on the first call, we need to initialize irq. Otherwise
generic_handle_irq(irq) will use random value on the first call.
---------------------------------------------------------
                        map = src2map(32 * i + line);
                        if (map)
                                irq = map->irq;
---------------------------------------------------------
Thanks!
Gerry

> 
>>  /* Chained IRQ handler for IPU function interrupt */
>> -static void ipu_irq_fn(unsigned int irq, struct irq_desc *desc)
>> +static void ipu_irq_fn(struct irq_desc *desc)
>>  {
>> +	unsigned int irq = irq_desc_to_irq(desc);
> 
> Ditto.
> 
> Thanks,
> 
> 	tglx
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 25/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 15:49       ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-05-20 15:49 UTC (permalink / raw)
  To: linux-arm-kernel

On 2015/5/20 23:40, Thomas Gleixner wrote:
> On Wed, 20 May 2015, Jiang Liu wrote:
>>  /* Chained IRQ handler for IPU error interrupt */
>> -static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
>> +static void ipu_irq_err(struct irq_desc *desc)
>>  {
>> +	unsigned int irq = irq_desc_to_irq(desc);
> 
> Why initializing? It's overwritten in the loop.
Hi Thomas,

I'm not familiar with the hardware, but if src2map() returns 0
on the first call, we need to initialize irq. Otherwise
generic_handle_irq(irq) will use random value on the first call.
---------------------------------------------------------
                        map = src2map(32 * i + line);
                        if (map)
                                irq = map->irq;
---------------------------------------------------------
Thanks!
Gerry

> 
>>  /* Chained IRQ handler for IPU function interrupt */
>> -static void ipu_irq_fn(unsigned int irq, struct irq_desc *desc)
>> +static void ipu_irq_fn(struct irq_desc *desc)
>>  {
>> +	unsigned int irq = irq_desc_to_irq(desc);
> 
> Ditto.
> 
> Thanks,
> 
> 	tglx
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 15:28     ` Jiang Liu
@ 2015-05-20 18:35       ` Thomas Gleixner
  2015-05-20 20:00         ` Julia Lawall
                           ` (2 more replies)
  2015-05-20 18:36       ` Thomas Gleixner
  1 sibling, 3 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 18:35 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86, LKML,
	linux-pci, linux-acpi, Julia Lawall

B1;2802;0cOn Wed, 20 May 2015, Jiang Liu wrote:
> On 2015/5/20 23:25, Thomas Gleixner wrote:
> > On Wed, 20 May 2015, Jiang Liu wrote:
> >> --- a/include/linux/irqdesc.h
> >> +++ b/include/linux/irqdesc.h
> >> @@ -99,6 +99,11 @@ static inline struct irq_desc *irq_data_to_desc(struct irq_data *data)
> >>  	return container_of(data->common, struct irq_desc, irq_common_data);
> >>  }
> >>  
> >> +static inline unsigned int irq_desc_get_irq(struct irq_desc *desc)
> >> +{
> >> +	return desc->irq_data.irq;
> >> +}
> >> +
> > 
> > Does not apply either.
> Hi Thomas,
> 	Will check the base again.
> 	Please do not apply patch after [14/25]. There are here to
> ask for comments, there are still building issues with patch after
> [14/25]. Just help to comment whether it's on the right direction.
> If so, I will send another version for formal review.

I think you are doing that conversion wrong. You should first change
all handlers which use the irq argument to:

    handler(unsigned __irq, *desc)

and add the local variable 

    unsigned irq;

or
	
    unsigned irq = irq_desc_get_irq(desc);

for those.

So that results in a pretty small series of patches.

Once that is done, you can remove the irq argument in one go treewide.

And you should do that with scripting aid. Coccinelle is the proper
tool for this. If you have problems with cocci, you can politely ask
Julia (Cc'ed) for help. She's the master of coccinelle :)

The purpose of the script is to:

    1) Identify all handlers

       This can be done by analyzing the arguments of

       	    __irq_set_handler()
	    irq_set_handler()
	    irq_set_chained_handler()
	    irq_alloc_generic_chip()
	    irq_alloc_domain_generic_chips()
	    irq_set_chip_and_handler_name()
	    irq_set_chip_and_handler()
	    __irq_set_handler_locked()
	    __irq_set_chip_handler_name_locked()
	    __irq_set_preflow_handler()

	If the argument is a function local to the file step 2 can
	take place.

	If it's a extern function, then the script should at least
	print out the function names. Those are in most of the cases
	the generic flow handler functions.

    2) Check the handlers whether they use the irq argument

       For those which do:

          Check whether they just use the argument instead of a local
       	  variable, i.e. the first usage is an assignment. In that
       	  case rename the argument to __irq and add a local variable
       	  
	      unsigned int irq;

	  If they use the irq argument for some computation or as
       	  argument to another function, then you need to rename the
       	  argument as well and add:

       	      unsigned int irq = irq_get_desc_irq(desc);

So this results in a series of patches which can be merged right
away. If that lot has hit Linus tree and right after -rc1, we run the
script again and find and fix stuff which got added throughout the
merge window. That might result in 0 to n patches.

The last step is another script which does:

    1) Identify all handlers

    2) Remove the irq argument

We can send that right after -rc1 so no new users can trickle in.

It's really important to do that with scripts. It seems you try to do
it via compile testing. But that will fail as you CANNOT execute all
possible config combinations.

Thanks,

	tglx


^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 15:28     ` Jiang Liu
  2015-05-20 18:35       ` Thomas Gleixner
@ 2015-05-20 18:36       ` Thomas Gleixner
  1 sibling, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 18:36 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86,
	linux-kernel, linux-pci, linux-acpi

On Wed, 20 May 2015, Jiang Liu wrote:

> On 2015/5/20 23:25, Thomas Gleixner wrote:
> > On Wed, 20 May 2015, Jiang Liu wrote:
> >> --- a/include/linux/irqdesc.h
> >> +++ b/include/linux/irqdesc.h
> >> @@ -99,6 +99,11 @@ static inline struct irq_desc *irq_data_to_desc(struct irq_data *data)
> >>  	return container_of(data->common, struct irq_desc, irq_common_data);
> >>  }
> >>  
> >> +static inline unsigned int irq_desc_get_irq(struct irq_desc *desc)
> >> +{
> >> +	return desc->irq_data.irq;
> >> +}
> >> +
> > 
> > Does not apply either.
> Hi Thomas,
> 	Will check the base again.

I assume you applied it on top of the common data split. See the hunk
above.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 25/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 15:49       ` Jiang Liu
@ 2015-05-20 18:43         ` Thomas Gleixner
  -1 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 18:43 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Dan Williams, Vinod Koul, Murali Karicheri,
	Philipp Zabel, Steve Longerbeam, Gilad Avidov,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, dmaengine, linux-arm-kernel



On Wed, 20 May 2015, Jiang Liu wrote:

> On 2015/5/20 23:40, Thomas Gleixner wrote:
> > On Wed, 20 May 2015, Jiang Liu wrote:
> >>  /* Chained IRQ handler for IPU error interrupt */
> >> -static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
> >> +static void ipu_irq_err(struct irq_desc *desc)
> >>  {
> >> +	unsigned int irq = irq_desc_to_irq(desc);
> > 
> > Why initializing? It's overwritten in the loop.
> Hi Thomas,
> 
> I'm not familiar with the hardware, but if src2map() returns 0
> on the first call, we need to initialize irq. Otherwise
> generic_handle_irq(irq) will use random value on the first call.
> ---------------------------------------------------------
>                         map = src2map(32 * i + line);
>                         if (map)
>                                 irq = map->irq;

You omitted the following code:

                        raw_spin_unlock(&bank_lock);

                        if (!map) {
                                pr_err("IPU: Interrupt on unmapped source %u bank %d\n",
                                       line, i);
                                continue;
			}

So you it does not use irq if map is 0.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 25/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 18:43         ` Thomas Gleixner
  0 siblings, 0 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 18:43 UTC (permalink / raw)
  To: linux-arm-kernel



On Wed, 20 May 2015, Jiang Liu wrote:

> On 2015/5/20 23:40, Thomas Gleixner wrote:
> > On Wed, 20 May 2015, Jiang Liu wrote:
> >>  /* Chained IRQ handler for IPU error interrupt */
> >> -static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
> >> +static void ipu_irq_err(struct irq_desc *desc)
> >>  {
> >> +	unsigned int irq = irq_desc_to_irq(desc);
> > 
> > Why initializing? It's overwritten in the loop.
> Hi Thomas,
> 
> I'm not familiar with the hardware, but if src2map() returns 0
> on the first call, we need to initialize irq. Otherwise
> generic_handle_irq(irq) will use random value on the first call.
> ---------------------------------------------------------
>                         map = src2map(32 * i + line);
>                         if (map)
>                                 irq = map->irq;

You omitted the following code:

                        raw_spin_unlock(&bank_lock);

                        if (!map) {
                                pr_err("IPU: Interrupt on unmapped source %u bank %d\n",
                                       line, i);
                                continue;
			}

So you it does not use irq if map is 0.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 10:00   ` Jiang Liu
  (?)
@ 2015-05-20 18:54     ` Robert Jarzmik
  -1 siblings, 0 replies; 120+ messages in thread
From: Robert Jarzmik @ 2015-05-20 18:54 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Russell King, Jason Cooper,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Hans Ulli Kroll, Shawn Guo, Sascha Hauer, Roland Stigge,
	Tony Lindgren, Rajendra Nayak, Paul Walmsley, Daniel Mack,
	Haojian Zhuang

Jiang Liu <jiang.liu@linux.intel.com> writes:

> diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
> index 2897da2a5df6..0d8331f8536e 100644
> --- a/arch/arm/mach-pxa/pcm990-baseboard.c
> +++ b/arch/arm/mach-pxa/pcm990-baseboard.c
> @@ -287,6 +287,7 @@ static struct irq_chip pcm990_irq_chip = {
>  static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
That doesn't look good, double irq definition.

Cheers.

-- 
Robert

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 18:54     ` Robert Jarzmik
  0 siblings, 0 replies; 120+ messages in thread
From: Robert Jarzmik @ 2015-05-20 18:54 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Russell King, Jason Cooper,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Hans Ulli Kroll, Shawn Guo, Sascha Hauer, Roland Stigge,
	Tony Lindgren, Rajendra Nayak, Paul Walmsley, Daniel Mack,
	Haojian Zhuang, Kukjin Kim, Krzysztof Kozlowski, Arnd Bergmann,
	Konrad Rzeszutek Wilk, Tony Luck, x86, linux-kernel, linux-pci,
	linux-acpi, Russell King, linux-arm-kernel, linux-omap,
	linux-samsung-soc

Jiang Liu <jiang.liu@linux.intel.com> writes:

> diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
> index 2897da2a5df6..0d8331f8536e 100644
> --- a/arch/arm/mach-pxa/pcm990-baseboard.c
> +++ b/arch/arm/mach-pxa/pcm990-baseboard.c
> @@ -287,6 +287,7 @@ static struct irq_chip pcm990_irq_chip = {
>  static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
That doesn't look good, double irq definition.

Cheers.

-- 
Robert

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 15/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
@ 2015-05-20 18:54     ` Robert Jarzmik
  0 siblings, 0 replies; 120+ messages in thread
From: Robert Jarzmik @ 2015-05-20 18:54 UTC (permalink / raw)
  To: linux-arm-kernel

Jiang Liu <jiang.liu@linux.intel.com> writes:

> diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
> index 2897da2a5df6..0d8331f8536e 100644
> --- a/arch/arm/mach-pxa/pcm990-baseboard.c
> +++ b/arch/arm/mach-pxa/pcm990-baseboard.c
> @@ -287,6 +287,7 @@ static struct irq_chip pcm990_irq_chip = {
>  static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
>  	unsigned long pending;
> +	unsigned int irq;
That doesn't look good, double irq definition.

Cheers.

-- 
Robert

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 01/25] ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59   ` Jiang Liu
@ 2015-05-20 19:35     ` Russell King - ARM Linux
  -1 siblings, 0 replies; 120+ messages in thread
From: Russell King - ARM Linux @ 2015-05-20 19:35 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jason Cooper, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Konrad Rzeszutek Wilk,
	Tony Luck, x86, linux-kernel, linux-pci, linux-acpi,
	linux-arm-kernel

On Wed, May 20, 2015 at 05:59:49PM +0800, Jiang Liu wrote:
> diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
> index 5cc779c8e9c6..0d0844fa54c2 100644
> --- a/arch/arm/common/sa1111.c
> +++ b/arch/arm/common/sa1111.c
> @@ -200,7 +200,7 @@ static void
>  sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
>  	unsigned int stat0, stat1, i;
> -	struct sa1111 *sachip = irq_get_handler_data(irq);
> +	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
>  	void __iomem *mapbase = sachip->base + SA1111_INTC;
>  
>  	stat0 = sa1111_readl(mapbase + SA1111_INTSTATCLR0);

For this one only,

Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>

Other maintainers are responsible for the others...

Thanks.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 01/25] ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-05-20 19:35     ` Russell King - ARM Linux
  0 siblings, 0 replies; 120+ messages in thread
From: Russell King - ARM Linux @ 2015-05-20 19:35 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, May 20, 2015 at 05:59:49PM +0800, Jiang Liu wrote:
> diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
> index 5cc779c8e9c6..0d0844fa54c2 100644
> --- a/arch/arm/common/sa1111.c
> +++ b/arch/arm/common/sa1111.c
> @@ -200,7 +200,7 @@ static void
>  sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
>  	unsigned int stat0, stat1, i;
> -	struct sa1111 *sachip = irq_get_handler_data(irq);
> +	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
>  	void __iomem *mapbase = sachip->base + SA1111_INTC;
>  
>  	stat0 = sa1111_readl(mapbase + SA1111_INTSTATCLR0);

For this one only,

Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>

Other maintainers are responsible for the others...

Thanks.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 18:35       ` Thomas Gleixner
@ 2015-05-20 20:00         ` Julia Lawall
  2015-05-20 20:12           ` Thomas Gleixner
  2015-06-13  8:27         ` Julia Lawall
  2015-06-13  9:00         ` Julia Lawall
  2 siblings, 1 reply; 120+ messages in thread
From: Julia Lawall @ 2015-05-20 20:00 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86, LKML,
	linux-pci, linux-acpi, Julia Lawall



On Wed, 20 May 2015, Thomas Gleixner wrote:

> B1;2802;0cOn Wed, 20 May 2015, Jiang Liu wrote:
> > On 2015/5/20 23:25, Thomas Gleixner wrote:
> > > On Wed, 20 May 2015, Jiang Liu wrote:
> > >> --- a/include/linux/irqdesc.h
> > >> +++ b/include/linux/irqdesc.h
> > >> @@ -99,6 +99,11 @@ static inline struct irq_desc *irq_data_to_desc(struct irq_data *data)
> > >>  	return container_of(data->common, struct irq_desc, irq_common_data);
> > >>  }
> > >>
> > >> +static inline unsigned int irq_desc_get_irq(struct irq_desc *desc)
> > >> +{
> > >> +	return desc->irq_data.irq;
> > >> +}
> > >> +
> > >
> > > Does not apply either.
> > Hi Thomas,
> > 	Will check the base again.
> > 	Please do not apply patch after [14/25]. There are here to
> > ask for comments, there are still building issues with patch after
> > [14/25]. Just help to comment whether it's on the right direction.
> > If so, I will send another version for formal review.
>
> I think you are doing that conversion wrong. You should first change
> all handlers which use the irq argument to:
>
>     handler(unsigned __irq, *desc)
>
> and add the local variable
>
>     unsigned irq;
>
> or
>
>     unsigned irq = irq_desc_get_irq(desc);
>
> for those.
>
> So that results in a pretty small series of patches.
>
> Once that is done, you can remove the irq argument in one go treewide.
>
> And you should do that with scripting aid. Coccinelle is the proper
> tool for this. If you have problems with cocci, you can politely ask
> Julia (Cc'ed) for help. She's the master of coccinelle :)
>
> The purpose of the script is to:
>
>     1) Identify all handlers
>
>        This can be done by analyzing the arguments of
>
>        	    __irq_set_handler()
> 	    irq_set_handler()
> 	    irq_set_chained_handler()
> 	    irq_alloc_generic_chip()
> 	    irq_alloc_domain_generic_chips()
> 	    irq_set_chip_and_handler_name()
> 	    irq_set_chip_and_handler()
> 	    __irq_set_handler_locked()
> 	    __irq_set_chip_handler_name_locked()
> 	    __irq_set_preflow_handler()
>
> 	If the argument is a function local to the file step 2 can
> 	take place.
>
> 	If it's a extern function, then the script should at least
> 	print out the function names. Those are in most of the cases
> 	the generic flow handler functions.

Looks reasonable.

>     2) Check the handlers whether they use the irq argument
>
>        For those which do:
>
>           Check whether they just use the argument instead of a local
>        	  variable, i.e. the first usage is an assignment. In that
>        	  case rename the argument to __irq and add a local variable
>
> 	      unsigned int irq;
>
> 	  If they use the irq argument for some computation or as
>        	  argument to another function, then you need to rename the
>        	  argument as well and add:
>
>        	      unsigned int irq = irq_get_desc_irq(desc);

Scripting this may be a little complex, because the variable can be used
in one way in one execution path (eg if branch) and another way (or not at
all) in another.  Let me know if help is needed.

julia

> So this results in a series of patches which can be merged right
> away. If that lot has hit Linus tree and right after -rc1, we run the
> script again and find and fix stuff which got added throughout the
> merge window. That might result in 0 to n patches.
>
> The last step is another script which does:
>
>     1) Identify all handlers
>
>     2) Remove the irq argument
>
> We can send that right after -rc1 so no new users can trickle in.
>
> It's really important to do that with scripts. It seems you try to do
> it via compile testing. But that will fail as you CANNOT execute all
> possible config combinations.
>
> Thanks,
>
> 	tglx
>
>

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 20:00         ` Julia Lawall
@ 2015-05-20 20:12           ` Thomas Gleixner
  2015-05-20 20:15             ` Julia Lawall
  0 siblings, 1 reply; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 20:12 UTC (permalink / raw)
  To: Julia Lawall
  Cc: Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86, LKML,
	linux-pci, linux-acpi

On Wed, 20 May 2015, Julia Lawall wrote:
> On Wed, 20 May 2015, Thomas Gleixner wrote:
> > The purpose of the script is to:
> >
> >     1) Identify all handlers
> >
> >        This can be done by analyzing the arguments of
> >
> >        	    __irq_set_handler()
> > 	    irq_set_handler()
> > 	    irq_set_chained_handler()
> > 	    irq_alloc_generic_chip()
> > 	    irq_alloc_domain_generic_chips()
> > 	    irq_set_chip_and_handler_name()
> > 	    irq_set_chip_and_handler()
> > 	    __irq_set_handler_locked()
> > 	    __irq_set_chip_handler_name_locked()
> > 	    __irq_set_preflow_handler()
> >
> > 	If the argument is a function local to the file step 2 can
> > 	take place.
> >
> > 	If it's a extern function, then the script should at least
> > 	print out the function names. Those are in most of the cases
> > 	the generic flow handler functions.
> 
> Looks reasonable.

Good.
 
> >     2) Check the handlers whether they use the irq argument
> >
> >        For those which do:
> >
> >           Check whether they just use the argument instead of a local
> >        	  variable, i.e. the first usage is an assignment. In that
> >        	  case rename the argument to __irq and add a local variable
> >
> > 	      unsigned int irq;
> >
> > 	  If they use the irq argument for some computation or as
> >        	  argument to another function, then you need to rename the
> >        	  argument as well and add:
> >
> >        	      unsigned int irq = irq_get_desc_irq(desc);
> 
> Scripting this may be a little complex, because the variable can be used
> in one way in one execution path (eg if branch) and another way (or not at
> all) in another.  Let me know if help is needed.

I feared that, but at least identifying all functions, where the irq
argument is used inside the function itself is really key for such a
massive rework.

Thanks for responding so quick!

	tglx



^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 20:12           ` Thomas Gleixner
@ 2015-05-20 20:15             ` Julia Lawall
  2015-05-20 20:22               ` Thomas Gleixner
  0 siblings, 1 reply; 120+ messages in thread
From: Julia Lawall @ 2015-05-20 20:15 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Julia Lawall, Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jason Cooper, Kevin Cernekee,
	Arnd Bergmann, Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck,
	x86, LKML, linux-pci, linux-acpi



On Wed, 20 May 2015, Thomas Gleixner wrote:

> On Wed, 20 May 2015, Julia Lawall wrote:
> > On Wed, 20 May 2015, Thomas Gleixner wrote:
> > > The purpose of the script is to:
> > >
> > >     1) Identify all handlers
> > >
> > >        This can be done by analyzing the arguments of
> > >
> > >        	    __irq_set_handler()
> > > 	    irq_set_handler()
> > > 	    irq_set_chained_handler()
> > > 	    irq_alloc_generic_chip()
> > > 	    irq_alloc_domain_generic_chips()
> > > 	    irq_set_chip_and_handler_name()
> > > 	    irq_set_chip_and_handler()
> > > 	    __irq_set_handler_locked()
> > > 	    __irq_set_chip_handler_name_locked()
> > > 	    __irq_set_preflow_handler()
> > >
> > > 	If the argument is a function local to the file step 2 can
> > > 	take place.
> > >
> > > 	If it's a extern function, then the script should at least
> > > 	print out the function names. Those are in most of the cases
> > > 	the generic flow handler functions.
> >
> > Looks reasonable.
>
> Good.
>
> > >     2) Check the handlers whether they use the irq argument
> > >
> > >        For those which do:
> > >
> > >           Check whether they just use the argument instead of a local
> > >        	  variable, i.e. the first usage is an assignment. In that
> > >        	  case rename the argument to __irq and add a local variable
> > >
> > > 	      unsigned int irq;
> > >
> > > 	  If they use the irq argument for some computation or as
> > >        	  argument to another function, then you need to rename the
> > >        	  argument as well and add:
> > >
> > >        	      unsigned int irq = irq_get_desc_irq(desc);
> >
> > Scripting this may be a little complex, because the variable can be used
> > in one way in one execution path (eg if branch) and another way (or not at
> > all) in another.  Let me know if help is needed.
>
> I feared that, but at least identifying all functions, where the irq
> argument is used inside the function itself is really key for such a
> massive rework.

It's not impossible, but I may need to think a bit how best to do it.

julia

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 20:15             ` Julia Lawall
@ 2015-05-20 20:22               ` Thomas Gleixner
  2015-06-12 20:29                 ` Julia Lawall
  0 siblings, 1 reply; 120+ messages in thread
From: Thomas Gleixner @ 2015-05-20 20:22 UTC (permalink / raw)
  To: Julia Lawall
  Cc: Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86, LKML,
	linux-pci, linux-acpi

On Wed, 20 May 2015, Julia Lawall wrote:
> On Wed, 20 May 2015, Thomas Gleixner wrote:
> > On Wed, 20 May 2015, Julia Lawall wrote:
> > > Scripting this may be a little complex, because the variable can be used
> > > in one way in one execution path (eg if branch) and another way (or not at
> > > all) in another.  Let me know if help is needed.
> >
> > I feared that, but at least identifying all functions, where the irq
> > argument is used inside the function itself is really key for such a
> > massive rework.
> 
> It's not impossible, but I may need to think a bit how best to do it.

I pretty much expected that you would say that :)

But seriously, the first important thing is to find all functions and
to check whether they use irq internaly. Jiang has done that
'manually' or such, so the number of function which need an actual
change are not that big.

But I certainly don't want to hold you off thinking about it. Such
stuff is not a unique problem :)

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 05/25] gpio: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59   ` Jiang Liu
  (?)
@ 2015-06-01 12:45     ` Linus Walleij
  -1 siblings, 0 replies; 120+ messages in thread
From: Linus Walleij @ 2015-06-01 12:45 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Ray Jui, Alexandre Courbot,
	Javier Martinez Canillas, Santosh Shilimkar, Kevin Hilman,
	Stephen Warren, Thierry Reding, Michal Simek,
	Sören Brinkmann, Konrad Rzeszutek Wilk, Tony Luck, x86,
	linux-kernel@vger.kernel.org

On Wed, May 20, 2015 at 11:59 AM, Jiang Liu <jiang.liu@linux.intel.com> wrote:

> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.
>
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Are there dependencies on this patch or can I just apply it
directly to the GPIO tree?

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 05/25] gpio: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-06-01 12:45     ` Linus Walleij
  0 siblings, 0 replies; 120+ messages in thread
From: Linus Walleij @ 2015-06-01 12:45 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Ray Jui, Alexandre Courbot,
	Javier Martinez Canillas, Santosh Shilimkar, Kevin Hilman,
	Stephen Warren, Thierry Reding, Michal Simek,
	Sören Brinkmann, Konrad Rzeszutek Wilk, Tony Luck, x86,
	linux-kernel, linux-pci, ACPI Devel Maling List,
	bcm-kernel-feedback-list, linux-gpio, Linux-OMAP, linux-tegra,
	linux-arm-kernel

On Wed, May 20, 2015 at 11:59 AM, Jiang Liu <jiang.liu@linux.intel.com> wrote:

> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.
>
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Are there dependencies on this patch or can I just apply it
directly to the GPIO tree?

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 05/25] gpio: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-06-01 12:45     ` Linus Walleij
  0 siblings, 0 replies; 120+ messages in thread
From: Linus Walleij @ 2015-06-01 12:45 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, May 20, 2015 at 11:59 AM, Jiang Liu <jiang.liu@linux.intel.com> wrote:

> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.
>
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Are there dependencies on this patch or can I just apply it
directly to the GPIO tree?

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 06/25] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59   ` Jiang Liu
@ 2015-06-01 12:46     ` Linus Walleij
  -1 siblings, 0 replies; 120+ messages in thread
From: Linus Walleij @ 2015-06-01 12:46 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Krzysztof Kozlowski, Heikki Krogerus, Heiko Stuebner,
	Benjamin Herrenschmidt, Tomasz Figa, linux-kernel, Bjorn Helgaas,
	Maoguang Meng, H. Peter Anvin, kernel, linux-samsung-soc,
	Axel Lin, open list:ARM/Rockchip SoC...,
	Hongzhou Yang, Yinghai Lu, x86, ACPI Devel Maling List,
	Chen-Yu Tsai, Ingo Molnar, Thomas Abraham, Bjorn Andersson

On Wed, May 20, 2015 at 11:59 AM, Jiang Liu <jiang.liu@linux.intel.com> wrote:

> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.
>
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Are there dependencies on this patch or can I just apply it
directly to the GPIO tree?

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 06/25] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-06-01 12:46     ` Linus Walleij
  0 siblings, 0 replies; 120+ messages in thread
From: Linus Walleij @ 2015-06-01 12:46 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, May 20, 2015 at 11:59 AM, Jiang Liu <jiang.liu@linux.intel.com> wrote:

> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.
>
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Are there dependencies on this patch or can I just apply it
directly to the GPIO tree?

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 05/25] gpio: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-06-01 12:45     ` Linus Walleij
  (?)
@ 2015-06-01 13:48       ` Jiang Liu
  -1 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-06-01 13:48 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Ray Jui, Alexandre Courbot,
	Javier Martinez Canillas, Santosh Shilimkar, Kevin Hilman,
	Stephen Warren, Thierry Reding, Michal Simek,
	Sören Brinkmann, Konrad Rzeszutek Wilk, Tony Luck, x86,
	linux-kernel@vger.kernel.org

On 2015/6/1 20:45, Linus Walleij wrote:
> On Wed, May 20, 2015 at 11:59 AM, Jiang Liu <jiang.liu@linux.intel.com> wrote:
> 
>> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
>> already have a pointer to corresponding irq_desc.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> 
> Acked-by: Linus Walleij <linus.walleij@linaro.org>
> 
> Are there dependencies on this patch or can I just apply it
> directly to the GPIO tree?
Hi Linus,
	Thanks for review.
	There's a very long dependency list of this patch set,
so it would be safer to merge this patch set altogether through
the irq tree if that works:)
Thanks!
Gerry

> 
> Yours,
> Linus Walleij
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 05/25] gpio: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-06-01 13:48       ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-06-01 13:48 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Ray Jui, Alexandre Courbot,
	Javier Martinez Canillas, Santosh Shilimkar, Kevin Hilman,
	Stephen Warren, Thierry Reding, Michal Simek,
	Sören Brinkmann, Konrad Rzeszutek Wilk, Tony Luck, x86,
	linux-kernel, linux-pci, ACPI Devel Maling List,
	bcm-kernel-feedback-list, linux-gpio, Linux-OMAP, linux-tegra,
	linux-arm-kernel

On 2015/6/1 20:45, Linus Walleij wrote:
> On Wed, May 20, 2015 at 11:59 AM, Jiang Liu <jiang.liu@linux.intel.com> wrote:
> 
>> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
>> already have a pointer to corresponding irq_desc.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> 
> Acked-by: Linus Walleij <linus.walleij@linaro.org>
> 
> Are there dependencies on this patch or can I just apply it
> directly to the GPIO tree?
Hi Linus,
	Thanks for review.
	There's a very long dependency list of this patch set,
so it would be safer to merge this patch set altogether through
the irq tree if that works:)
Thanks!
Gerry

> 
> Yours,
> Linus Walleij
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* [RFC v1 05/25] gpio: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
@ 2015-06-01 13:48       ` Jiang Liu
  0 siblings, 0 replies; 120+ messages in thread
From: Jiang Liu @ 2015-06-01 13:48 UTC (permalink / raw)
  To: linux-arm-kernel

On 2015/6/1 20:45, Linus Walleij wrote:
> On Wed, May 20, 2015 at 11:59 AM, Jiang Liu <jiang.liu@linux.intel.com> wrote:
> 
>> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
>> already have a pointer to corresponding irq_desc.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> 
> Acked-by: Linus Walleij <linus.walleij@linaro.org>
> 
> Are there dependencies on this patch or can I just apply it
> directly to the GPIO tree?
Hi Linus,
	Thanks for review.
	There's a very long dependency list of this patch set,
so it would be safer to merge this patch set altogether through
the irq tree if that works:)
Thanks!
Gerry

> 
> Yours,
> Linus Walleij
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC, v1, 04/25] powerpc, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-05-20  9:59   ` Jiang Liu
  (?)
@ 2015-06-02  9:58   ` Michael Ellerman
  -1 siblings, 0 replies; 120+ messages in thread
From: Michael Ellerman @ 2015-06-02  9:58 UTC (permalink / raw)
  To: Jiang Liu; +Cc: linux-kernel, linuxppc-dev

On Wed, 2015-20-05 at 09:59:52 UTC, Jiang Liu wrote:
> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.
> 
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> ---
>  arch/powerpc/platforms/52xx/mpc52xx_gpt.c     |    2 +-
>  arch/powerpc/platforms/cell/axon_msi.c        |    2 +-
>  arch/powerpc/platforms/embedded6xx/hlwd-pic.c |    2 +-
>  arch/powerpc/sysdev/uic.c                     |    2 +-
>  arch/powerpc/sysdev/xics/xics-common.c        |    2 +-
>  5 files changed, 5 insertions(+), 5 deletions(-)

Applied thanks.

cheers

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 20:22               ` Thomas Gleixner
@ 2015-06-12 20:29                 ` Julia Lawall
  2015-06-12 20:35                   ` Thomas Gleixner
  0 siblings, 1 reply; 120+ messages in thread
From: Julia Lawall @ 2015-06-12 20:29 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Julia Lawall, Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jason Cooper, Kevin Cernekee,
	Arnd Bergmann, Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck,
	x86, LKML, linux-pci, linux-acpi



On Wed, 20 May 2015, Thomas Gleixner wrote:

> On Wed, 20 May 2015, Julia Lawall wrote:
> > On Wed, 20 May 2015, Thomas Gleixner wrote:
> > > On Wed, 20 May 2015, Julia Lawall wrote:
> > > > Scripting this may be a little complex, because the variable can be used
> > > > in one way in one execution path (eg if branch) and another way (or not at
> > > > all) in another.  Let me know if help is needed.
> > >
> > > I feared that, but at least identifying all functions, where the irq
> > > argument is used inside the function itself is really key for such a
> > > massive rework.
> > 
> > It's not impossible, but I may need to think a bit how best to do it.
> 
> I pretty much expected that you would say that :)
> 
> But seriously, the first important thing is to find all functions and
> to check whether they use irq internaly. Jiang has done that
> 'manually' or such, so the number of function which need an actual
> change are not that big.
> 
> But I certainly don't want to hold you off thinking about it. Such
> stuff is not a unique problem :)

What is the status of this?  I am close to having a semantic patch that 
works.  The current version touches 133 files, but I haven't checked all 
of them.  This includes both the local functions and the generic ones, but 
not the cases where the name of the handler function is a local variable 
or arbitrary expression.  This occurs in around 30 files.

julia

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-12 20:29                 ` Julia Lawall
@ 2015-06-12 20:35                   ` Thomas Gleixner
  2015-06-12 22:16                     ` Julia Lawall
  0 siblings, 1 reply; 120+ messages in thread
From: Thomas Gleixner @ 2015-06-12 20:35 UTC (permalink / raw)
  To: Julia Lawall
  Cc: Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86, LKML,
	linux-pci, linux-acpi

On Fri, 12 Jun 2015, Julia Lawall wrote:
> What is the status of this?  I am close to having a semantic patch that 
> works.  The current version touches 133 files, but I haven't checked all 
> of them.  This includes both the local functions and the generic ones, but 
> not the cases where the name of the handler function is a local variable 
> or arbitrary expression.  This occurs in around 30 files.

Jiang sent out a new patch series, but I'm really interested in doing
a fully automated check. If conversion is possible for some of them,
fine, but the checking part to find all the places where this needs to
be applied is the most important to me.

If you want, just send me that script and I'll give it a test ride.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-12 20:35                   ` Thomas Gleixner
@ 2015-06-12 22:16                     ` Julia Lawall
  0 siblings, 0 replies; 120+ messages in thread
From: Julia Lawall @ 2015-06-12 22:16 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Julia Lawall, Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jason Cooper, Kevin Cernekee,
	Arnd Bergmann, Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck,
	x86, LKML, linux-pci, linux-acpi

[-- Attachment #1: Type: TEXT/PLAIN, Size: 4256 bytes --]



On Fri, 12 Jun 2015, Thomas Gleixner wrote:

> On Fri, 12 Jun 2015, Julia Lawall wrote:
> > What is the status of this?  I am close to having a semantic patch that 
> > works.  The current version touches 133 files, but I haven't checked all 
> > of them.  This includes both the local functions and the generic ones, but 
> > not the cases where the name of the handler function is a local variable 
> > or arbitrary expression.  This occurs in around 30 files.
> 
> Jiang sent out a new patch series, but I'm really interested in doing
> a fully automated check. If conversion is possible for some of them,
> fine, but the checking part to find all the places where this needs to
> be applied is the most important to me.
> 
> If you want, just send me that script and I'll give it a test ride.

The results are attached.  The semantic patch is below.  This should be 
run with the argument --in-place.  You need to have ocaml installed.

julia

virtual after_start

@initialize:ocaml@
@@

let tbl = Hashtbl.create(100)
let ltbl = Hashtbl.create(100)

let add_if_not_present f p =
try let _ = Hashtbl.find tbl f in ()
with Not_found ->
   Hashtbl.add tbl f p;
   let it = new iteration() in
   it#add_virtual_rule After_start;
   it#add_virtual_identifier Hf f;
   it#register()

let local_add_if_not_present f file =
try let _ = Hashtbl.find ltbl (f,file) in ()
with Not_found ->
   Hashtbl.add ltbl (f,file) ();
   let it = new iteration() in
   it#set_files [file];
   it#add_virtual_rule After_start;
   it#add_virtual_identifier Hf f;
   it#register()

// ------------------------------------------------------------------------
// Getting started

@h depends on !after_start@
identifier ih != NULL;
local idexpression lih;
expression eh;
expression e1,e2,e3,e4,e5,e6,e7;
position p;
@@

(
__irq_set_handler@p(e1,\(lih\|ih\|eh\),e2,e3)
|
irq_set_handler@p(e1,\(lih\|ih\|eh\))
|
irq_set_chained_handler@p(e1,\(lih\|ih\|eh\))
|
irq_alloc_generic_chip@p(e1,e2,e3,\(lih\|ih\|eh\))
|
irq_alloc_domain_generic_chips@p(e1,e2,e3,e4,\(lih\|ih\|eh\),e5,e6,e7)
|
irq_set_chip_and_handler_name@p(e1,e2,\(lih\|ih\|eh\),e3)
|
irq_set_chip_and_handler@p(e1,e2,\(lih\|ih\|eh\))
|
__irq_set_handler_locked@p(e1,\(lih\|ih\|eh\))
|
__irq_set_chip_handler_name_locked@p(e1,e2,\(lih\|ih\|eh\),e3)
|
__irq_set_preflow_handler@p(e1,\(lih\|ih\|eh\))
)

@localfn@
identifier h.ih;
@@

ih(...) { ... }

@script:ocaml depends on !localfn@
p << h.p;
handler << h.ih;
@@

add_if_not_present handler p

@script:ocaml depends on localfn@
p << h.p;
handler << h.ih;
@@

local_add_if_not_present handler (List.hd p).file

@script:ocaml@
p << h.p;
handler << h.lih;
@@

Printf.eprintf "Local variable: %s:%d %s\n"
   ((List.hd p).file) ((List.hd p).line) handler

@script:ocaml@
p << h.p;
handler << h.eh;
@@

Printf.eprintf "Arbitrary expression: %s:%d %s\n"
   ((List.hd p).file) ((List.hd p).line) handler

// ------------------------------------------------------------------------
// Adjusting functions

@@
identifier virtual.hf,irq;
fresh identifier firq = "__" ## irq;
type T;
@@

hf(T 
- irq
+ firq
  ,...) {
  ... when != irq
      when strict
}

@s@
identifier virtual.hf,irq;
position p1;
type T;
@@

hf(T irq,...) {
  <...
  (irq@p1 = <+...irq...+>)
  ...>
}

@s1@
identifier virtual.hf,irq;
position p1;
expression e;
statement S;
type T;
@@

hf(T irq,...) {
  <...
  for(...; ...; <+...irq@p1 = e...+>) S
  ...>
}

// first parameter is assigned at least once
@r exists@
identifier virtual.hf,irq;
expression e;
type T;
position p,p1 != {s.p1,s1.p1};
@@

hf(T@p irq,...) {
  ... when != irq
      when strict
  irq@p1 = e
  ... when any
}

// no uses of the first parameter before the assignment
@@
identifier virtual.hf,irq;
expression e;
type T;
fresh identifier firq = "__" ## irq;
position r.p,p1 != {s.p1,s1.p1};
@@

hf(T@p 
- irq
+ firq
  ,...) {
  ... when != irq
      when strict
? irq@p1 = e
  ... when any
}

// first parameter is used somewhere
@rr exists@
identifier virtual.hf,irq;
type T;
position p;
@@

hf(T@p irq,...) {
  ...
  irq
  ... when any
}

@@
identifier virtual.hf,irq,desc;
fresh identifier firq = "__" ## irq;
type T,T1;
position rr.p;
@@

hf(T@p 
- irq
+ firq
  ,T1 desc) {
+ unsigned int irq = irq_get_desc_irq(desc);
  ... when any
}

[-- Attachment #2: Type: TEXT/PLAIN, Size: 87513 bytes --]

diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index b55c362..b539734 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -138,8 +138,9 @@ static struct locomo_dev_info locomo_devices[] = {
 	},
 };
 
-static void locomo_handler(unsigned int irq, struct irq_desc *desc)
+static void locomo_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct locomo *lchip = irq_get_chip_data(irq);
 	int req, i;
 
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 5cc779c..2a20afb 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -197,8 +197,9 @@ static struct sa1111_dev_info sa1111_devices[] = {
  * will call us again if there are more interrupts to process.
  */
 static void
-sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
+sa1111_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	unsigned int stat0, stat1, i;
 	struct sa1111 *sachip = irq_get_handler_data(irq);
 	void __iomem *mapbase = sachip->base + SA1111_INTC;
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
index 4a5a7ae..ed03f3a 100644
--- a/arch/arm/mach-dove/irq.c
+++ b/arch/arm/mach-dove/irq.c
@@ -69,8 +69,9 @@ static struct irq_chip pmu_irq_chip = {
 	.irq_ack	= pmu_irq_ack,
 };
 
-static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pmu_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	unsigned long cause = readl(PMU_INTERRUPT_CAUSE);
 
 	cause &= readl(PMU_INTERRUPT_MASK);
diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
index c3a0abb..a56a01e 100644
--- a/arch/arm/mach-footbridge/isa-irq.c
+++ b/arch/arm/mach-footbridge/isa-irq.c
@@ -88,7 +88,7 @@ static struct irq_chip isa_hi_chip = {
 };
 
 static void
-isa_irq_handler(unsigned int irq, struct irq_desc *desc)
+isa_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
 
diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c
index f8cb571..d892910 100644
--- a/arch/arm/mach-gemini/gpio.c
+++ b/arch/arm/mach-gemini/gpio.c
@@ -126,7 +126,7 @@ static int gpio_set_irq_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int port = (unsigned int)irq_desc_get_handler_data(desc);
 	unsigned int gpio_irq_no, irq_stat;
diff --git a/arch/arm/mach-imx/3ds_debugboard.c b/arch/arm/mach-imx/3ds_debugboard.c
index 1343773..53cb12b 100644
--- a/arch/arm/mach-imx/3ds_debugboard.c
+++ b/arch/arm/mach-imx/3ds_debugboard.c
@@ -85,7 +85,7 @@ static struct platform_device smsc_lan9217_device = {
 	.resource = smsc911x_resources,
 };
 
-static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mxc_expio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c
index d08c37c..a88978b 100644
--- a/arch/arm/mach-imx/mach-mx31ads.c
+++ b/arch/arm/mach-imx/mach-mx31ads.c
@@ -154,7 +154,7 @@ static inline void mxc_init_imx_uart(void)
 	imx31_add_imx_uart0(&uart_pdata);
 }
 
-static void mx31ads_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx31ads_expio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
diff --git a/arch/arm/mach-iop13xx/msi.c b/arch/arm/mach-iop13xx/msi.c
index 9f89e76..c7d5f97 100644
--- a/arch/arm/mach-iop13xx/msi.c
+++ b/arch/arm/mach-iop13xx/msi.c
@@ -91,7 +91,7 @@ static void (*write_imipr[])(u32) = {
 	write_imipr_3,
 };
 
-static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc)
+static void iop13xx_msi_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	int i, j;
 	unsigned long status;
diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c
index 9ecb8f9..c468903 100644
--- a/arch/arm/mach-lpc32xx/irq.c
+++ b/arch/arm/mach-lpc32xx/irq.c
@@ -370,7 +370,7 @@ static struct irq_chip lpc32xx_irq_chip = {
 	.irq_set_wake = lpc32xx_irq_wake
 };
 
-static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic1_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC1_BASE));
 
@@ -383,7 +383,7 @@ static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void lpc32xx_sic2_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic2_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC2_BASE));
 
diff --git a/arch/arm/mach-netx/generic.c b/arch/arm/mach-netx/generic.c
index db25b0c..6e85de6 100644
--- a/arch/arm/mach-netx/generic.c
+++ b/arch/arm/mach-netx/generic.c
@@ -70,7 +70,7 @@ static struct platform_device *devices[] __initdata = {
 #endif
 
 static void
-netx_hif_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
+netx_hif_demux_handler(unsigned int __irq_unused, struct irq_desc *desc)
 {
 	unsigned int irq = NETX_IRQ_HIF_CHAINED(0);
 	unsigned int stat;
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c
index 3c0e422..ddb4422 100644
--- a/arch/arm/mach-omap1/fpga.c
+++ b/arch/arm/mach-omap1/fpga.c
@@ -87,7 +87,8 @@ static void fpga_mask_ack_irq(struct irq_data *d)
 	fpga_ack_irq(d);
 }
 
-static void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)
+static void innovator_fpga_IRQ_demux(unsigned int __irq,
+				     struct irq_desc *desc)
 {
 	u32 stat;
 	int fpga_irq;
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
index 7add799..3fd58bf 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -102,7 +102,7 @@ static void omap_prcm_events_filter_priority(unsigned long *events,
  * dispatched accordingly. Clearing of the wakeup events should be
  * done by the SoC specific individual handlers.
  */
-static void omap_prcm_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void omap_prcm_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending[OMAP_PRCM_MAX_NR_PENDING_REG];
 	unsigned long priority_pending[OMAP_PRCM_MAX_NR_PENDING_REG];
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
index d897292..6c571e9 100644
--- a/arch/arm/mach-pxa/balloon3.c
+++ b/arch/arm/mach-pxa/balloon3.c
@@ -496,7 +496,7 @@ static struct irq_chip balloon3_irq_chip = {
 	.irq_unmask	= balloon3_unmask_irq,
 };
 
-static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void balloon3_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
 					balloon3_irq_enabled;
diff --git a/arch/arm/mach-pxa/cm-x2xx-pci.c b/arch/arm/mach-pxa/cm-x2xx-pci.c
index d8f816c..0cdd0c0 100644
--- a/arch/arm/mach-pxa/cm-x2xx-pci.c
+++ b/arch/arm/mach-pxa/cm-x2xx-pci.c
@@ -29,8 +29,9 @@
 void __iomem *it8152_base_address;
 static int cmx2xx_it8152_irq_gpio;
 
-static void cmx2xx_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void cmx2xx_it8152_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	/* clear our parent irq */
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
 
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index eaee2c2..1572072 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -120,7 +120,7 @@ static struct irq_chip lpd270_irq_chip = {
 	.irq_unmask	= lpd270_unmask_irq,
 };
 
-static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void lpd270_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
index 2897da2..988aeea 100644
--- a/arch/arm/mach-pxa/pcm990-baseboard.c
+++ b/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -284,7 +284,7 @@ static struct irq_chip pcm990_irq_chip = {
 	.irq_unmask	= pcm990_unmask_irq,
 };
 
-static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pcm990_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index de3b080..212ea2e 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -276,7 +276,7 @@ static inline unsigned long viper_irq_pending(void)
 			viper_irq_enabled_mask;
 }
 
-static void viper_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void viper_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index ac2ae5c..cc309c0 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -105,7 +105,7 @@ static inline unsigned long zeus_irq_pending(void)
 	return __raw_readw(ZEUS_CPLD_ISA_IRQ) & zeus_irq_enabled_mask;
 }
 
-static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void zeus_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
index fcb1d59..02dda52 100644
--- a/arch/arm/mach-rpc/ecard.c
+++ b/arch/arm/mach-rpc/ecard.c
@@ -552,7 +552,7 @@ static void ecard_check_lockup(struct irq_desc *desc)
 }
 
 static void
-ecard_irq_handler(unsigned int irq, struct irq_desc *desc)
+ecard_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	ecard_t *ec;
 	int called = 0;
diff --git a/arch/arm/mach-s3c24xx/bast-irq.c b/arch/arm/mach-s3c24xx/bast-irq.c
index cb1b791..f8e6b74 100644
--- a/arch/arm/mach-s3c24xx/bast-irq.c
+++ b/arch/arm/mach-s3c24xx/bast-irq.c
@@ -101,7 +101,7 @@ static struct irq_chip  bast_pc104_chip = {
 };
 
 static void
-bast_irq_pc104_demux(unsigned int irq,
+bast_irq_pc104_demux(unsigned int __irq,
 		     struct irq_desc *desc)
 {
 	unsigned int stat;
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
index 16547f2..31dd6df 100644
--- a/arch/arm/mach-s3c64xx/common.c
+++ b/arch/arm/mach-s3c64xx/common.c
@@ -389,22 +389,22 @@ static inline void s3c_irq_demux_eint(unsigned int start, unsigned int end)
 	}
 }
 
-static void s3c_irq_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint0_3(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(0, 3);
 }
 
-static void s3c_irq_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint4_11(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(4, 11);
 }
 
-static void s3c_irq_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint12_19(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(12, 19);
 }
 
-static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint20_27(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(20, 27);
 }
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
index af868d2..0958a55 100644
--- a/arch/arm/mach-sa1100/neponset.c
+++ b/arch/arm/mach-sa1100/neponset.c
@@ -166,7 +166,7 @@ static struct sa1100_port_fns neponset_port_fns = {
  * ensure that the IRQ signal is deasserted before returning.  This
  * is rather unfortunate.
  */
-static void neponset_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void neponset_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct neponset_drvdata *d = irq_desc_get_handler_data(desc);
 	unsigned int irr;
diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
index 5168a52..8fbe73e 100644
--- a/arch/arm/plat-orion/gpio.c
+++ b/arch/arm/plat-orion/gpio.c
@@ -407,8 +407,9 @@ static int gpio_irq_set_type(struct irq_data *d, u32 type)
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct orion_gpio_chip *ochip = irq_get_handler_data(irq);
 	u32 cause, type;
 	int i;
diff --git a/arch/avr32/mach-at32ap/extint.c b/arch/avr32/mach-at32ap/extint.c
index cfb298d..1b5a1d2 100644
--- a/arch/avr32/mach-at32ap/extint.c
+++ b/arch/avr32/mach-at32ap/extint.c
@@ -144,7 +144,7 @@ static struct irq_chip eic_chip = {
 	.irq_set_type	= eic_set_irq_type,
 };
 
-static void demux_eic_irq(unsigned int irq, struct irq_desc *desc)
+static void demux_eic_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	struct eic *eic = irq_desc_get_handler_data(desc);
 	unsigned long status, pending;
diff --git a/arch/avr32/mach-at32ap/pio.c b/arch/avr32/mach-at32ap/pio.c
index 903c7d8..0d3b337 100644
--- a/arch/avr32/mach-at32ap/pio.c
+++ b/arch/avr32/mach-at32ap/pio.c
@@ -281,8 +281,9 @@ static struct irq_chip gpio_irqchip = {
 	.irq_set_type	= gpio_irq_type,
 };
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct pio_device	*pio = irq_desc_get_chip_data(desc);
 	unsigned		gpio_irq;
 
diff --git a/arch/blackfin/mach-bf537/ints-priority.c b/arch/blackfin/mach-bf537/ints-priority.c
index 2137a20..cc66777 100644
--- a/arch/blackfin/mach-bf537/ints-priority.c
+++ b/arch/blackfin/mach-bf537/ints-priority.c
@@ -89,7 +89,7 @@ static struct irq_chip bf537_generic_error_irqchip = {
 	.irq_unmask = bf537_generic_error_unmask_irq,
 };
 
-static void bf537_demux_error_irq(unsigned int int_err_irq,
+static void bf537_demux_error_irq(unsigned int __int_err_irq,
 				  struct irq_desc *inta_desc)
 {
 	int irq = 0;
@@ -182,9 +182,10 @@ static struct irq_chip bf537_mac_rx_irqchip = {
 	.irq_unmask = bf537_mac_rx_unmask_irq,
 };
 
-static void bf537_demux_mac_rx_irq(unsigned int int_irq,
+static void bf537_demux_mac_rx_irq(unsigned int __int_irq,
 				   struct irq_desc *desc)
 {
+	unsigned int int_irq = irq_get_desc_irq(desc);
 	if (bfin_read_DMA1_IRQ_STATUS() & (DMA_DONE | DMA_ERR))
 		bfin_handle_irq(IRQ_MAC_RX);
 	else
diff --git a/arch/blackfin/mach-common/ints-priority.c b/arch/blackfin/mach-common/ints-priority.c
index 7236bdf..3ef745f 100644
--- a/arch/blackfin/mach-common/ints-priority.c
+++ b/arch/blackfin/mach-common/ints-priority.c
@@ -655,7 +655,7 @@ static struct irq_chip bfin_mac_status_irqchip = {
 	.irq_set_wake = bfin_mac_status_set_wake,
 };
 
-void bfin_demux_mac_status_irq(unsigned int int_err_irq,
+void bfin_demux_mac_status_irq(unsigned int ____int_err_irq,
 			       struct irq_desc *inta_desc)
 {
 	int i, irq = 0;
@@ -824,9 +824,10 @@ static void bfin_demux_gpio_block(unsigned int irq)
 	}
 }
 
-void bfin_demux_gpio_irq(unsigned int inta_irq,
-			struct irq_desc *desc)
+void bfin_demux_gpio_irq(unsigned int __inta_irq,
+			 struct irq_desc *desc)
 {
+	unsigned int inta_irq = irq_get_desc_irq(desc);
 	unsigned int irq;
 
 	switch (inta_irq) {
diff --git a/arch/c6x/platforms/megamod-pic.c b/arch/c6x/platforms/megamod-pic.c
index 74e3371..79d8196 100644
--- a/arch/c6x/platforms/megamod-pic.c
+++ b/arch/c6x/platforms/megamod-pic.c
@@ -93,7 +93,7 @@ static struct irq_chip megamod_chip = {
 	.irq_unmask	= unmask_megamod,
 };
 
-static void megamod_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void megamod_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct megamod_cascade_data *cascade;
 	struct megamod_pic *pic;
diff --git a/arch/m68k/amiga/amiints.c b/arch/m68k/amiga/amiints.c
index 47b5f90..8ee2ad4 100644
--- a/arch/m68k/amiga/amiints.c
+++ b/arch/m68k/amiga/amiints.c
@@ -46,7 +46,7 @@ static struct irq_chip amiga_irq_chip = {
  * The builtin Amiga hardware interrupt handlers.
  */
 
-static void ami_int1(unsigned int irq, struct irq_desc *desc)
+static void ami_int1(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -69,7 +69,7 @@ static void ami_int1(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int3(unsigned int irq, struct irq_desc *desc)
+static void ami_int3(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -92,7 +92,7 @@ static void ami_int3(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int4(unsigned int irq, struct irq_desc *desc)
+static void ami_int4(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -121,7 +121,7 @@ static void ami_int4(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int5(unsigned int irq, struct irq_desc *desc)
+static void ami_int5(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
diff --git a/arch/m68k/coldfire/intc-5272.c b/arch/m68k/coldfire/intc-5272.c
index d1e2fba..b7fe2cf 100644
--- a/arch/m68k/coldfire/intc-5272.c
+++ b/arch/m68k/coldfire/intc-5272.c
@@ -143,8 +143,9 @@ static int intc_irq_set_type(struct irq_data *d, unsigned int type)
  * We need to be careful with the masking/acking due to the side effects
  * of masking an interrupt.
  */
-static void intc_external_irq(unsigned int irq, struct irq_desc *desc)
+static void intc_external_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	irq_desc_get_chip(desc)->irq_ack(&desc->irq_data);
 	handle_simple_irq(irq, desc);
 }
diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c
index 3fe0e43..f2bc069 100644
--- a/arch/m68k/mac/baboon.c
+++ b/arch/m68k/mac/baboon.c
@@ -45,7 +45,7 @@ void __init baboon_init(void)
  * Baboon interrupt handler. This works a lot like a VIA.
  */
 
-static void baboon_irq(unsigned int irq, struct irq_desc *desc)
+static void baboon_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int irq_bit, irq_num;
 	unsigned char events;
diff --git a/arch/m68k/mac/oss.c b/arch/m68k/mac/oss.c
index bb11dce..6f27ca1 100644
--- a/arch/m68k/mac/oss.c
+++ b/arch/m68k/mac/oss.c
@@ -63,8 +63,9 @@ void __init oss_nubus_init(void)
  * Handle miscellaneous OSS interrupts.
  */
 
-static void oss_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	int events = oss->irq_pending &
 	             (OSS_IP_IOPSCC | OSS_IP_SCSI | OSS_IP_IOPISM);
 
@@ -97,7 +98,7 @@ static void oss_irq(unsigned int irq, struct irq_desc *desc)
  * Unlike the VIA/RBV this is on its own autovector interrupt level.
  */
 
-static void oss_nubus_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_nubus_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int events, irq_bit, i;
 
diff --git a/arch/m68k/mac/psc.c b/arch/m68k/mac/psc.c
index 835fa04..f9d3daa 100644
--- a/arch/m68k/mac/psc.c
+++ b/arch/m68k/mac/psc.c
@@ -113,8 +113,9 @@ void __init psc_init(void)
  * PSC interrupt handler. It's a lot like the VIA interrupt handler.
  */
 
-static void psc_irq(unsigned int irq, struct irq_desc *desc)
+static void psc_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	unsigned int offset = (unsigned int)irq_desc_get_handler_data(desc);
 	int pIFR	= pIFRbase + offset;
 	int pIER	= pIERbase + offset;
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c
index e198dec..163e430 100644
--- a/arch/m68k/mac/via.c
+++ b/arch/m68k/mac/via.c
@@ -446,7 +446,7 @@ void via_nubus_irq_shutdown(int irq)
  * via6522.c :-), disable/pending masks added.
  */
 
-void via1_irq(unsigned int irq, struct irq_desc *desc)
+void via1_irq(unsigned int ____irq, struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -467,7 +467,7 @@ void via1_irq(unsigned int irq, struct irq_desc *desc)
 	} while (events >= irq_bit);
 }
 
-static void via2_irq(unsigned int irq, struct irq_desc *desc)
+static void via2_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -493,7 +493,7 @@ static void via2_irq(unsigned int irq, struct irq_desc *desc)
  * VIA2 dispatcher as a fast interrupt handler.
  */
 
-void via_nubus_irq(unsigned int irq, struct irq_desc *desc)
+void via_nubus_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int slot_irq;
 	unsigned char slot_bit, events;
diff --git a/arch/mips/alchemy/common/irq.c b/arch/mips/alchemy/common/irq.c
index 6cb60ab..8c3f4f7 100644
--- a/arch/mips/alchemy/common/irq.c
+++ b/arch/mips/alchemy/common/irq.c
@@ -865,7 +865,7 @@ DISP(ic0r1, AU1000_INTC0_INT_BASE, AU1000_IC0_PHYS_ADDR + IC_REQ1INT)
 DISP(ic1r0, AU1000_INTC1_INT_BASE, AU1000_IC1_PHYS_ADDR + IC_REQ0INT)
 DISP(ic1r1, AU1000_INTC1_INT_BASE, AU1000_IC1_PHYS_ADDR + IC_REQ1INT)
 
-static void alchemy_gpic_dispatch(unsigned int irq, struct irq_desc *d)
+static void alchemy_gpic_dispatch(unsigned int __irq, struct irq_desc *d)
 {
 	int i = __raw_readl(AU1300_GPIC_ADDR + AU1300_GPIC_PRIENC);
 	generic_handle_irq(ALCHEMY_GPIC_INT_BASE + i);
diff --git a/arch/mips/alchemy/devboards/bcsr.c b/arch/mips/alchemy/devboards/bcsr.c
index c98c9ea..c5709aa 100644
--- a/arch/mips/alchemy/devboards/bcsr.c
+++ b/arch/mips/alchemy/devboards/bcsr.c
@@ -85,8 +85,9 @@ EXPORT_SYMBOL_GPL(bcsr_mod);
 /*
  * DB1200/PB1200 CPLD IRQ muxer
  */
-static void bcsr_csc_handler(unsigned int irq, struct irq_desc *d)
+static void bcsr_csc_handler(unsigned int __irq, struct irq_desc *d)
 {
+	unsigned int irq = irq_get_desc_irq(d);
 	unsigned short bisr = __raw_readw(bcsr_virt + BCSR_REG_INTSTAT);
 
 	disable_irq_nosync(irq);
diff --git a/arch/mips/ath25/ar2315.c b/arch/mips/ath25/ar2315.c
index 8742e1c..8373db8 100644
--- a/arch/mips/ath25/ar2315.c
+++ b/arch/mips/ath25/ar2315.c
@@ -69,7 +69,7 @@ static struct irqaction ar2315_ahb_err_interrupt  = {
 	.name		= "ar2315-ahb-error",
 };
 
-static void ar2315_misc_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar2315_misc_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	u32 pending = ar2315_rst_reg_read(AR2315_ISR) &
 		      ar2315_rst_reg_read(AR2315_IMR);
diff --git a/arch/mips/ath25/ar5312.c b/arch/mips/ath25/ar5312.c
index 094b938..f990afc 100644
--- a/arch/mips/ath25/ar5312.c
+++ b/arch/mips/ath25/ar5312.c
@@ -73,7 +73,7 @@ static struct irqaction ar5312_ahb_err_interrupt  = {
 	.name    = "ar5312-ahb-error",
 };
 
-static void ar5312_misc_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar5312_misc_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	u32 pending = ar5312_rst_reg_read(AR5312_ISR) &
 		      ar5312_rst_reg_read(AR5312_IMR);
diff --git a/arch/mips/ath79/irq.c b/arch/mips/ath79/irq.c
index afb0096..a53be4e 100644
--- a/arch/mips/ath79/irq.c
+++ b/arch/mips/ath79/irq.c
@@ -27,7 +27,7 @@
 #include "common.h"
 #include "machtypes.h"
 
-static void ath79_misc_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ath79_misc_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	void __iomem *base = ath79_reset_base;
 	u32 pending;
@@ -120,8 +120,9 @@ static void __init ath79_misc_irq_init(void)
 	irq_set_chained_handler(ATH79_CPU_IRQ(6), ath79_misc_irq_handler);
 }
 
-static void ar934x_ip2_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void ar934x_ip2_irq_dispatch(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	u32 status;
 
 	disable_irq_nosync(irq);
@@ -153,8 +154,10 @@ static void ar934x_ip2_irq_init(void)
 	irq_set_chained_handler(ATH79_CPU_IRQ(2), ar934x_ip2_irq_dispatch);
 }
 
-static void qca955x_ip2_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void qca955x_ip2_irq_dispatch(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	u32 status;
 
 	disable_irq_nosync(irq);
@@ -181,8 +184,10 @@ enable:
 	enable_irq(irq);
 }
 
-static void qca955x_ip3_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void qca955x_ip3_irq_dispatch(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	u32 status;
 
 	disable_irq_nosync(irq);
diff --git a/arch/mips/jz4740/gpio.c b/arch/mips/jz4740/gpio.c
index 54c80d4..b3b8d47 100644
--- a/arch/mips/jz4740/gpio.c
+++ b/arch/mips/jz4740/gpio.c
@@ -296,7 +296,8 @@ static void jz_gpio_check_trigger_both(struct jz_gpio_chip *chip, unsigned int i
 	writel(mask, reg);
 }
 
-static void jz_gpio_irq_demux_handler(unsigned int irq, struct irq_desc *desc)
+static void jz_gpio_irq_demux_handler(unsigned int __irq,
+				      struct irq_desc *desc)
 {
 	uint32_t flag;
 	unsigned int gpio_irq;
diff --git a/arch/mips/kernel/i8259.c b/arch/mips/kernel/i8259.c
index 74f6752..5b065e7 100644
--- a/arch/mips/kernel/i8259.c
+++ b/arch/mips/kernel/i8259.c
@@ -353,8 +353,9 @@ void __init init_i8259_irqs(void)
 	__init_i8259_irqs(NULL);
 }
 
-static void i8259_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void i8259_irq_dispatch(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_domain *domain = irq_get_handler_data(irq);
 	int hwirq = i8259_irq();
 
diff --git a/arch/mips/netlogic/common/smp.c b/arch/mips/netlogic/common/smp.c
index dc3e327..1515af3 100644
--- a/arch/mips/netlogic/common/smp.c
+++ b/arch/mips/netlogic/common/smp.c
@@ -82,8 +82,9 @@ void nlm_send_ipi_mask(const struct cpumask *mask, unsigned int action)
 }
 
 /* IRQ_IPI_SMP_FUNCTION Handler */
-void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc)
+void nlm_smp_function_ipi_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	clear_c0_eimr(irq);
 	ack_c0_eirr(irq);
 	smp_call_function_interrupt();
@@ -91,8 +92,9 @@ void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc)
 }
 
 /* IRQ_IPI_SMP_RESCHEDULE  handler */
-void nlm_smp_resched_ipi_handler(unsigned int irq, struct irq_desc *desc)
+void nlm_smp_resched_ipi_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	clear_c0_eimr(irq);
 	ack_c0_eirr(irq);
 	scheduler_ipi();
diff --git a/arch/mips/pci/pci-ar2315.c b/arch/mips/pci/pci-ar2315.c
index dadb303..999a56c 100644
--- a/arch/mips/pci/pci-ar2315.c
+++ b/arch/mips/pci/pci-ar2315.c
@@ -318,7 +318,7 @@ static int ar2315_pci_host_setup(struct ar2315_pci_ctrl *apc)
 	return 0;
 }
 
-static void ar2315_pci_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar2315_pci_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	struct ar2315_pci_ctrl *apc = irq_desc_get_handler_data(desc);
 	u32 pending = ar2315_pci_reg_read(apc, AR2315_PCI_ISR) &
diff --git a/arch/mips/pci/pci-ar71xx.c b/arch/mips/pci/pci-ar71xx.c
index 2dbc747..9c4c54c 100644
--- a/arch/mips/pci/pci-ar71xx.c
+++ b/arch/mips/pci/pci-ar71xx.c
@@ -226,7 +226,7 @@ static struct pci_ops ar71xx_pci_ops = {
 	.write	= ar71xx_pci_write_config,
 };
 
-static void ar71xx_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ar71xx_pci_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct ar71xx_pci_controller *apc;
 	void __iomem *base = ath79_reset_base;
diff --git a/arch/mips/pci/pci-ar724x.c b/arch/mips/pci/pci-ar724x.c
index 0af362b..223929c 100644
--- a/arch/mips/pci/pci-ar724x.c
+++ b/arch/mips/pci/pci-ar724x.c
@@ -225,7 +225,7 @@ static struct pci_ops ar724x_pci_ops = {
 	.write	= ar724x_pci_write,
 };
 
-static void ar724x_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ar724x_pci_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct ar724x_pci_controller *apc;
 	void __iomem *base;
diff --git a/arch/mips/pci/pci-rt3883.c b/arch/mips/pci/pci-rt3883.c
index 80fafe6..adaa2b8 100644
--- a/arch/mips/pci/pci-rt3883.c
+++ b/arch/mips/pci/pci-rt3883.c
@@ -129,7 +129,7 @@ static void rt3883_pci_write_cfg32(struct rt3883_pci_controller *rpc,
 	rt3883_pci_w32(rpc, val, RT3883_PCI_REG_CFGDATA);
 }
 
-static void rt3883_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void rt3883_pci_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct rt3883_pci_controller *rpc;
 	u32 pending;
diff --git a/arch/mips/ralink/irq.c b/arch/mips/ralink/irq.c
index da301e0..2fd1318 100644
--- a/arch/mips/ralink/irq.c
+++ b/arch/mips/ralink/irq.c
@@ -95,7 +95,7 @@ unsigned int get_c0_compare_int(void)
 	return CP0_LEGACY_COMPARE_IRQ;
 }
 
-static void ralink_intc_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ralink_intc_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	u32 pending = rt_intc_r32(INTC_REG_STATUS0);
 
diff --git a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
index ca3a062..ce8287c 100644
--- a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
+++ b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
@@ -105,7 +105,7 @@ cpld_pic_get_irq(int offset, u8 ignore, u8 __iomem *statusp,
 }
 
 static void
-cpld_pic_cascade(unsigned int irq, struct irq_desc *desc)
+cpld_pic_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	irq = cpld_pic_get_irq(0, PCI_IGNORE, &cpld_regs->pci_status,
 		&cpld_regs->pci_mask);
diff --git a/arch/powerpc/platforms/52xx/media5200.c b/arch/powerpc/platforms/52xx/media5200.c
index 32cae33..7736000 100644
--- a/arch/powerpc/platforms/52xx/media5200.c
+++ b/arch/powerpc/platforms/52xx/media5200.c
@@ -80,7 +80,7 @@ static struct irq_chip media5200_irq_chip = {
 	.irq_mask_ack = media5200_irq_mask,
 };
 
-void media5200_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void media5200_irq_cascade(unsigned int __virq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int sub_virq, val;
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
index 6301662..a5ba376 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
@@ -191,7 +191,7 @@ static struct irq_chip mpc52xx_gpt_irq_chip = {
 	.irq_set_type = mpc52xx_gpt_irq_set_type,
 };
 
-void mpc52xx_gpt_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void mpc52xx_gpt_irq_cascade(unsigned int __virq, struct irq_desc *desc)
 {
 	struct mpc52xx_gpt_priv *gpt = irq_desc_get_handler_data(desc);
 	int sub_virq;
diff --git a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
index 74861a7..fb42005 100644
--- a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
+++ b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
@@ -78,7 +78,7 @@ static struct irq_chip pq2ads_pci_ic = {
 	.irq_disable = pq2ads_pci_mask_irq
 };
 
-static void pq2ads_pci_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void pq2ads_pci_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pq2ads_pci_pic *priv = irq_desc_get_handler_data(desc);
 	u32 stat, mask, pend;
diff --git a/arch/powerpc/platforms/85xx/common.c b/arch/powerpc/platforms/85xx/common.c
index 7bfb9b1..1be093c 100644
--- a/arch/powerpc/platforms/85xx/common.c
+++ b/arch/powerpc/platforms/85xx/common.c
@@ -49,7 +49,7 @@ int __init mpc85xx_common_publish_devices(void)
 	return of_platform_bus_probe(NULL, mpc85xx_common_ids, NULL);
 }
 #ifdef CONFIG_CPM2
-static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm2_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq;
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
index b0753e2..ed1182b 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -192,9 +192,10 @@ void mpc85xx_cds_fixup_bus(struct pci_bus *bus)
 }
 
 #ifdef CONFIG_PPC_I8259
-static void mpc85xx_8259_cascade_handler(unsigned int irq,
+static void mpc85xx_8259_cascade_handler(unsigned int __irq,
 					 struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	unsigned int cascade_irq = i8259_irq();
 
 	if (cascade_irq != NO_IRQ)
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index ffdf021..29799fa 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -46,7 +46,7 @@
 #endif
 
 #ifdef CONFIG_PPC_I8259
-static void mpc85xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc85xx_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
index 55a9682..c2e3de1 100644
--- a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
+++ b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
@@ -91,8 +91,9 @@ static inline unsigned int socrates_fpga_pic_get_irq(unsigned int irq)
 			(irq_hw_number_t)i);
 }
 
-void socrates_fpga_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void socrates_fpga_pic_cascade(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
 
diff --git a/arch/powerpc/platforms/86xx/pic.c b/arch/powerpc/platforms/86xx/pic.c
index d5b98c0..494df58 100644
--- a/arch/powerpc/platforms/86xx/pic.c
+++ b/arch/powerpc/platforms/86xx/pic.c
@@ -17,7 +17,7 @@
 #include <asm/i8259.h>
 
 #ifdef CONFIG_PPC_I8259
-static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc86xx_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/8xx/m8xx_setup.c b/arch/powerpc/platforms/8xx/m8xx_setup.c
index d303774..d0e5597 100644
--- a/arch/powerpc/platforms/8xx/m8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/m8xx_setup.c
@@ -214,7 +214,7 @@ void mpc8xx_restart(char *cmd)
 	panic("Restart failed\n");
 }
 
-static void cpm_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq = cpm_get_irq();
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c
index fe51de4..23b3ce3 100644
--- a/arch/powerpc/platforms/cell/axon_msi.c
+++ b/arch/powerpc/platforms/cell/axon_msi.c
@@ -93,7 +93,7 @@ static void msic_dcr_write(struct axon_msic *msic, unsigned int dcr_n, u32 val)
 	dcr_write(msic->dcr_host, dcr_n, val);
 }
 
-static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
+static void axon_msi_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct axon_msic *msic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/interrupt.c b/arch/powerpc/platforms/cell/interrupt.c
index 3af8324..018ca73 100644
--- a/arch/powerpc/platforms/cell/interrupt.c
+++ b/arch/powerpc/platforms/cell/interrupt.c
@@ -99,8 +99,9 @@ static void iic_ioexc_eoi(struct irq_data *d)
 {
 }
 
-static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc)
+static void iic_ioexc_cascade(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct cbe_iic_regs __iomem *node_iic =
 		(void __iomem *)irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/spider-pic.c b/arch/powerpc/platforms/cell/spider-pic.c
index 1f72f4a..f3622c5 100644
--- a/arch/powerpc/platforms/cell/spider-pic.c
+++ b/arch/powerpc/platforms/cell/spider-pic.c
@@ -199,7 +199,7 @@ static const struct irq_domain_ops spider_host_ops = {
 	.xlate = spider_host_xlate,
 };
 
-static void spider_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void spider_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct spider_pic *pic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
index 15ebc4e..fcea134 100644
--- a/arch/powerpc/platforms/chrp/setup.c
+++ b/arch/powerpc/platforms/chrp/setup.c
@@ -363,7 +363,7 @@ void __init chrp_setup_arch(void)
 	if (ppc_md.progress) ppc_md.progress("Linux/PPC "UTS_RELEASE"\n", 0x0);
 }
 
-static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void chrp_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
index 9dd154d..55ee2f4 100644
--- a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
+++ b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
@@ -120,7 +120,7 @@ static unsigned int __hlwd_pic_get_irq(struct irq_domain *h)
 	return irq_linear_revmap(h, irq);
 }
 
-static void hlwd_pic_irq_cascade(unsigned int cascade_virq,
+static void hlwd_pic_irq_cascade(unsigned int __cascade_virq,
 				      struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/arch/powerpc/platforms/embedded6xx/mvme5100.c b/arch/powerpc/platforms/embedded6xx/mvme5100.c
index 1613303..b9240fd 100644
--- a/arch/powerpc/platforms/embedded6xx/mvme5100.c
+++ b/arch/powerpc/platforms/embedded6xx/mvme5100.c
@@ -42,7 +42,7 @@
 static phys_addr_t pci_membase;
 static u_char *restart;
 
-static void mvme5100_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mvme5100_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index df6a704..3395706 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -111,7 +111,7 @@ static void __init fwnmi_init(void)
 		fwnmi_active = 1;
 }
 
-static void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void pseries_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/sysdev/ge/ge_pic.c b/arch/powerpc/sysdev/ge/ge_pic.c
index 2bcb78b..78c5767 100644
--- a/arch/powerpc/sysdev/ge/ge_pic.c
+++ b/arch/powerpc/sysdev/ge/ge_pic.c
@@ -91,7 +91,7 @@ static int gef_pic_cascade_irq;
  * should be masked out.
  */
 
-void gef_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void gef_pic_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c
index 57b5447..62c9d44 100644
--- a/arch/powerpc/sysdev/tsi108_pci.c
+++ b/arch/powerpc/sysdev/tsi108_pci.c
@@ -428,7 +428,7 @@ void __init tsi108_pci_int_init(struct device_node *node)
 	init_pci_source();
 }
 
-void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc)
+void tsi108_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = get_pci_source();
diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
index d773453..e027f8a 100644
--- a/arch/powerpc/sysdev/uic.c
+++ b/arch/powerpc/sysdev/uic.c
@@ -194,7 +194,7 @@ static const struct irq_domain_ops uic_host_ops = {
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-void uic_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void uic_irq_cascade(unsigned int __virq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_data *idata = irq_desc_get_irq_data(desc);
diff --git a/arch/powerpc/sysdev/xilinx_intc.c b/arch/powerpc/sysdev/xilinx_intc.c
index 43b8b27..71d19d0 100644
--- a/arch/powerpc/sysdev/xilinx_intc.c
+++ b/arch/powerpc/sysdev/xilinx_intc.c
@@ -222,7 +222,7 @@ int xilinx_intc_get_irq(void)
 /*
  * Support code for cascading to 8259 interrupt controllers
  */
-static void xilinx_i8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void xilinx_i8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/sh/boards/mach-se/7343/irq.c b/arch/sh/boards/mach-se/7343/irq.c
index 1087dba..0c7ee39 100644
--- a/arch/sh/boards/mach-se/7343/irq.c
+++ b/arch/sh/boards/mach-se/7343/irq.c
@@ -29,8 +29,9 @@
 static void __iomem *se7343_irq_regs;
 struct irq_domain *se7343_irq_domain;
 
-static void se7343_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7343_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
diff --git a/arch/sh/boards/mach-se/7722/irq.c b/arch/sh/boards/mach-se/7722/irq.c
index 00e6992..6f1e971 100644
--- a/arch/sh/boards/mach-se/7722/irq.c
+++ b/arch/sh/boards/mach-se/7722/irq.c
@@ -28,8 +28,9 @@
 static void __iomem *se7722_irq_regs;
 struct irq_domain *se7722_irq_domain;
 
-static void se7722_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7722_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
diff --git a/arch/sh/boards/mach-se/7724/irq.c b/arch/sh/boards/mach-se/7724/irq.c
index 5d1d3ec..3b2e915 100644
--- a/arch/sh/boards/mach-se/7724/irq.c
+++ b/arch/sh/boards/mach-se/7724/irq.c
@@ -92,8 +92,9 @@ static struct irq_chip se7724_irq_chip __read_mostly = {
 	.irq_unmask	= enable_se7724_irq,
 };
 
-static void se7724_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7724_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct fpga_irq set = get_fpga_irq(irq);
 	unsigned short intv = __raw_readw(set.sraddr);
 	unsigned int ext_irq = set.base;
diff --git a/arch/sh/boards/mach-x3proto/gpio.c b/arch/sh/boards/mach-x3proto/gpio.c
index f035a7a..e29170e 100644
--- a/arch/sh/boards/mach-x3proto/gpio.c
+++ b/arch/sh/boards/mach-x3proto/gpio.c
@@ -60,8 +60,10 @@ static int x3proto_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
 	return virq;
 }
 
-static void x3proto_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void x3proto_gpio_irq_handler(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
diff --git a/arch/sh/cchips/hd6446x/hd64461.c b/arch/sh/cchips/hd6446x/hd64461.c
index e973561..e14095b 100644
--- a/arch/sh/cchips/hd6446x/hd64461.c
+++ b/arch/sh/cchips/hd6446x/hd64461.c
@@ -56,7 +56,7 @@ static struct irq_chip hd64461_irq_chip = {
 	.irq_unmask	= hd64461_unmask_irq,
 };
 
-static void hd64461_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void hd64461_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short intv = __raw_readw(HD64461_NIRR);
 	unsigned int ext_irq = HD64461_IRQBASE;
diff --git a/arch/tile/kernel/pci_gx.c b/arch/tile/kernel/pci_gx.c
index b1df847..0f2c758 100644
--- a/arch/tile/kernel/pci_gx.c
+++ b/arch/tile/kernel/pci_gx.c
@@ -304,8 +304,9 @@ static struct irq_chip tilegx_legacy_irq_chip = {
  * to Linux which just calls handle_level_irq() after clearing the
  * MAC INTx Assert status bit associated with this interrupt.
  */
-static void trio_handle_level_irq(unsigned int irq, struct irq_desc *desc)
+static void trio_handle_level_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct pci_controller *controller = irq_desc_get_handler_data(desc);
 	gxio_trio_context_t *trio_context = controller->trio;
 	uint64_t intx = (uint64_t)irq_desc_get_chip_data(desc);
diff --git a/arch/unicore32/kernel/irq.c b/arch/unicore32/kernel/irq.c
index 0be5ccd..625d427 100644
--- a/arch/unicore32/kernel/irq.c
+++ b/arch/unicore32/kernel/irq.c
@@ -113,7 +113,7 @@ static struct irq_chip puv3_low_gpio_chip = {
  * and call the handler.
  */
 static void
-puv3_gpio_handler(unsigned int irq, struct irq_desc *desc)
+puv3_gpio_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int mask;
 
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
index f2dc08c..bc45c0e 100644
--- a/arch/x86/lguest/boot.c
+++ b/arch/x86/lguest/boot.c
@@ -1021,7 +1021,7 @@ static struct clock_event_device lguest_clockevent = {
  * This is the Guest timer interrupt handler (hardware interrupt 0).  We just
  * call the clockevent infrastructure and it does whatever needs doing.
  */
-static void lguest_time_irq(unsigned int irq, struct irq_desc *desc)
+static void lguest_time_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long flags;
 
diff --git a/drivers/dma/ipu/ipu_irq.c b/drivers/dma/ipu/ipu_irq.c
index 2e284a4..df8798b 100644
--- a/drivers/dma/ipu/ipu_irq.c
+++ b/drivers/dma/ipu/ipu_irq.c
@@ -266,8 +266,9 @@ int ipu_irq_unmap(unsigned int source)
 }
 
 /* Chained IRQ handler for IPU error interrupt */
-static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_err(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct ipu *ipu = irq_get_handler_data(irq);
 	u32 status;
 	int i, line;
@@ -307,8 +308,9 @@ static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
 }
 
 /* Chained IRQ handler for IPU function interrupt */
-static void ipu_irq_fn(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_fn(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct ipu *ipu = irq_desc_get_handler_data(desc);
 	u32 status;
 	int i, line;
diff --git a/drivers/gpio/gpio-bcm-kona.c b/drivers/gpio/gpio-bcm-kona.c
index 8333f87..21132bb 100644
--- a/drivers/gpio/gpio-bcm-kona.c
+++ b/drivers/gpio/gpio-bcm-kona.c
@@ -433,8 +433,10 @@ static int bcm_kona_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void bcm_kona_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void bcm_kona_gpio_irq_handler(unsigned int __irq,
+				      struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	void __iomem *reg_base;
 	int bit, bank_id;
 	unsigned long sta;
diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index c5e05c8..b6958b7 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -327,8 +327,9 @@ static struct irq_chip gpio_irqchip = {
 };
 
 static void
-gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct davinci_gpio_regs __iomem *g;
 	u32 mask = 0xffff;
 	struct davinci_gpio_controller *d;
diff --git a/drivers/gpio/gpio-dwapb.c b/drivers/gpio/gpio-dwapb.c
index 58faf04..c655ad8 100644
--- a/drivers/gpio/gpio-dwapb.c
+++ b/drivers/gpio/gpio-dwapb.c
@@ -147,8 +147,9 @@ static u32 dwapb_do_irq(struct dwapb_gpio *gpio)
 	return ret;
 }
 
-static void dwapb_irq_handler(u32 irq, struct irq_desc *desc)
+static void dwapb_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct dwapb_gpio *gpio = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
diff --git a/drivers/gpio/gpio-ep93xx.c b/drivers/gpio/gpio-ep93xx.c
index 45684f3..610d45f 100644
--- a/drivers/gpio/gpio-ep93xx.c
+++ b/drivers/gpio/gpio-ep93xx.c
@@ -78,7 +78,8 @@ static void ep93xx_gpio_int_debounce(unsigned int irq, bool enable)
 		EP93XX_GPIO_REG(int_debounce_register_offset[port]));
 }
 
-static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ep93xx_gpio_ab_irq_handler(unsigned int __irq,
+				       struct irq_desc *desc)
 {
 	unsigned char status;
 	int i;
@@ -100,8 +101,10 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ep93xx_gpio_f_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ep93xx_gpio_f_irq_handler(unsigned int __irq,
+				      struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	/*
 	 * map discontiguous hw irq range to continuous sw irq range:
 	 *
diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c
index 20aa66f..24321ca 100644
--- a/drivers/gpio/gpio-mpc8xxx.c
+++ b/drivers/gpio/gpio-mpc8xxx.c
@@ -185,7 +185,8 @@ static int mpc8xxx_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
 		return -ENXIO;
 }
 
-static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc8xxx_gpio_irq_cascade(unsigned int __irq,
+				     struct irq_desc *desc)
 {
 	struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-msic.c b/drivers/gpio/gpio-msic.c
index 01acf0a..43a690e 100644
--- a/drivers/gpio/gpio-msic.c
+++ b/drivers/gpio/gpio-msic.c
@@ -232,7 +232,7 @@ static struct irq_chip msic_irqchip = {
 	.irq_bus_sync_unlock	= msic_bus_sync_unlock,
 };
 
-static void msic_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void msic_gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct msic_gpio *mg = irq_data_get_irq_handler_data(data);
diff --git a/drivers/gpio/gpio-msm-v2.c b/drivers/gpio/gpio-msm-v2.c
index 52ff182..8c6f935 100644
--- a/drivers/gpio/gpio-msm-v2.c
+++ b/drivers/gpio/gpio-msm-v2.c
@@ -313,7 +313,7 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type)
  * which have been set as summary IRQ lines and which are triggered,
  * and to call their interrupt handlers.
  */
-static void msm_summary_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void msm_summary_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long i;
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
index 1a54205..16c2c87 100644
--- a/drivers/gpio/gpio-mvebu.c
+++ b/drivers/gpio/gpio-mvebu.c
@@ -458,8 +458,9 @@ static int mvebu_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void mvebu_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void mvebu_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct mvebu_gpio_chip *mvchip = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	u32 cause, type;
diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
index 7007036..600a2cf 100644
--- a/drivers/gpio/gpio-mxc.c
+++ b/drivers/gpio/gpio-mxc.c
@@ -272,8 +272,9 @@ static void mxc_gpio_irq_handler(struct mxc_gpio_port *port, u32 irq_stat)
 }
 
 /* MX1 and MX3 has one interrupt *per* gpio port */
-static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx3_gpio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	u32 irq_stat;
 	struct mxc_gpio_port *port = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
@@ -288,8 +289,9 @@ static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 }
 
 /* MX2 has one interrupt *for all* gpio ports */
-static void mx2_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx2_gpio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	u32 irq_msk, irq_stat;
 	struct mxc_gpio_port *port;
 	struct irq_chip *chip = irq_get_chip(irq);
diff --git a/drivers/gpio/gpio-mxs.c b/drivers/gpio/gpio-mxs.c
index 150a322..b56744d 100644
--- a/drivers/gpio/gpio-mxs.c
+++ b/drivers/gpio/gpio-mxs.c
@@ -154,8 +154,9 @@ static void mxs_flip_edge(struct mxs_gpio_port *port, u32 gpio)
 }
 
 /* MXS has one interrupt *per* gpio port */
-static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mxs_gpio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	u32 irq_stat;
 	struct mxs_gpio_port *port = irq_get_handler_data(irq);
 
diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index cdbbcf0..ab7db60 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -401,7 +401,7 @@ static int pxa_gpio_irq_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc)
+static void pxa_gpio_demux_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pxa_gpio_chip *c;
 	int loop, gpio, gpio_base, n;
diff --git a/drivers/gpio/gpio-sa1100.c b/drivers/gpio/gpio-sa1100.c
index 3fa22da..96e36d5 100644
--- a/drivers/gpio/gpio-sa1100.c
+++ b/drivers/gpio/gpio-sa1100.c
@@ -173,7 +173,7 @@ static struct irq_domain *sa1100_gpio_irqdomain;
  * and call the handler.
  */
 static void
-sa1100_gpio_handler(unsigned int irq, struct irq_desc *desc)
+sa1100_gpio_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int mask;
 
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index a19f81a..f0c6bae 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -266,8 +266,9 @@ static void tegra_gpio_irq_shutdown(struct irq_data *d)
 	gpiochip_unlock_as_irq(&tegra_gpio_chip, gpio);
 }
 
-static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void tegra_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct tegra_gpio_bank *bank;
 	int port;
 	int pin;
diff --git a/drivers/gpio/gpio-timberdale.c b/drivers/gpio/gpio-timberdale.c
index e8f97e0..ebc5c97 100644
--- a/drivers/gpio/gpio-timberdale.c
+++ b/drivers/gpio/gpio-timberdale.c
@@ -192,8 +192,9 @@ out:
 	return ret;
 }
 
-static void timbgpio_irq(unsigned int irq, struct irq_desc *desc)
+static void timbgpio_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct timbgpio *tgpio = irq_get_handler_data(irq);
 	unsigned long ipr;
 	int offset;
diff --git a/drivers/gpio/gpio-tz1090.c b/drivers/gpio/gpio-tz1090.c
index 445660a..aa3b366 100644
--- a/drivers/gpio/gpio-tz1090.c
+++ b/drivers/gpio/gpio-tz1090.c
@@ -375,7 +375,7 @@ static int gpio_set_irq_wake(struct irq_data *data, unsigned int on)
 #define gpio_set_irq_wake NULL
 #endif
 
-static void tz1090_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void tz1090_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	irq_hw_number_t hw;
 	unsigned int irq_stat, irq_no;
diff --git a/drivers/gpu/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
index 67bab5c..cf9591b 100644
--- a/drivers/gpu/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -912,8 +912,9 @@ static void ipu_irq_handle(struct ipu_soc *ipu, const int *regs, int num_regs)
 	}
 }
 
-static void ipu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
 	const int int_reg[] = { 0, 1, 2, 3, 10, 11, 12, 13, 14};
 	struct irq_chip *chip = irq_get_chip(irq);
@@ -925,8 +926,9 @@ static void ipu_irq_handler(unsigned int irq, struct irq_desc *desc)
 	chained_irq_exit(chip, desc);
 }
 
-static void ipu_err_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ipu_err_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
 	const int int_reg[] = { 4, 5, 8, 9};
 	struct irq_chip *chip = irq_get_chip(irq);
diff --git a/drivers/irqchip/exynos-combiner.c b/drivers/irqchip/exynos-combiner.c
index a57a3a1..4b7bf15 100644
--- a/drivers/irqchip/exynos-combiner.c
+++ b/drivers/irqchip/exynos-combiner.c
@@ -60,8 +60,10 @@ static void combiner_unmask_irq(struct irq_data *data)
 	__raw_writel(mask, combiner_base(data) + COMBINER_ENABLE_SET);
 }
 
-static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+static void combiner_handle_cascade_irq(unsigned int __irq,
+					struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct combiner_chip_data *chip_data = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned int cascade_irq, combiner_irq;
diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c
index 0d3b0fe..0309df6 100644
--- a/drivers/irqchip/irq-armada-370-xp.c
+++ b/drivers/irqchip/irq-armada-370-xp.c
@@ -448,9 +448,10 @@ static void armada_370_xp_handle_msi_irq(struct pt_regs *regs, bool is_chained)
 static void armada_370_xp_handle_msi_irq(struct pt_regs *r, bool b) {}
 #endif
 
-static void armada_370_xp_mpic_handle_cascade_irq(unsigned int irq,
+static void armada_370_xp_mpic_handle_cascade_irq(unsigned int __irq,
 						  struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned long irqmap, irqn, irqsrc, cpuid;
 	unsigned int cascade_irq;
diff --git a/drivers/irqchip/irq-bcm7038-l1.c b/drivers/irqchip/irq-bcm7038-l1.c
index d3b8c8b..dbebc99 100644
--- a/drivers/irqchip/irq-bcm7038-l1.c
+++ b/drivers/irqchip/irq-bcm7038-l1.c
@@ -116,7 +116,7 @@ static inline void l1_writel(u32 val, void __iomem *reg)
 		writel(val, reg);
 }
 
-static void bcm7038_l1_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void bcm7038_l1_irq_handle(unsigned int __irq, struct irq_desc *desc)
 {
 	struct bcm7038_l1_chip *intc = irq_desc_get_handler_data(desc);
 	struct bcm7038_l1_cpu *cpu;
diff --git a/drivers/irqchip/irq-bcm7120-l2.c b/drivers/irqchip/irq-bcm7120-l2.c
index 3ba5cc7..4c54e33 100644
--- a/drivers/irqchip/irq-bcm7120-l2.c
+++ b/drivers/irqchip/irq-bcm7120-l2.c
@@ -52,7 +52,8 @@ struct bcm7120_l2_intc_data {
 	const __be32 *map_mask_prop;
 };
 
-static void bcm7120_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void bcm7120_l2_intc_irq_handle(unsigned int __irq,
+				       struct irq_desc *desc)
 {
 	struct bcm7120_l2_intc_data *b = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/irq-brcmstb-l2.c b/drivers/irqchip/irq-brcmstb-l2.c
index d6bcc6b..293a0d3 100644
--- a/drivers/irqchip/irq-brcmstb-l2.c
+++ b/drivers/irqchip/irq-brcmstb-l2.c
@@ -51,8 +51,10 @@ struct brcmstb_l2_intc_data {
 	u32 saved_mask; /* for suspend/resume */
 };
 
-static void brcmstb_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void brcmstb_l2_intc_irq_handle(unsigned int __irq,
+				       struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct brcmstb_l2_intc_data *b = irq_desc_get_handler_data(desc);
 	struct irq_chip_generic *gc = irq_get_domain_generic_chip(b->domain, 0);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/irq-dw-apb-ictl.c b/drivers/irqchip/irq-dw-apb-ictl.c
index 53bb732..113789d 100644
--- a/drivers/irqchip/irq-dw-apb-ictl.c
+++ b/drivers/irqchip/irq-dw-apb-ictl.c
@@ -26,8 +26,9 @@
 #define APB_INT_FINALSTATUS_L	0x30
 #define APB_INT_FINALSTATUS_H	0x34
 
-static void dw_apb_ictl_handler(unsigned int irq, struct irq_desc *desc)
+static void dw_apb_ictl_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct irq_chip_generic *gc = irq_get_handler_data(irq);
 	struct irq_domain *d = gc->private;
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 8d7e1c8..55d3fc6 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -286,8 +286,9 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
 	} while (1);
 }
 
-static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+static void gic_handle_cascade_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct gic_chip_data *chip_data = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned int cascade_irq, gic_irq;
diff --git a/drivers/irqchip/irq-imgpdc.c b/drivers/irqchip/irq-imgpdc.c
index 8071c2e..35fc6db 100644
--- a/drivers/irqchip/irq-imgpdc.c
+++ b/drivers/irqchip/irq-imgpdc.c
@@ -218,8 +218,9 @@ static int pdc_irq_set_wake(struct irq_data *data, unsigned int on)
 	return 0;
 }
 
-static void pdc_intc_perip_isr(unsigned int irq, struct irq_desc *desc)
+static void pdc_intc_perip_isr(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct pdc_intc_priv *priv;
 	unsigned int i, irq_no;
 
@@ -239,7 +240,7 @@ found:
 	generic_handle_irq(irq_no);
 }
 
-static void pdc_intc_syswake_isr(unsigned int irq, struct irq_desc *desc)
+static void pdc_intc_syswake_isr(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pdc_intc_priv *priv;
 	unsigned int syswake, irq_no;
diff --git a/drivers/irqchip/irq-keystone.c b/drivers/irqchip/irq-keystone.c
index 5dc6165..4ac6ae4 100644
--- a/drivers/irqchip/irq-keystone.c
+++ b/drivers/irqchip/irq-keystone.c
@@ -84,8 +84,9 @@ static void keystone_irq_ack(struct irq_data *d)
 	/* nothing to do here */
 }
 
-static void keystone_irq_handler(unsigned irq, struct irq_desc *desc)
+static void keystone_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct keystone_irq_device *kirq = irq_desc_get_handler_data(desc);
 	unsigned long pending;
 	int src, virq;
diff --git a/drivers/irqchip/irq-metag.c b/drivers/irqchip/irq-metag.c
index c16c186..4e5bae7 100644
--- a/drivers/irqchip/irq-metag.c
+++ b/drivers/irqchip/irq-metag.c
@@ -220,7 +220,8 @@ static int metag_internal_irq_set_affinity(struct irq_data *data,
  *	occurred. It is this function's job to demux this irq and
  *	figure out exactly which trigger needs servicing.
  */
-static void metag_internal_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void metag_internal_irq_demux(unsigned int __irq,
+				     struct irq_desc *desc)
 {
 	struct metag_internal_irq_priv *priv = irq_desc_get_handler_data(desc);
 	irq_hw_number_t hw;
diff --git a/drivers/irqchip/irq-metag-ext.c b/drivers/irqchip/irq-metag-ext.c
index 2cb474a..09717d4 100644
--- a/drivers/irqchip/irq-metag-ext.c
+++ b/drivers/irqchip/irq-metag-ext.c
@@ -447,7 +447,7 @@ static int meta_intc_irq_set_type(struct irq_data *data, unsigned int flow_type)
  * Whilst using TR2 to detect external interrupts is a software convention it is
  * (hopefully) unlikely to change.
  */
-static void meta_intc_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void meta_intc_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct meta_intc_priv *priv = &meta_intc_priv;
 	irq_hw_number_t hw;
diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c
index 44d2d10..2eaf447 100644
--- a/drivers/irqchip/irq-mips-gic.c
+++ b/drivers/irqchip/irq-mips-gic.c
@@ -513,7 +513,7 @@ static void __gic_irq_dispatch(void)
 	gic_handle_shared_int();
 }
 
-static void gic_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void gic_irq_dispatch(unsigned int __irq, struct irq_desc *desc)
 {
 	__gic_irq_dispatch();
 }
diff --git a/drivers/irqchip/irq-mmp.c b/drivers/irqchip/irq-mmp.c
index c0da57b..5c5d7f3 100644
--- a/drivers/irqchip/irq-mmp.c
+++ b/drivers/irqchip/irq-mmp.c
@@ -130,8 +130,9 @@ struct irq_chip icu_irq_chip = {
 	.irq_unmask	= icu_unmask_irq,
 };
 
-static void icu_mux_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void icu_mux_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_domain *domain;
 	struct icu_chip_data *data;
 	int i;
diff --git a/drivers/irqchip/irq-orion.c b/drivers/irqchip/irq-orion.c
index ad0c0f6..cb92752 100644
--- a/drivers/irqchip/irq-orion.c
+++ b/drivers/irqchip/irq-orion.c
@@ -107,8 +107,10 @@ IRQCHIP_DECLARE(orion_intc, "marvell,orion-intc", orion_irq_init);
 #define ORION_BRIDGE_IRQ_CAUSE	0x00
 #define ORION_BRIDGE_IRQ_MASK	0x04
 
-static void orion_bridge_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void orion_bridge_irq_handler(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_domain *d = irq_get_handler_data(irq);
 
 	struct irq_chip_generic *gc = irq_get_domain_generic_chip(d, 0);
diff --git a/drivers/irqchip/irq-s3c24xx.c b/drivers/irqchip/irq-s3c24xx.c
index e96717f..4030d53 100644
--- a/drivers/irqchip/irq-s3c24xx.c
+++ b/drivers/irqchip/irq-s3c24xx.c
@@ -299,7 +299,7 @@ static struct irq_chip s3c_irq_eint0t4 = {
 	.irq_set_type	= s3c_irqext0_type,
 };
 
-static void s3c_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct s3c_irq_data *irq_data = irq_desc_get_chip_data(desc);
diff --git a/drivers/irqchip/irq-sunxi-nmi.c b/drivers/irqchip/irq-sunxi-nmi.c
index 6b2b582..09fafcf 100644
--- a/drivers/irqchip/irq-sunxi-nmi.c
+++ b/drivers/irqchip/irq-sunxi-nmi.c
@@ -58,8 +58,9 @@ static inline u32 sunxi_sc_nmi_read(struct irq_chip_generic *gc, u32 off)
 	return irq_reg_readl(gc, off);
 }
 
-static void sunxi_sc_nmi_handle_irq(unsigned int irq, struct irq_desc *desc)
+static void sunxi_sc_nmi_handle_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned int virq = irq_find_mapping(domain, 0);
diff --git a/drivers/irqchip/irq-tb10x.c b/drivers/irqchip/irq-tb10x.c
index accc200..f02c084 100644
--- a/drivers/irqchip/irq-tb10x.c
+++ b/drivers/irqchip/irq-tb10x.c
@@ -97,8 +97,9 @@ static int tb10x_irq_set_type(struct irq_data *data, unsigned int flow_type)
 	return IRQ_SET_MASK_OK;
 }
 
-static void tb10x_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void tb10x_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
 
 	generic_handle_irq(irq_find_mapping(domain, irq));
diff --git a/drivers/irqchip/irq-versatile-fpga.c b/drivers/irqchip/irq-versatile-fpga.c
index 888111b..732f44a 100644
--- a/drivers/irqchip/irq-versatile-fpga.c
+++ b/drivers/irqchip/irq-versatile-fpga.c
@@ -66,8 +66,9 @@ static void fpga_irq_unmask(struct irq_data *d)
 	writel(mask, f->base + IRQ_ENABLE_SET);
 }
 
-static void fpga_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void fpga_irq_handle(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct fpga_irq_data *f = irq_desc_get_handler_data(desc);
 	u32 status = readl(f->base + IRQ_STATUS);
 
diff --git a/drivers/irqchip/irq-vic.c b/drivers/irqchip/irq-vic.c
index d4ce331..f5a261b 100644
--- a/drivers/irqchip/irq-vic.c
+++ b/drivers/irqchip/irq-vic.c
@@ -226,7 +226,7 @@ static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs)
 	return handled;
 }
 
-static void vic_handle_irq_cascaded(unsigned int irq, struct irq_desc *desc)
+static void vic_handle_irq_cascaded(unsigned int __irq, struct irq_desc *desc)
 {
 	u32 stat, hwirq;
 	struct irq_chip *host_chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/spear-shirq.c b/drivers/irqchip/spear-shirq.c
index 9c145a7..e2a44bb 100644
--- a/drivers/irqchip/spear-shirq.c
+++ b/drivers/irqchip/spear-shirq.c
@@ -183,8 +183,9 @@ static struct spear_shirq *spear320_shirq_blocks[] = {
 	&spear320_shirq_intrcomm_ras,
 };
 
-static void shirq_handler(unsigned irq, struct irq_desc *desc)
+static void shirq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct spear_shirq *shirq = irq_get_handler_data(irq);
 	u32 pend;
 
diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c
index 977bd3a..e182e6f 100644
--- a/drivers/mfd/asic3.c
+++ b/drivers/mfd/asic3.c
@@ -138,7 +138,7 @@ static void asic3_irq_flip_edge(struct asic3 *asic,
 	spin_unlock_irqrestore(&asic->lock, flags);
 }
 
-static void asic3_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void asic3_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct asic3 *asic = irq_desc_get_handler_data(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
index 5991fad..29a5b03 100644
--- a/drivers/mfd/ezx-pcap.c
+++ b/drivers/mfd/ezx-pcap.c
@@ -205,8 +205,9 @@ static void pcap_isr_work(struct work_struct *work)
 	} while (gpio_get_value(pdata->gpio));
 }
 
-static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pcap_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct pcap_chip *pcap = irq_get_handler_data(irq);
 
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
diff --git a/drivers/mfd/htc-egpio.c b/drivers/mfd/htc-egpio.c
index 49f39fe..207c350 100644
--- a/drivers/mfd/htc-egpio.c
+++ b/drivers/mfd/htc-egpio.c
@@ -98,7 +98,7 @@ static struct irq_chip egpio_muxed_chip = {
 	.irq_unmask	= egpio_unmask,
 };
 
-static void egpio_handler(unsigned int irq, struct irq_desc *desc)
+static void egpio_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct egpio_info *ei = irq_desc_get_handler_data(desc);
 	int irqpin;
diff --git a/drivers/mfd/jz4740-adc.c b/drivers/mfd/jz4740-adc.c
index b31c54e..1f3ace2 100644
--- a/drivers/mfd/jz4740-adc.c
+++ b/drivers/mfd/jz4740-adc.c
@@ -65,7 +65,7 @@ struct jz4740_adc {
 	spinlock_t lock;
 };
 
-static void jz4740_adc_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void jz4740_adc_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip_generic *gc = irq_desc_get_handler_data(desc);
 	uint8_t status;
diff --git a/drivers/mfd/pm8921-core.c b/drivers/mfd/pm8921-core.c
index 5a92646..fc50052 100644
--- a/drivers/mfd/pm8921-core.c
+++ b/drivers/mfd/pm8921-core.c
@@ -156,7 +156,7 @@ static int pm8xxx_irq_master_handler(struct pm_irq_chip *chip, int master)
 	return ret;
 }
 
-static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pm8xxx_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pm_irq_chip *chip = irq_desc_get_handler_data(desc);
 	struct irq_chip *irq_chip = irq_desc_get_chip(desc);
diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c
index c09fb5d..fcede2c 100644
--- a/drivers/mfd/t7l66xb.c
+++ b/drivers/mfd/t7l66xb.c
@@ -185,8 +185,9 @@ static struct mfd_cell t7l66xb_cells[] = {
 /*--------------------------------------------------------------------------*/
 
 /* Handle the T7L66XB interrupt mux */
-static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc)
+static void t7l66xb_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct t7l66xb *t7l66xb = irq_get_handler_data(irq);
 	unsigned int isr;
 	unsigned int i, irq_base;
diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c
index 63458b3..7961b71 100644
--- a/drivers/mfd/tc6393xb.c
+++ b/drivers/mfd/tc6393xb.c
@@ -523,8 +523,9 @@ static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base)
 /*--------------------------------------------------------------------------*/
 
 static void
-tc6393xb_irq(unsigned int irq, struct irq_desc *desc)
+tc6393xb_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct tc6393xb *tc6393xb = irq_get_handler_data(irq);
 	unsigned int isr;
 	unsigned int i, irq_base;
diff --git a/drivers/mfd/ucb1x00-core.c b/drivers/mfd/ucb1x00-core.c
index 58ea9fd..b2859ef 100644
--- a/drivers/mfd/ucb1x00-core.c
+++ b/drivers/mfd/ucb1x00-core.c
@@ -282,8 +282,9 @@ void ucb1x00_adc_disable(struct ucb1x00 *ucb)
  * SIBCLK to talk to the chip.  We leave the clock running until
  * we have finished processing all interrupts from the chip.
  */
-static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc)
+static void ucb1x00_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct ucb1x00 *ucb = irq_desc_get_handler_data(desc);
 	unsigned int isr, i;
 
diff --git a/drivers/pci/host/pci-keystone.c b/drivers/pci/host/pci-keystone.c
index 75333b0..7ab7f32 100644
--- a/drivers/pci/host/pci-keystone.c
+++ b/drivers/pci/host/pci-keystone.c
@@ -112,8 +112,9 @@ static int ks_pcie_establish_link(struct keystone_pcie *ks_pcie)
 	return 0;
 }
 
-static void ks_pcie_msi_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ks_pcie_msi_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
 	u32 offset = irq - ks_pcie->msi_host_irqs[0];
 	struct pcie_port *pp = &ks_pcie->pp;
@@ -139,8 +140,10 @@ static void ks_pcie_msi_irq_handler(unsigned int irq, struct irq_desc *desc)
  * Traverse through pending legacy interrupts and invoke handler for each. Also
  * takes care of interrupt controller level mask/ack operation.
  */
-static void ks_pcie_legacy_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ks_pcie_legacy_irq_handler(unsigned int __irq,
+				       struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
 	struct pcie_port *pp = &ks_pcie->pp;
 	u32 irq_offset = irq - ks_pcie->legacy_host_irqs[0];
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
index 5f016c0..ee6bcf3 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
@@ -1116,8 +1116,9 @@ mtk_eint_debounce_process(struct mtk_pinctrl *pctl, int index)
 	}
 }
 
-static void mtk_eint_irq_handler(unsigned irq, struct irq_desc *desc)
+static void mtk_eint_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct mtk_pinctrl *pctl = irq_get_handler_data(irq);
 	unsigned int status, eint_num;
diff --git a/drivers/pinctrl/pinctrl-adi2.c b/drivers/pinctrl/pinctrl-adi2.c
index 49df903..d790249 100644
--- a/drivers/pinctrl/pinctrl-adi2.c
+++ b/drivers/pinctrl/pinctrl-adi2.c
@@ -530,8 +530,8 @@ static inline void preflow_handler(struct irq_desc *desc)
 static inline void preflow_handler(struct irq_desc *desc) { }
 #endif
 
-static void adi_gpio_handle_pint_irq(unsigned int inta_irq,
-			struct irq_desc *desc)
+static void adi_gpio_handle_pint_irq(unsigned int __inta_irq,
+				     struct irq_desc *desc)
 {
 	u32 request;
 	u32 level_mask, hwirq;
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index dee7d5f..1dac248 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -1394,8 +1394,9 @@ static const struct gpio_chip rockchip_gpiolib_chip = {
  * Interrupt handling
  */
 
-static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void rockchip_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct rockchip_pin_bank *bank = irq_get_handler_data(irq);
 	u32 pend;
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index 968e352..74946c8 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -1679,8 +1679,9 @@ static irqreturn_t pcs_irq_handler(int irq, void *d)
  * Use this if you have a separate interrupt for each
  * pinctrl-single instance.
  */
-static void pcs_irq_chain_handler(unsigned int irq, struct irq_desc *desc)
+static void pcs_irq_chain_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip;
 
diff --git a/drivers/pinctrl/pinctrl-st.c b/drivers/pinctrl/pinctrl-st.c
index 65bf73b..046cd56 100644
--- a/drivers/pinctrl/pinctrl-st.c
+++ b/drivers/pinctrl/pinctrl-st.c
@@ -1472,8 +1472,9 @@ static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 	chained_irq_exit(chip, desc);
 }
 
-static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
+static void st_gpio_irqmux_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct st_pinctrl *info = irq_get_handler_data(irq);
 	unsigned long status;
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c
index 0b7afa5..94dea3a 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -420,8 +420,9 @@ static const struct of_device_id exynos_wkup_irq_ids[] = {
 };
 
 /* interrupt handler for wakeup interrupts 0..15 */
-static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
+static void exynos_irq_eint0_15(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct exynos_weint_data *eintd = irq_get_handler_data(irq);
 	struct samsung_pin_bank *bank = eintd->bank;
 	struct irq_chip *chip = irq_get_chip(irq);
@@ -452,8 +453,10 @@ static inline void exynos_irq_demux_eint(unsigned long pend,
 }
 
 /* interrupt handler for wakeup interrupt 16 */
-static void exynos_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
+static void exynos_irq_demux_eint16_31(unsigned int __irq,
+				       struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct exynos_muxed_weint_data *eintd = irq_get_handler_data(irq);
 	struct samsung_pinctrl_drv_data *d = eintd->banks[0]->drvdata;
diff --git a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
index 7756c1e..097b758 100644
--- a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
+++ b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
@@ -408,8 +408,9 @@ static const struct irq_domain_ops s3c64xx_gpio_irqd_ops = {
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-static void s3c64xx_eint_gpio_irq(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_eint_gpio_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct s3c64xx_eint_gpio_data *data = irq_get_handler_data(irq);
 	struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index f8e171b..a443eb3 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -709,8 +709,9 @@ static struct irq_chip sunxi_pinctrl_level_irq_chip = {
 			  IRQCHIP_EOI_IF_HANDLED,
 };
 
-static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
+static void sunxi_pinctrl_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct sunxi_pinctrl *pctl = irq_get_handler_data(irq);
 	unsigned long bank, reg, val;
diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
index 81f2298..4140c19 100644
--- a/drivers/sh/intc/core.c
+++ b/drivers/sh/intc/core.c
@@ -65,8 +65,9 @@ void intc_set_prio_level(unsigned int irq, unsigned int level)
 	raw_spin_unlock_irqrestore(&intc_big_lock, flags);
 }
 
-static void intc_redirect_irq(unsigned int irq, struct irq_desc *desc)
+static void intc_redirect_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	generic_handle_irq((unsigned int)irq_get_handler_data(irq));
 }
 
diff --git a/drivers/sh/intc/virq.c b/drivers/sh/intc/virq.c
index f30ac93..8e9fa61 100644
--- a/drivers/sh/intc/virq.c
+++ b/drivers/sh/intc/virq.c
@@ -107,8 +107,9 @@ static int add_virq_to_pirq(unsigned int irq, unsigned int virq)
 	return 0;
 }
 
-static void intc_virq_handler(unsigned int irq, struct irq_desc *desc)
+static void intc_virq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	struct intc_virq_list *entry, *vlist = irq_data_get_irq_handler_data(data);
diff --git a/drivers/spmi/spmi-pmic-arb.c b/drivers/spmi/spmi-pmic-arb.c
index d7119db..f9ce8cd 100644
--- a/drivers/spmi/spmi-pmic-arb.c
+++ b/drivers/spmi/spmi-pmic-arb.c
@@ -451,8 +451,9 @@ static void periph_interrupt(struct spmi_pmic_arb_dev *pa, u8 apid)
 	}
 }
 
-static void pmic_arb_chained_irq(unsigned int irq, struct irq_desc *desc)
+static void pmic_arb_chained_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct spmi_pmic_arb_dev *pa = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
 	void __iomem *intr = pa->intr;
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 330fc79..a002ea3 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -383,8 +383,9 @@ static bool irq_may_run(struct irq_desc *desc)
  *	unmask issues if necessary.
  */
 void
-handle_simple_irq(unsigned int irq, struct irq_desc *desc)
+handle_simple_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	raw_spin_lock(&desc->lock);
 
 	if (!irq_may_run(desc))
@@ -434,8 +435,9 @@ static void cond_unmask_irq(struct irq_desc *desc)
  *	interrupt line is back to inactive.
  */
 void
-handle_level_irq(unsigned int irq, struct irq_desc *desc)
+handle_level_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	raw_spin_lock(&desc->lock);
 	mask_ack_irq(desc);
 
@@ -505,8 +507,9 @@ static void cond_unmask_eoi_irq(struct irq_desc *desc, struct irq_chip *chip)
  *	details in hardware, transparently.
  */
 void
-handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
+handle_fasteoi_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = desc->irq_data.chip;
 
 	raw_spin_lock(&desc->lock);
@@ -561,8 +564,9 @@ EXPORT_SYMBOL_GPL(handle_fasteoi_irq);
  *	loop is left.
  */
 void
-handle_edge_irq(unsigned int irq, struct irq_desc *desc)
+handle_edge_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	raw_spin_lock(&desc->lock);
 
 	desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING);
@@ -624,8 +628,9 @@ EXPORT_SYMBOL(handle_edge_irq);
  * Similar as the above handle_edge_irq, but using eoi and w/o the
  * mask/unmask logic.
  */
-void handle_edge_eoi_irq(unsigned int irq, struct irq_desc *desc)
+void handle_edge_eoi_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	raw_spin_lock(&desc->lock);
@@ -671,8 +676,9 @@ out_eoi:
  *	Per CPU interrupts on SMP machines without locking requirements
  */
 void
-handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
+handle_percpu_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	kstat_incr_irqs_this_cpu(irq, desc);
@@ -698,8 +704,9 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
  * contain the real device id for the cpu on which this handler is
  * called
  */
-void handle_percpu_devid_irq(unsigned int irq, struct irq_desc *desc)
+void handle_percpu_devid_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irqaction *action = desc->action;
 	void *dev_id = raw_cpu_ptr(action->percpu_dev_id);
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index 6354802..1f39187 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -27,8 +27,9 @@
  *
  * Handles spurious and unhandled IRQ's. It also prints a debugmessage.
  */
-void handle_bad_irq(unsigned int irq, struct irq_desc *desc)
+void handle_bad_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_get_desc_irq(desc);
 	print_irq_desc(irq, desc);
 	kstat_incr_irqs_this_cpu(irq, desc);
 	ack_bad_irq(irq);

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 18:35       ` Thomas Gleixner
  2015-05-20 20:00         ` Julia Lawall
@ 2015-06-13  8:27         ` Julia Lawall
  2015-06-13  9:00         ` Julia Lawall
  2 siblings, 0 replies; 120+ messages in thread
From: Julia Lawall @ 2015-06-13  8:27 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86, LKML,
	linux-pci, linux-acpi, Julia Lawall

>     unsigned irq = irq_desc_get_irq(desc);

Actually, I put the wrong name for this in my semantic patch.  I will send
a new version and new results shortly.

julia

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-05-20 18:35       ` Thomas Gleixner
  2015-05-20 20:00         ` Julia Lawall
  2015-06-13  8:27         ` Julia Lawall
@ 2015-06-13  9:00         ` Julia Lawall
  2015-06-13  9:32           ` Thomas Gleixner
  2 siblings, 1 reply; 120+ messages in thread
From: Julia Lawall @ 2015-06-13  9:00 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86, LKML,
	linux-pci, linux-acpi, Julia Lawall

>     unsigned irq = irq_desc_get_irq(desc);

Actually, it seems that this function doesn't exist in linux-next either.
What is the correct name of the function, or is there some other tree that
I should be working on?

thanks,
julia

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-13  9:00         ` Julia Lawall
@ 2015-06-13  9:32           ` Thomas Gleixner
  2015-06-13 14:04             ` Julia Lawall
  0 siblings, 1 reply; 120+ messages in thread
From: Thomas Gleixner @ 2015-06-13  9:32 UTC (permalink / raw)
  To: Julia Lawall
  Cc: Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86, LKML,
	linux-pci, linux-acpi

On Sat, 13 Jun 2015, Julia Lawall wrote:

> >     unsigned irq = irq_desc_get_irq(desc);
> 
> Actually, it seems that this function doesn't exist in linux-next either.
> What is the correct name of the function, or is there some other tree that
> I should be working on?

That's a new helper function, which is introduced in that series.

Thanks,

	tglx

---
 include/linux/irqdesc.h |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
index 8c84a2513665..a7aaef44a10e 100644
--- a/include/linux/irqdesc.h
+++ b/include/linux/irqdesc.h
@@ -100,6 +100,11 @@ static inline struct irq_desc *irq_data_to_desc(struct irq_data *data)
 #endif
 }
 
+static inline unsigned int irq_desc_get_irq(struct irq_desc *desc)
+{
+	return desc->irq_data.irq;
+}
+
 static inline struct irq_data *irq_desc_get_irq_data(struct irq_desc *desc)
 {
 	return &desc->irq_data;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-13  9:32           ` Thomas Gleixner
@ 2015-06-13 14:04             ` Julia Lawall
  2015-06-13 14:53               ` Julia Lawall
  0 siblings, 1 reply; 120+ messages in thread
From: Julia Lawall @ 2015-06-13 14:04 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Julia Lawall, Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jason Cooper, Kevin Cernekee,
	Arnd Bergmann, Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck,
	x86, LKML, linux-pci, linux-acpi

[-- Attachment #1: Type: TEXT/PLAIN, Size: 3419 bytes --]

A new version of the semantic patch is below.  The results are attached.

julia

virtual after_start

@initialize:ocaml@
@@

let tbl = Hashtbl.create(100)
let ltbl = Hashtbl.create(100)

let add_if_not_present f p =
try let _ = Hashtbl.find tbl f in ()
with Not_found ->
   Hashtbl.add tbl f p;
   let it = new iteration() in
   it#add_virtual_rule After_start;
   it#add_virtual_identifier Hf f;
   it#register()

let local_add_if_not_present f file =
try let _ = Hashtbl.find ltbl (f,file) in ()
with Not_found ->
   Hashtbl.add ltbl (f,file) ();
   let it = new iteration() in
   it#set_files [file];
   it#add_virtual_rule After_start;
   it#add_virtual_identifier Hf f;
   it#register()

// ------------------------------------------------------------------------
// Getting started

@h depends on !after_start@
identifier ih != NULL;
local idexpression lih;
expression eh;
expression e1,e2,e3,e4,e5,e6,e7;
position p;
@@

(
__irq_set_handler@p(e1,\(lih\|ih\|eh\),e2,e3)
|
irq_set_handler@p(e1,\(lih\|ih\|eh\))
|
irq_set_chained_handler@p(e1,\(lih\|ih\|eh\))
|
irq_alloc_generic_chip@p(e1,e2,e3,\(lih\|ih\|eh\))
|
irq_alloc_domain_generic_chips@p(e1,e2,e3,e4,\(lih\|ih\|eh\),e5,e6,e7)
|
irq_set_chip_and_handler_name@p(e1,e2,\(lih\|ih\|eh\),e3)
|
irq_set_chip_and_handler@p(e1,e2,\(lih\|ih\|eh\))
|
__irq_set_handler_locked@p(e1,\(lih\|ih\|eh\))
|
__irq_set_chip_handler_name_locked@p(e1,e2,\(lih\|ih\|eh\),e3)
|
__irq_set_preflow_handler@p(e1,\(lih\|ih\|eh\))
)

@localfn@
identifier h.ih;
@@

ih(...) { ... }

@script:ocaml depends on !localfn@
p << h.p;
handler << h.ih;
@@

add_if_not_present handler p

@script:ocaml depends on localfn@
p << h.p;
handler << h.ih;
@@

local_add_if_not_present handler (List.hd p).file

@script:ocaml@
p << h.p;
handler << h.lih;
@@

Printf.eprintf "Local variable: %s:%d %s\n"
   ((List.hd p).file) ((List.hd p).line) handler

@script:ocaml@
p << h.p;
handler << h.eh;
@@

if not (handler = "NULL")
then Printf.eprintf "Arbitrary expression: %s:%d %s\n"
       ((List.hd p).file) ((List.hd p).line) handler

// ------------------------------------------------------------------------
// Adjusting functions

@@
identifier virtual.hf,irq;
fresh identifier firq = "__" ## irq;
type T;
@@

hf(T
- irq
+ firq
  ,...) {
  ... when != irq
      when strict
}

@s@
identifier virtual.hf,irq;
position p1;
type T;
@@

hf(T irq,...) {
  <...
  (irq@p1 = <+...irq...+>)
  ...>
}

@s1@
identifier virtual.hf,irq;
position p1;
expression e;
statement S;
type T;
@@

hf(T irq,...) {
  <...
  for(...; ...; <+...irq@p1 = e...+>) S
  ...>
}

// first parameter is assigned at least once
@r exists@
identifier virtual.hf,irq;
expression e;
type T;
position p,p1 != {s.p1,s1.p1};
@@

hf(T@p irq,...) {
  ... when != irq
      when strict
  irq@p1 = e
  ... when any
}

// no uses of the first parameter before the assignment
@@
identifier virtual.hf,irq;
expression e;
type T;
fresh identifier firq = "__" ## irq;
position r.p,p1 != {s.p1,s1.p1};
@@

hf(T@p
- irq
+ firq
  ,...) {
  ... when != irq
      when strict
? irq@p1 = e
  ... when any
}

// first parameter is used somewhere
@rr exists@
identifier virtual.hf,irq;
type T;
position p;
@@

hf(T@p irq,...) {
  ...
  irq
  ... when any
}

@@
identifier virtual.hf,irq,desc;
fresh identifier firq = "__" ## irq;
type T,T1;
position rr.p;
@@

hf(T@p
- irq
+ firq
  ,T1 desc) {
+ unsigned int irq = irq_desc_get_irq(desc);
  ... when any
}

[-- Attachment #2: Type: TEXT/PLAIN, Size: 85973 bytes --]

--- /var/linuxes/linux-next/arch/arm/common/locomo.c	2011-10-27 01:37:56.000000000 +0200
+++ /var/julia/linuxcopy/arch/arm/common/locomo.c	2015-06-13 10:31:21.727542661 +0200
@@ -138,8 +138,9 @@ static struct locomo_dev_info locomo_dev
 	},
 };
 
-static void locomo_handler(unsigned int irq, struct irq_desc *desc)
+static void locomo_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct locomo *lchip = irq_get_chip_data(irq);
 	int req, i;
 
--- /var/linuxes/linux-next/arch/arm/common/sa1111.c	2014-11-25 11:25:19.660159728 +0100
+++ /var/julia/linuxcopy/arch/arm/common/sa1111.c	2015-06-13 10:31:22.087542648 +0200
@@ -197,8 +197,9 @@ static struct sa1111_dev_info sa1111_dev
  * will call us again if there are more interrupts to process.
  */
 static void
-sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
+sa1111_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned int stat0, stat1, i;
 	struct sa1111 *sachip = irq_get_handler_data(irq);
 	void __iomem *mapbase = sachip->base + SA1111_INTC;
--- /var/linuxes/linux-next/arch/arm/mach-dove/irq.c	2014-05-03 16:25:24.844578878 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-dove/irq.c	2015-06-13 10:31:22.239542642 +0200
@@ -69,8 +69,9 @@ static struct irq_chip pmu_irq_chip = {
 	.irq_ack	= pmu_irq_ack,
 };
 
-static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pmu_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned long cause = readl(PMU_INTERRUPT_CAUSE);
 
 	cause &= readl(PMU_INTERRUPT_MASK);
--- /var/linuxes/linux-next/arch/arm/mach-footbridge/isa-irq.c	2011-10-27 01:37:56.000000000 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-footbridge/isa-irq.c	2015-06-13 10:31:22.723542624 +0200
@@ -88,7 +88,7 @@ static struct irq_chip isa_hi_chip = {
 };
 
 static void
-isa_irq_handler(unsigned int irq, struct irq_desc *desc)
+isa_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
 
--- /var/linuxes/linux-next/arch/arm/mach-gemini/gpio.c	2013-10-31 21:45:23.000000000 +0100
+++ /var/julia/linuxcopy/arch/arm/mach-gemini/gpio.c	2015-06-13 10:31:20.863542693 +0200
@@ -126,7 +126,7 @@ static int gpio_set_irq_type(struct irq_
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int port = (unsigned int)irq_desc_get_handler_data(desc);
 	unsigned int gpio_irq_no, irq_stat;
--- /var/linuxes/linux-next/arch/arm/mach-imx/3ds_debugboard.c	2012-10-18 18:34:34.000000000 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-imx/3ds_debugboard.c	2015-06-13 10:31:21.459542671 +0200
@@ -85,7 +85,7 @@ static struct platform_device smsc_lan92
 	.resource = smsc911x_resources,
 };
 
-static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mxc_expio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
--- /var/linuxes/linux-next/arch/arm/mach-imx/mach-mx31ads.c	2014-08-21 13:30:52.108511549 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-imx/mach-mx31ads.c	2015-06-13 10:31:21.279542678 +0200
@@ -154,7 +154,7 @@ static inline void mxc_init_imx_uart(voi
 	imx31_add_imx_uart0(&uart_pdata);
 }
 
-static void mx31ads_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx31ads_expio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
--- /var/linuxes/linux-next/arch/arm/mach-iop13xx/msi.c	2014-11-29 15:47:36.682720326 +0100
+++ /var/julia/linuxcopy/arch/arm/mach-iop13xx/msi.c	2015-06-13 10:31:20.127542720 +0200
@@ -91,7 +91,7 @@ static void (*write_imipr[])(u32) = {
 	write_imipr_3,
 };
 
-static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc)
+static void iop13xx_msi_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	int i, j;
 	unsigned long status;
--- /var/linuxes/linux-next/arch/arm/mach-lpc32xx/irq.c	2012-11-25 19:53:20.000000000 +0100
+++ /var/julia/linuxcopy/arch/arm/mach-lpc32xx/irq.c	2015-06-13 10:31:17.531542817 +0200
@@ -370,7 +370,7 @@ static struct irq_chip lpc32xx_irq_chip
 	.irq_set_wake = lpc32xx_irq_wake
 };
 
-static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic1_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC1_BASE));
 
@@ -383,7 +383,7 @@ static void lpc32xx_sic1_handler(unsigne
 	}
 }
 
-static void lpc32xx_sic2_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic2_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC2_BASE));
 
--- /var/linuxes/linux-next/arch/arm/mach-netx/generic.c	2013-06-29 19:28:56.000000000 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-netx/generic.c	2015-06-13 10:31:22.387542636 +0200
@@ -70,7 +70,7 @@ static struct platform_device *devices[]
 #endif
 
 static void
-netx_hif_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
+netx_hif_demux_handler(unsigned int __irq_unused, struct irq_desc *desc)
 {
 	unsigned int irq = NETX_IRQ_HIF_CHAINED(0);
 	unsigned int stat;
--- /var/linuxes/linux-next/arch/arm/mach-omap1/fpga.c	2013-10-31 21:45:23.000000000 +0100
+++ /var/julia/linuxcopy/arch/arm/mach-omap1/fpga.c	2015-06-13 10:31:20.639542701 +0200
@@ -87,7 +87,8 @@ static void fpga_mask_ack_irq(struct irq
 	fpga_ack_irq(d);
 }
 
-static void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)
+static void innovator_fpga_IRQ_demux(unsigned int __irq,
+				     struct irq_desc *desc)
 {
 	u32 stat;
 	int fpga_irq;
--- /var/linuxes/linux-next/arch/arm/mach-omap2/prm_common.c	2015-04-02 22:08:46.059526939 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-omap2/prm_common.c	2015-06-13 10:31:23.367542600 +0200
@@ -102,7 +102,7 @@ static void omap_prcm_events_filter_prio
  * dispatched accordingly. Clearing of the wakeup events should be
  * done by the SoC specific individual handlers.
  */
-static void omap_prcm_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void omap_prcm_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending[OMAP_PRCM_MAX_NR_PENDING_REG];
 	unsigned long priority_pending[OMAP_PRCM_MAX_NR_PENDING_REG];
--- /var/linuxes/linux-next/arch/arm/mach-pxa/balloon3.c	2014-06-28 20:09:11.297152825 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-pxa/balloon3.c	2015-06-13 10:31:19.147542757 +0200
@@ -496,7 +496,7 @@ static struct irq_chip balloon3_irq_chip
 	.irq_unmask	= balloon3_unmask_irq,
 };
 
-static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void balloon3_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
 					balloon3_irq_enabled;
--- /var/linuxes/linux-next/arch/arm/mach-pxa/cm-x2xx-pci.c	2012-05-08 09:06:48.000000000 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-pxa/cm-x2xx-pci.c	2015-06-13 10:31:19.295542751 +0200
@@ -29,8 +29,9 @@
 void __iomem *it8152_base_address;
 static int cmx2xx_it8152_irq_gpio;
 
-static void cmx2xx_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void cmx2xx_it8152_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	/* clear our parent irq */
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
 
--- /var/linuxes/linux-next/arch/arm/mach-pxa/lpd270.c	2015-03-12 22:23:12.058844788 +0100
+++ /var/julia/linuxcopy/arch/arm/mach-pxa/lpd270.c	2015-06-13 10:31:19.475542745 +0200
@@ -120,7 +120,7 @@ static struct irq_chip lpd270_irq_chip =
 	.irq_unmask	= lpd270_unmask_irq,
 };
 
-static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void lpd270_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
--- /var/linuxes/linux-next/arch/arm/mach-pxa/pcm990-baseboard.c	2013-12-15 19:52:45.000000000 +0100
+++ /var/julia/linuxcopy/arch/arm/mach-pxa/pcm990-baseboard.c	2015-06-13 10:31:19.727542735 +0200
@@ -284,7 +284,7 @@ static struct irq_chip pcm990_irq_chip =
 	.irq_unmask	= pcm990_unmask_irq,
 };
 
-static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pcm990_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
--- /var/linuxes/linux-next/arch/arm/mach-pxa/viper.c	2014-06-28 20:09:11.297152825 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-pxa/viper.c	2015-06-13 10:31:18.591542778 +0200
@@ -276,7 +276,7 @@ static inline unsigned long viper_irq_pe
 			viper_irq_enabled_mask;
 }
 
-static void viper_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void viper_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
--- /var/linuxes/linux-next/arch/arm/mach-pxa/zeus.c	2015-03-31 10:05:04.255568993 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-pxa/zeus.c	2015-06-13 10:31:18.867542767 +0200
@@ -105,7 +105,7 @@ static inline unsigned long zeus_irq_pen
 	return __raw_readw(ZEUS_CPLD_ISA_IRQ) & zeus_irq_enabled_mask;
 }
 
-static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void zeus_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
--- /var/linuxes/linux-next/arch/arm/mach-rpc/ecard.c	2012-10-06 14:13:21.000000000 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-rpc/ecard.c	2015-06-13 10:31:17.159542831 +0200
@@ -552,7 +552,7 @@ static void ecard_check_lockup(struct ir
 }
 
 static void
-ecard_irq_handler(unsigned int irq, struct irq_desc *desc)
+ecard_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	ecard_t *ec;
 	int called = 0;
--- /var/linuxes/linux-next/arch/arm/mach-s3c24xx/bast-irq.c	2013-03-28 19:43:15.000000000 +0100
+++ /var/julia/linuxcopy/arch/arm/mach-s3c24xx/bast-irq.c	2015-06-13 10:31:19.935542728 +0200
@@ -101,7 +101,7 @@ static struct irq_chip  bast_pc104_chip
 };
 
 static void
-bast_irq_pc104_demux(unsigned int irq,
+bast_irq_pc104_demux(unsigned int __irq,
 		     struct irq_desc *desc)
 {
 	unsigned int stat;
--- /var/linuxes/linux-next/arch/arm/mach-s3c64xx/common.c	2014-09-13 07:58:59.031341188 +0200
+++ /var/julia/linuxcopy/arch/arm/mach-s3c64xx/common.c	2015-06-13 10:31:18.295542789 +0200
@@ -389,22 +389,22 @@ static inline void s3c_irq_demux_eint(un
 	}
 }
 
-static void s3c_irq_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint0_3(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(0, 3);
 }
 
-static void s3c_irq_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint4_11(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(4, 11);
 }
 
-static void s3c_irq_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint12_19(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(12, 19);
 }
 
-static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint20_27(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(20, 27);
 }
--- /var/linuxes/linux-next/arch/arm/mach-sa1100/neponset.c	2015-03-12 22:23:12.058844788 +0100
+++ /var/julia/linuxcopy/arch/arm/mach-sa1100/neponset.c	2015-06-13 10:31:22.571542630 +0200
@@ -166,7 +166,7 @@ static struct sa1100_port_fns neponset_p
  * ensure that the IRQ signal is deasserted before returning.  This
  * is rather unfortunate.
  */
-static void neponset_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void neponset_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct neponset_drvdata *d = irq_desc_get_handler_data(desc);
 	unsigned int irr;
--- /var/linuxes/linux-next/arch/arm/plat-orion/gpio.c	2014-11-29 15:47:36.682720326 +0100
+++ /var/julia/linuxcopy/arch/arm/plat-orion/gpio.c	2015-06-13 10:31:20.419542710 +0200
@@ -407,8 +407,9 @@ static int gpio_irq_set_type(struct irq_
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct orion_gpio_chip *ochip = irq_get_handler_data(irq);
 	u32 cause, type;
 	int i;
--- /var/linuxes/linux-next/arch/avr32/mach-at32ap/extint.c	2011-10-27 01:37:56.000000000 +0200
+++ /var/julia/linuxcopy/arch/avr32/mach-at32ap/extint.c	2015-06-13 10:31:12.367543009 +0200
@@ -144,7 +144,7 @@ static struct irq_chip eic_chip = {
 	.irq_set_type	= eic_set_irq_type,
 };
 
-static void demux_eic_irq(unsigned int irq, struct irq_desc *desc)
+static void demux_eic_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	struct eic *eic = irq_desc_get_handler_data(desc);
 	unsigned long status, pending;
--- /var/linuxes/linux-next/arch/avr32/mach-at32ap/pio.c	2011-10-27 01:40:04.000000000 +0200
+++ /var/julia/linuxcopy/arch/avr32/mach-at32ap/pio.c	2015-06-13 10:31:12.619543000 +0200
@@ -281,8 +281,9 @@ static struct irq_chip gpio_irqchip = {
 	.irq_set_type	= gpio_irq_type,
 };
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pio_device	*pio = irq_desc_get_chip_data(desc);
 	unsigned		gpio_irq;
 
--- /var/linuxes/linux-next/arch/blackfin/mach-bf537/ints-priority.c	2011-10-27 01:37:56.000000000 +0200
+++ /var/julia/linuxcopy/arch/blackfin/mach-bf537/ints-priority.c	2015-06-13 10:31:07.263543199 +0200
@@ -89,7 +89,7 @@ static struct irq_chip bf537_generic_err
 	.irq_unmask = bf537_generic_error_unmask_irq,
 };
 
-static void bf537_demux_error_irq(unsigned int int_err_irq,
+static void bf537_demux_error_irq(unsigned int __int_err_irq,
 				  struct irq_desc *inta_desc)
 {
 	int irq = 0;
@@ -182,9 +182,10 @@ static struct irq_chip bf537_mac_rx_irqc
 	.irq_unmask = bf537_mac_rx_unmask_irq,
 };
 
-static void bf537_demux_mac_rx_irq(unsigned int int_irq,
+static void bf537_demux_mac_rx_irq(unsigned int __int_irq,
 				   struct irq_desc *desc)
 {
+	unsigned int int_irq = irq_desc_get_irq(desc);
 	if (bfin_read_DMA1_IRQ_STATUS() & (DMA_DONE | DMA_ERR))
 		bfin_handle_irq(IRQ_MAC_RX);
 	else
--- /var/linuxes/linux-next/arch/blackfin/mach-common/ints-priority.c	2015-01-27 11:54:45.061642200 +0100
+++ /var/julia/linuxcopy/arch/blackfin/mach-common/ints-priority.c	2015-06-13 10:31:27.939542430 +0200
@@ -655,7 +655,7 @@ static struct irq_chip bfin_mac_status_i
 	.irq_set_wake = bfin_mac_status_set_wake,
 };
 
-void bfin_demux_mac_status_irq(unsigned int int_err_irq,
+void bfin_demux_mac_status_irq(unsigned int ____int_err_irq,
 			       struct irq_desc *inta_desc)
 {
 	int i, irq = 0;
@@ -824,9 +824,10 @@ static void bfin_demux_gpio_block(unsign
 	}
 }
 
-void bfin_demux_gpio_irq(unsigned int inta_irq,
-			struct irq_desc *desc)
+void bfin_demux_gpio_irq(unsigned int __inta_irq,
+			 struct irq_desc *desc)
 {
+	unsigned int inta_irq = irq_desc_get_irq(desc);
 	unsigned int irq;
 
 	switch (inta_irq) {
--- /var/linuxes/linux-next/arch/c6x/platforms/megamod-pic.c	2012-07-24 10:03:40.000000000 +0200
+++ /var/julia/linuxcopy/arch/c6x/platforms/megamod-pic.c	2015-06-13 10:31:12.147543017 +0200
@@ -93,7 +93,7 @@ static struct irq_chip megamod_chip = {
 	.irq_unmask	= unmask_megamod,
 };
 
-static void megamod_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void megamod_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct megamod_cascade_data *cascade;
 	struct megamod_pic *pic;
--- /var/linuxes/linux-next/arch/m68k/amiga/amiints.c	2011-11-03 17:13:36.000000000 +0100
+++ /var/julia/linuxcopy/arch/m68k/amiga/amiints.c	2015-06-13 10:31:05.111543279 +0200
@@ -46,7 +46,7 @@ static struct irq_chip amiga_irq_chip =
  * The builtin Amiga hardware interrupt handlers.
  */
 
-static void ami_int1(unsigned int irq, struct irq_desc *desc)
+static void ami_int1(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -69,7 +69,7 @@ static void ami_int1(unsigned int irq, s
 	}
 }
 
-static void ami_int3(unsigned int irq, struct irq_desc *desc)
+static void ami_int3(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -92,7 +92,7 @@ static void ami_int3(unsigned int irq, s
 	}
 }
 
-static void ami_int4(unsigned int irq, struct irq_desc *desc)
+static void ami_int4(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -121,7 +121,7 @@ static void ami_int4(unsigned int irq, s
 	}
 }
 
-static void ami_int5(unsigned int irq, struct irq_desc *desc)
+static void ami_int5(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
--- /var/linuxes/linux-next/arch/m68k/coldfire/intc-5272.c	2014-09-09 13:39:34.559435205 +0200
+++ /var/julia/linuxcopy/arch/m68k/coldfire/intc-5272.c	2015-06-13 10:31:04.563543299 +0200
@@ -143,8 +143,9 @@ static int intc_irq_set_type(struct irq_
  * We need to be careful with the masking/acking due to the side effects
  * of masking an interrupt.
  */
-static void intc_external_irq(unsigned int irq, struct irq_desc *desc)
+static void intc_external_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	irq_desc_get_chip(desc)->irq_ack(&desc->irq_data);
 	handle_simple_irq(irq, desc);
 }
--- /var/linuxes/linux-next/arch/m68k/mac/baboon.c	2011-11-19 20:46:33.000000000 +0100
+++ /var/julia/linuxcopy/arch/m68k/mac/baboon.c	2015-06-13 10:31:05.247543274 +0200
@@ -45,7 +45,7 @@ void __init baboon_init(void)
  * Baboon interrupt handler. This works a lot like a VIA.
  */
 
-static void baboon_irq(unsigned int irq, struct irq_desc *desc)
+static void baboon_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int irq_bit, irq_num;
 	unsigned char events;
--- /var/linuxes/linux-next/arch/m68k/mac/oss.c	2015-04-02 22:08:46.063526939 +0200
+++ /var/julia/linuxcopy/arch/m68k/mac/oss.c	2015-06-13 10:31:06.483543228 +0200
@@ -63,8 +63,9 @@ void __init oss_nubus_init(void)
  * Handle miscellaneous OSS interrupts.
  */
 
-static void oss_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	int events = oss->irq_pending &
 	             (OSS_IP_IOPSCC | OSS_IP_SCSI | OSS_IP_IOPISM);
 
@@ -97,7 +98,7 @@ static void oss_irq(unsigned int irq, st
  * Unlike the VIA/RBV this is on its own autovector interrupt level.
  */
 
-static void oss_nubus_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_nubus_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int events, irq_bit, i;
 
--- /var/linuxes/linux-next/arch/m68k/mac/psc.c	2013-11-28 10:47:05.000000000 +0100
+++ /var/julia/linuxcopy/arch/m68k/mac/psc.c	2015-06-13 10:31:05.391543269 +0200
@@ -113,8 +113,9 @@ void __init psc_init(void)
  * PSC interrupt handler. It's a lot like the VIA interrupt handler.
  */
 
-static void psc_irq(unsigned int irq, struct irq_desc *desc)
+static void psc_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned int offset = (unsigned int)irq_desc_get_handler_data(desc);
 	int pIFR	= pIFRbase + offset;
 	int pIER	= pIERbase + offset;
--- /var/linuxes/linux-next/arch/m68k/mac/via.c	2013-11-28 10:47:05.000000000 +0100
+++ /var/julia/linuxcopy/arch/m68k/mac/via.c	2015-06-13 10:31:27.427542449 +0200
@@ -446,7 +446,7 @@ void via_nubus_irq_shutdown(int irq)
  * via6522.c :-), disable/pending masks added.
  */
 
-void via1_irq(unsigned int irq, struct irq_desc *desc)
+void via1_irq(unsigned int ____irq, struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -467,7 +467,7 @@ void via1_irq(unsigned int irq, struct i
 	} while (events >= irq_bit);
 }
 
-static void via2_irq(unsigned int irq, struct irq_desc *desc)
+static void via2_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -493,7 +493,7 @@ static void via2_irq(unsigned int irq, s
  * VIA2 dispatcher as a fast interrupt handler.
  */
 
-void via_nubus_irq(unsigned int irq, struct irq_desc *desc)
+void via_nubus_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int slot_irq;
 	unsigned char slot_bit, events;
--- /var/linuxes/linux-next/arch/mips/alchemy/common/irq.c	2014-08-06 11:35:13.036972463 +0200
+++ /var/julia/linuxcopy/arch/mips/alchemy/common/irq.c	2015-06-13 10:31:09.043543133 +0200
@@ -865,7 +865,7 @@ DISP(ic0r1, AU1000_INTC0_INT_BASE, AU100
 DISP(ic1r0, AU1000_INTC1_INT_BASE, AU1000_IC1_PHYS_ADDR + IC_REQ0INT)
 DISP(ic1r1, AU1000_INTC1_INT_BASE, AU1000_IC1_PHYS_ADDR + IC_REQ1INT)
 
-static void alchemy_gpic_dispatch(unsigned int irq, struct irq_desc *d)
+static void alchemy_gpic_dispatch(unsigned int __irq, struct irq_desc *d)
 {
 	int i = __raw_readl(AU1300_GPIC_ADDR + AU1300_GPIC_PRIENC);
 	generic_handle_irq(ALCHEMY_GPIC_INT_BASE + i);
--- /var/linuxes/linux-next/arch/mips/alchemy/devboards/bcsr.c	2013-01-26 09:57:59.000000000 +0100
+++ /var/julia/linuxcopy/arch/mips/alchemy/devboards/bcsr.c	2015-06-13 10:31:08.667543147 +0200
@@ -85,8 +85,9 @@ EXPORT_SYMBOL_GPL(bcsr_mod);
 /*
  * DB1200/PB1200 CPLD IRQ muxer
  */
-static void bcsr_csc_handler(unsigned int irq, struct irq_desc *d)
+static void bcsr_csc_handler(unsigned int __irq, struct irq_desc *d)
 {
+	unsigned int irq = irq_desc_get_irq(d);
 	unsigned short bisr = __raw_readw(bcsr_virt + BCSR_REG_INTSTAT);
 
 	disable_irq_nosync(irq);
--- /var/linuxes/linux-next/arch/mips/ath25/ar2315.c	2015-06-11 07:18:47.986399429 +0200
+++ /var/julia/linuxcopy/arch/mips/ath25/ar2315.c	2015-06-13 10:31:11.607543037 +0200
@@ -69,7 +69,7 @@ static struct irqaction ar2315_ahb_err_i
 	.name		= "ar2315-ahb-error",
 };
 
-static void ar2315_misc_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar2315_misc_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	u32 pending = ar2315_rst_reg_read(AR2315_ISR) &
 		      ar2315_rst_reg_read(AR2315_IMR);
--- /var/linuxes/linux-next/arch/mips/ath25/ar5312.c	2015-06-11 07:18:47.986399429 +0200
+++ /var/julia/linuxcopy/arch/mips/ath25/ar5312.c	2015-06-13 10:31:11.331543048 +0200
@@ -73,7 +73,7 @@ static struct irqaction ar5312_ahb_err_i
 	.name    = "ar5312-ahb-error",
 };
 
-static void ar5312_misc_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar5312_misc_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	u32 pending = ar5312_rst_reg_read(AR5312_ISR) &
 		      ar5312_rst_reg_read(AR5312_IMR);
--- /var/linuxes/linux-next/arch/mips/ath79/irq.c	2015-06-11 07:18:47.990399429 +0200
+++ /var/julia/linuxcopy/arch/mips/ath79/irq.c	2015-06-13 10:31:10.131543092 +0200
@@ -27,7 +27,7 @@
 #include "common.h"
 #include "machtypes.h"
 
-static void ath79_misc_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ath79_misc_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	void __iomem *base = ath79_reset_base;
 	u32 pending;
@@ -120,8 +120,9 @@ static void __init ath79_misc_irq_init(v
 	irq_set_chained_handler(ATH79_CPU_IRQ(6), ath79_misc_irq_handler);
 }
 
-static void ar934x_ip2_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void ar934x_ip2_irq_dispatch(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 status;
 
 	disable_irq_nosync(irq);
@@ -153,8 +154,10 @@ static void ar934x_ip2_irq_init(void)
 	irq_set_chained_handler(ATH79_CPU_IRQ(2), ar934x_ip2_irq_dispatch);
 }
 
-static void qca955x_ip2_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void qca955x_ip2_irq_dispatch(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 status;
 
 	disable_irq_nosync(irq);
@@ -181,8 +184,10 @@ enable:
 	enable_irq(irq);
 }
 
-static void qca955x_ip3_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void qca955x_ip3_irq_dispatch(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 status;
 
 	disable_irq_nosync(irq);
--- /var/linuxes/linux-next/arch/mips/jz4740/gpio.c	2015-06-11 07:18:48.006399428 +0200
+++ /var/julia/linuxcopy/arch/mips/jz4740/gpio.c	2015-06-13 10:31:08.479543154 +0200
@@ -296,7 +296,8 @@ static void jz_gpio_check_trigger_both(s
 	writel(mask, reg);
 }
 
-static void jz_gpio_irq_demux_handler(unsigned int irq, struct irq_desc *desc)
+static void jz_gpio_irq_demux_handler(unsigned int __irq,
+				      struct irq_desc *desc)
 {
 	uint32_t flag;
 	unsigned int gpio_irq;
--- /var/linuxes/linux-next/arch/mips/kernel/i8259.c	2015-06-11 07:18:48.010399428 +0200
+++ /var/julia/linuxcopy/arch/mips/kernel/i8259.c	2015-06-13 10:31:09.295543123 +0200
@@ -353,8 +353,9 @@ void __init init_i8259_irqs(void)
 	__init_i8259_irqs(NULL);
 }
 
-static void i8259_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void i8259_irq_dispatch(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *domain = irq_get_handler_data(irq);
 	int hwirq = i8259_irq();
 
--- /var/linuxes/linux-next/arch/mips/netlogic/common/smp.c	2015-03-29 18:14:16.636904317 +0200
+++ /var/julia/linuxcopy/arch/mips/netlogic/common/smp.c	2015-06-13 10:31:33.551542221 +0200
@@ -82,8 +82,9 @@ void nlm_send_ipi_mask(const struct cpum
 }
 
 /* IRQ_IPI_SMP_FUNCTION Handler */
-void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc)
+void nlm_smp_function_ipi_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	clear_c0_eimr(irq);
 	ack_c0_eirr(irq);
 	smp_call_function_interrupt();
@@ -91,8 +92,9 @@ void nlm_smp_function_ipi_handler(unsign
 }
 
 /* IRQ_IPI_SMP_RESCHEDULE  handler */
-void nlm_smp_resched_ipi_handler(unsigned int irq, struct irq_desc *desc)
+void nlm_smp_resched_ipi_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	clear_c0_eimr(irq);
 	ack_c0_eirr(irq);
 	scheduler_ipi();
--- /var/linuxes/linux-next/arch/mips/pci/pci-ar2315.c	2015-06-11 07:18:48.046399427 +0200
+++ /var/julia/linuxcopy/arch/mips/pci/pci-ar2315.c	2015-06-13 10:31:11.075543057 +0200
@@ -318,7 +318,7 @@ static int ar2315_pci_host_setup(struct
 	return 0;
 }
 
-static void ar2315_pci_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar2315_pci_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	struct ar2315_pci_ctrl *apc = irq_desc_get_handler_data(desc);
 	u32 pending = ar2315_pci_reg_read(apc, AR2315_PCI_ISR) &
--- /var/linuxes/linux-next/arch/mips/pci/pci-ar71xx.c	2015-06-11 07:18:48.046399427 +0200
+++ /var/julia/linuxcopy/arch/mips/pci/pci-ar71xx.c	2015-06-13 10:31:10.599543075 +0200
@@ -226,7 +226,7 @@ static struct pci_ops ar71xx_pci_ops = {
 	.write	= ar71xx_pci_write_config,
 };
 
-static void ar71xx_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ar71xx_pci_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct ar71xx_pci_controller *apc;
 	void __iomem *base = ath79_reset_base;
--- /var/linuxes/linux-next/arch/mips/pci/pci-ar724x.c	2015-06-11 07:18:48.046399427 +0200
+++ /var/julia/linuxcopy/arch/mips/pci/pci-ar724x.c	2015-06-13 10:31:10.375543083 +0200
@@ -225,7 +225,7 @@ static struct pci_ops ar724x_pci_ops = {
 	.write	= ar724x_pci_write,
 };
 
-static void ar724x_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ar724x_pci_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct ar724x_pci_controller *apc;
 	void __iomem *base;
--- /var/linuxes/linux-next/arch/mips/pci/pci-rt3883.c	2015-06-11 07:18:48.046399427 +0200
+++ /var/julia/linuxcopy/arch/mips/pci/pci-rt3883.c	2015-06-13 10:31:10.807543067 +0200
@@ -129,7 +129,7 @@ static void rt3883_pci_write_cfg32(struc
 	rt3883_pci_w32(rpc, val, RT3883_PCI_REG_CFGDATA);
 }
 
-static void rt3883_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void rt3883_pci_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct rt3883_pci_controller *rpc;
 	u32 pending;
--- /var/linuxes/linux-next/arch/mips/ralink/irq.c	2015-06-11 07:18:48.046399427 +0200
+++ /var/julia/linuxcopy/arch/mips/ralink/irq.c	2015-06-13 10:31:11.755543032 +0200
@@ -95,7 +95,7 @@ unsigned int get_c0_compare_int(void)
 	return CP0_LEGACY_COMPARE_IRQ;
 }
 
-static void ralink_intc_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ralink_intc_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	u32 pending = rt_intc_r32(INTC_REG_STATUS0);
 
--- /var/linuxes/linux-next/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c	2012-02-08 18:41:50.000000000 +0100
+++ /var/julia/linuxcopy/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c	2015-06-13 10:31:14.527542929 +0200
@@ -105,7 +105,7 @@ cpld_pic_get_irq(int offset, u8 ignore,
 }
 
 static void
-cpld_pic_cascade(unsigned int irq, struct irq_desc *desc)
+cpld_pic_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	irq = cpld_pic_get_irq(0, PCI_IGNORE, &cpld_regs->pci_status,
 		&cpld_regs->pci_mask);
--- /var/linuxes/linux-next/arch/powerpc/platforms/52xx/media5200.c	2014-09-28 16:59:48.497931452 +0200
+++ /var/julia/linuxcopy/arch/powerpc/platforms/52xx/media5200.c	2015-06-13 10:31:16.643542850 +0200
@@ -80,7 +80,7 @@ static struct irq_chip media5200_irq_chi
 	.irq_mask_ack = media5200_irq_mask,
 };
 
-void media5200_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void media5200_irq_cascade(unsigned int __virq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int sub_virq, val;
--- /var/linuxes/linux-next/arch/powerpc/platforms/52xx/mpc52xx_gpt.c	2015-06-11 07:18:48.078399425 +0200
+++ /var/julia/linuxcopy/arch/powerpc/platforms/52xx/mpc52xx_gpt.c	2015-06-13 10:31:16.855542842 +0200
@@ -191,7 +191,7 @@ static struct irq_chip mpc52xx_gpt_irq_c
 	.irq_set_type = mpc52xx_gpt_irq_set_type,
 };
 
-void mpc52xx_gpt_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void mpc52xx_gpt_irq_cascade(unsigned int __virq, struct irq_desc *desc)
 {
 	struct mpc52xx_gpt_priv *gpt = irq_desc_get_handler_data(desc);
 	int sub_virq;
--- /var/linuxes/linux-next/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c	2012-11-25 19:53:20.000000000 +0100
+++ /var/julia/linuxcopy/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c	2015-06-13 10:31:14.127542944 +0200
@@ -78,7 +78,7 @@ static struct irq_chip pq2ads_pci_ic = {
 	.irq_disable = pq2ads_pci_mask_irq
 };
 
-static void pq2ads_pci_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void pq2ads_pci_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pq2ads_pci_pic *priv = irq_desc_get_handler_data(desc);
 	u32 stat, mask, pend;
--- /var/linuxes/linux-next/arch/powerpc/platforms/85xx/common.c	2015-04-09 16:05:25.817843115 +0200
+++ /var/julia/linuxcopy/arch/powerpc/platforms/85xx/common.c	2015-06-13 10:31:15.819542881 +0200
@@ -49,7 +49,7 @@ int __init mpc85xx_common_publish_device
 	return of_platform_bus_probe(NULL, mpc85xx_common_ids, NULL);
 }
 #ifdef CONFIG_CPM2
-static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm2_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq;
--- /var/linuxes/linux-next/arch/powerpc/platforms/85xx/mpc85xx_cds.c	2014-03-26 18:13:37.798022642 +0100
+++ /var/julia/linuxcopy/arch/powerpc/platforms/85xx/mpc85xx_cds.c	2015-06-13 10:31:15.407542896 +0200
@@ -192,9 +192,10 @@ void mpc85xx_cds_fixup_bus(struct pci_bu
 }
 
 #ifdef CONFIG_PPC_I8259
-static void mpc85xx_8259_cascade_handler(unsigned int irq,
+static void mpc85xx_8259_cascade_handler(unsigned int __irq,
 					 struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned int cascade_irq = i8259_irq();
 
 	if (cascade_irq != NO_IRQ)
--- /var/linuxes/linux-next/arch/powerpc/platforms/85xx/mpc85xx_ds.c	2014-03-26 18:13:37.798022642 +0100
+++ /var/julia/linuxcopy/arch/powerpc/platforms/85xx/mpc85xx_ds.c	2015-06-13 10:31:15.191542904 +0200
@@ -46,7 +46,7 @@
 #endif
 
 #ifdef CONFIG_PPC_I8259
-static void mpc85xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc85xx_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
--- /var/linuxes/linux-next/arch/powerpc/platforms/85xx/socrates_fpga_pic.c	2013-10-31 21:45:24.000000000 +0100
+++ /var/julia/linuxcopy/arch/powerpc/platforms/85xx/socrates_fpga_pic.c	2015-06-13 10:31:15.631542888 +0200
@@ -91,8 +91,9 @@ static inline unsigned int socrates_fpga
 			(irq_hw_number_t)i);
 }
 
-void socrates_fpga_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void socrates_fpga_pic_cascade(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
 
--- /var/linuxes/linux-next/arch/powerpc/platforms/86xx/pic.c	2013-10-31 21:45:24.000000000 +0100
+++ /var/julia/linuxcopy/arch/powerpc/platforms/86xx/pic.c	2015-06-13 10:31:14.991542912 +0200
@@ -17,7 +17,7 @@
 #include <asm/i8259.h>
 
 #ifdef CONFIG_PPC_I8259
-static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc86xx_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
--- /var/linuxes/linux-next/arch/powerpc/platforms/8xx/m8xx_setup.c	2014-06-28 20:09:11.313152825 +0200
+++ /var/julia/linuxcopy/arch/powerpc/platforms/8xx/m8xx_setup.c	2015-06-13 10:31:14.323542936 +0200
@@ -214,7 +214,7 @@ void mpc8xx_restart(char *cmd)
 	panic("Restart failed\n");
 }
 
-static void cpm_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq = cpm_get_irq();
--- /var/linuxes/linux-next/arch/powerpc/platforms/cell/axon_msi.c	2015-06-11 07:18:48.078399425 +0200
+++ /var/julia/linuxcopy/arch/powerpc/platforms/cell/axon_msi.c	2015-06-13 10:31:13.463542968 +0200
@@ -93,7 +93,7 @@ static void msic_dcr_write(struct axon_m
 	dcr_write(msic->dcr_host, dcr_n, val);
 }
 
-static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
+static void axon_msi_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct axon_msic *msic = irq_desc_get_handler_data(desc);
--- /var/linuxes/linux-next/arch/powerpc/platforms/cell/interrupt.c	2015-04-11 07:10:38.244609522 +0200
+++ /var/julia/linuxcopy/arch/powerpc/platforms/cell/interrupt.c	2015-06-13 10:31:13.919542951 +0200
@@ -99,8 +99,9 @@ static void iic_ioexc_eoi(struct irq_dat
 {
 }
 
-static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc)
+static void iic_ioexc_cascade(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct cbe_iic_regs __iomem *node_iic =
 		(void __iomem *)irq_desc_get_handler_data(desc);
--- /var/linuxes/linux-next/arch/powerpc/platforms/cell/spider-pic.c	2013-10-31 21:45:24.000000000 +0100
+++ /var/julia/linuxcopy/arch/powerpc/platforms/cell/spider-pic.c	2015-06-13 10:31:13.679542960 +0200
@@ -199,7 +199,7 @@ static const struct irq_domain_ops spide
 	.xlate = spider_host_xlate,
 };
 
-static void spider_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void spider_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct spider_pic *pic = irq_desc_get_handler_data(desc);
--- /var/linuxes/linux-next/arch/powerpc/platforms/chrp/setup.c	2015-04-09 16:05:25.817843115 +0200
+++ /var/julia/linuxcopy/arch/powerpc/platforms/chrp/setup.c	2015-06-13 10:31:16.487542856 +0200
@@ -363,7 +363,7 @@ void __init chrp_setup_arch(void)
 	if (ppc_md.progress) ppc_md.progress("Linux/PPC "UTS_RELEASE"\n", 0x0);
 }
 
-static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void chrp_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
--- /var/linuxes/linux-next/arch/powerpc/platforms/embedded6xx/hlwd-pic.c	2015-06-11 07:18:48.078399425 +0200
+++ /var/julia/linuxcopy/arch/powerpc/platforms/embedded6xx/hlwd-pic.c	2015-06-13 10:31:16.215542866 +0200
@@ -120,7 +120,7 @@ static unsigned int __hlwd_pic_get_irq(s
 	return irq_linear_revmap(h, irq);
 }
 
-static void hlwd_pic_irq_cascade(unsigned int cascade_virq,
+static void hlwd_pic_irq_cascade(unsigned int __cascade_virq,
 				      struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
--- /var/linuxes/linux-next/arch/powerpc/platforms/embedded6xx/mvme5100.c	2014-09-28 16:59:48.501931452 +0200
+++ /var/julia/linuxcopy/arch/powerpc/platforms/embedded6xx/mvme5100.c	2015-06-13 10:31:16.011542874 +0200
@@ -42,7 +42,7 @@
 static phys_addr_t pci_membase;
 static u_char *restart;
 
-static void mvme5100_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mvme5100_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
--- /var/linuxes/linux-next/arch/powerpc/platforms/pseries/setup.c	2015-04-15 21:00:15.397904047 +0200
+++ /var/julia/linuxcopy/arch/powerpc/platforms/pseries/setup.c	2015-06-13 10:31:14.803542919 +0200
@@ -111,7 +111,7 @@ static void __init fwnmi_init(void)
 		fwnmi_active = 1;
 }
 
-static void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void pseries_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
--- /var/linuxes/linux-next/arch/powerpc/sysdev/ge/ge_pic.c	2012-03-24 22:42:59.000000000 +0100
+++ /var/julia/linuxcopy/arch/powerpc/sysdev/ge/ge_pic.c	2015-06-13 10:31:13.071542983 +0200
@@ -91,7 +91,7 @@ static int gef_pic_cascade_irq;
  * should be masked out.
  */
 
-void gef_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void gef_pic_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
--- /var/linuxes/linux-next/arch/powerpc/sysdev/tsi108_pci.c	2015-05-25 16:03:31.087858330 +0200
+++ /var/julia/linuxcopy/arch/powerpc/sysdev/tsi108_pci.c	2015-06-13 10:31:34.607542182 +0200
@@ -428,7 +428,7 @@ void __init tsi108_pci_int_init(struct d
 	init_pci_source();
 }
 
-void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc)
+void tsi108_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = get_pci_source();
--- /var/linuxes/linux-next/arch/powerpc/sysdev/uic.c	2015-06-11 07:18:48.082399425 +0200
+++ /var/julia/linuxcopy/arch/powerpc/sysdev/uic.c	2015-06-13 10:31:13.279542975 +0200
@@ -194,7 +194,7 @@ static const struct irq_domain_ops uic_h
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-void uic_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void uic_irq_cascade(unsigned int __virq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_data *idata = irq_desc_get_irq_data(desc);
--- /var/linuxes/linux-next/arch/powerpc/sysdev/xilinx_intc.c	2015-05-25 16:03:31.087858330 +0200
+++ /var/julia/linuxcopy/arch/powerpc/sysdev/xilinx_intc.c	2015-06-13 10:31:12.835542992 +0200
@@ -222,7 +222,7 @@ int xilinx_intc_get_irq(void)
 /*
  * Support code for cascading to 8259 interrupt controllers
  */
-static void xilinx_i8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void xilinx_i8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
--- /var/linuxes/linux-next/arch/sh/boards/mach-se/7343/irq.c	2015-02-09 14:08:00.979569021 +0100
+++ /var/julia/linuxcopy/arch/sh/boards/mach-se/7343/irq.c	2015-06-13 10:31:04.011543320 +0200
@@ -29,8 +29,9 @@
 static void __iomem *se7343_irq_regs;
 struct irq_domain *se7343_irq_domain;
 
-static void se7343_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7343_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
--- /var/linuxes/linux-next/arch/sh/boards/mach-se/7722/irq.c	2015-02-09 14:08:00.979569021 +0100
+++ /var/julia/linuxcopy/arch/sh/boards/mach-se/7722/irq.c	2015-06-13 10:31:04.143543315 +0200
@@ -28,8 +28,9 @@
 static void __iomem *se7722_irq_regs;
 struct irq_domain *se7722_irq_domain;
 
-static void se7722_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7722_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
--- /var/linuxes/linux-next/arch/sh/boards/mach-se/7724/irq.c	2012-06-03 21:09:49.000000000 +0200
+++ /var/julia/linuxcopy/arch/sh/boards/mach-se/7724/irq.c	2015-06-13 10:31:03.867543325 +0200
@@ -92,8 +92,9 @@ static struct irq_chip se7724_irq_chip _
 	.irq_unmask	= enable_se7724_irq,
 };
 
-static void se7724_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7724_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct fpga_irq set = get_fpga_irq(irq);
 	unsigned short intv = __raw_readw(set.sraddr);
 	unsigned int ext_irq = set.base;
--- /var/linuxes/linux-next/arch/sh/boards/mach-x3proto/gpio.c	2014-09-28 16:59:48.513931451 +0200
+++ /var/julia/linuxcopy/arch/sh/boards/mach-x3proto/gpio.c	2015-06-13 10:31:04.275543310 +0200
@@ -60,8 +60,10 @@ static int x3proto_gpio_to_irq(struct gp
 	return virq;
 }
 
-static void x3proto_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void x3proto_gpio_irq_handler(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
--- /var/linuxes/linux-next/arch/sh/cchips/hd6446x/hd64461.c	2012-06-03 21:09:49.000000000 +0200
+++ /var/julia/linuxcopy/arch/sh/cchips/hd6446x/hd64461.c	2015-06-13 10:31:04.411543305 +0200
@@ -56,7 +56,7 @@ static struct irq_chip hd64461_irq_chip
 	.irq_unmask	= hd64461_unmask_irq,
 };
 
-static void hd64461_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void hd64461_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short intv = __raw_readw(HD64461_NIRR);
 	unsigned int ext_irq = HD64461_IRQBASE;
--- /var/linuxes/linux-next/arch/tile/kernel/pci_gx.c	2015-03-29 18:14:16.680904316 +0200
+++ /var/julia/linuxcopy/arch/tile/kernel/pci_gx.c	2015-06-13 10:31:06.871543214 +0200
@@ -304,8 +304,9 @@ static struct irq_chip tilegx_legacy_irq
  * to Linux which just calls handle_level_irq() after clearing the
  * MAC INTx Assert status bit associated with this interrupt.
  */
-static void trio_handle_level_irq(unsigned int irq, struct irq_desc *desc)
+static void trio_handle_level_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pci_controller *controller = irq_desc_get_handler_data(desc);
 	gxio_trio_context_t *trio_context = controller->trio;
 	uint64_t intx = (uint64_t)irq_desc_get_chip_data(desc);
--- /var/linuxes/linux-next/arch/unicore32/kernel/irq.c	2012-04-02 16:20:04.000000000 +0200
+++ /var/julia/linuxcopy/arch/unicore32/kernel/irq.c	2015-06-13 10:31:11.923543026 +0200
@@ -113,7 +113,7 @@ static struct irq_chip puv3_low_gpio_chi
  * and call the handler.
  */
 static void
-puv3_gpio_handler(unsigned int irq, struct irq_desc *desc)
+puv3_gpio_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int mask;
 
--- /var/linuxes/linux-next/arch/x86/lguest/boot.c	2015-05-26 21:47:09.119877951 +0200
+++ /var/julia/linuxcopy/arch/x86/lguest/boot.c	2015-06-13 10:31:23.767542585 +0200
@@ -1021,7 +1021,7 @@ static struct clock_event_device lguest_
  * This is the Guest timer interrupt handler (hardware interrupt 0).  We just
  * call the clockevent infrastructure and it does whatever needs doing.
  */
-static void lguest_time_irq(unsigned int irq, struct irq_desc *desc)
+static void lguest_time_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long flags;
 
--- /var/linuxes/linux-next/drivers/dma/ipu/ipu_irq.c	2013-09-23 19:01:31.000000000 +0200
+++ /var/julia/linuxcopy/drivers/dma/ipu/ipu_irq.c	2015-06-13 10:30:47.743543925 +0200
@@ -266,8 +266,9 @@ int ipu_irq_unmap(unsigned int source)
 }
 
 /* Chained IRQ handler for IPU error interrupt */
-static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_err(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct ipu *ipu = irq_get_handler_data(irq);
 	u32 status;
 	int i, line;
@@ -307,8 +308,9 @@ static void ipu_irq_err(unsigned int irq
 }
 
 /* Chained IRQ handler for IPU function interrupt */
-static void ipu_irq_fn(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_fn(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct ipu *ipu = irq_desc_get_handler_data(desc);
 	u32 status;
 	int i, line;
--- /var/linuxes/linux-next/drivers/gpio/gpio-bcm-kona.c	2015-05-25 16:03:31.299858322 +0200
+++ /var/julia/linuxcopy/drivers/gpio/gpio-bcm-kona.c	2015-06-13 10:30:53.735543702 +0200
@@ -433,8 +433,10 @@ static int bcm_kona_gpio_irq_set_type(st
 	return 0;
 }
 
-static void bcm_kona_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void bcm_kona_gpio_irq_handler(unsigned int __irq,
+				      struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	void __iomem *reg_base;
 	int bit, bank_id;
 	unsigned long sta;
--- /var/linuxes/linux-next/drivers/gpio/gpio-davinci.c	2014-11-18 14:02:58.318302579 +0100
+++ /var/julia/linuxcopy/drivers/gpio/gpio-davinci.c	2015-06-13 10:30:54.303543681 +0200
@@ -327,8 +327,9 @@ static struct irq_chip gpio_irqchip = {
 };
 
 static void
-gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct davinci_gpio_regs __iomem *g;
 	u32 mask = 0xffff;
 	struct davinci_gpio_controller *d;
--- /var/linuxes/linux-next/drivers/gpio/gpio-dwapb.c	2015-01-27 11:54:45.205642194 +0100
+++ /var/julia/linuxcopy/drivers/gpio/gpio-dwapb.c	2015-06-13 10:30:56.091543614 +0200
@@ -147,8 +147,9 @@ static u32 dwapb_do_irq(struct dwapb_gpi
 	return ret;
 }
 
-static void dwapb_irq_handler(u32 irq, struct irq_desc *desc)
+static void dwapb_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct dwapb_gpio *gpio = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
--- /var/linuxes/linux-next/drivers/gpio/gpio-ep93xx.c	2014-11-16 10:01:31.001268457 +0100
+++ /var/julia/linuxcopy/drivers/gpio/gpio-ep93xx.c	2015-06-13 10:30:54.099543689 +0200
@@ -78,7 +78,8 @@ static void ep93xx_gpio_int_debounce(uns
 		EP93XX_GPIO_REG(int_debounce_register_offset[port]));
 }
 
-static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ep93xx_gpio_ab_irq_handler(unsigned int __irq,
+				       struct irq_desc *desc)
 {
 	unsigned char status;
 	int i;
@@ -100,8 +101,10 @@ static void ep93xx_gpio_ab_irq_handler(u
 	}
 }
 
-static void ep93xx_gpio_f_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ep93xx_gpio_f_irq_handler(unsigned int __irq,
+				      struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	/*
 	 * map discontiguous hw irq range to continuous sw irq range:
 	 *
--- /var/linuxes/linux-next/drivers/gpio/gpio-mpc8xxx.c	2015-05-25 16:03:31.303858322 +0200
+++ /var/julia/linuxcopy/drivers/gpio/gpio-mpc8xxx.c	2015-06-13 10:30:56.275543608 +0200
@@ -185,7 +185,8 @@ static int mpc8xxx_gpio_to_irq(struct gp
 		return -ENXIO;
 }
 
-static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc8xxx_gpio_irq_cascade(unsigned int __irq,
+				     struct irq_desc *desc)
 {
 	struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
--- /var/linuxes/linux-next/drivers/gpio/gpio-msic.c	2014-11-16 10:01:31.001268457 +0100
+++ /var/julia/linuxcopy/drivers/gpio/gpio-msic.c	2015-06-13 10:30:55.387543641 +0200
@@ -232,7 +232,7 @@ static struct irq_chip msic_irqchip = {
 	.irq_bus_sync_unlock	= msic_bus_sync_unlock,
 };
 
-static void msic_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void msic_gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct msic_gpio *mg = irq_data_get_irq_handler_data(data);
--- /var/linuxes/linux-next/drivers/gpio/gpio-msm-v2.c	2014-11-16 10:01:31.001268457 +0100
+++ /var/julia/linuxcopy/drivers/gpio/gpio-msm-v2.c	2015-06-13 10:30:54.983543656 +0200
@@ -313,7 +313,7 @@ static int msm_gpio_irq_set_type(struct
  * which have been set as summary IRQ lines and which are triggered,
  * and to call their interrupt handlers.
  */
-static void msm_summary_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void msm_summary_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long i;
 	struct irq_chip *chip = irq_desc_get_chip(desc);
--- /var/linuxes/linux-next/drivers/gpio/gpio-mvebu.c	2015-04-11 07:10:38.248609522 +0200
+++ /var/julia/linuxcopy/drivers/gpio/gpio-mvebu.c	2015-06-13 10:30:55.647543631 +0200
@@ -458,8 +458,9 @@ static int mvebu_gpio_irq_set_type(struc
 	return 0;
 }
 
-static void mvebu_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void mvebu_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct mvebu_gpio_chip *mvchip = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	u32 cause, type;
--- /var/linuxes/linux-next/drivers/gpio/gpio-mxc.c	2015-05-25 16:03:31.303858322 +0200
+++ /var/julia/linuxcopy/drivers/gpio/gpio-mxc.c	2015-06-13 10:30:56.659543593 +0200
@@ -272,8 +272,9 @@ static void mxc_gpio_irq_handler(struct
 }
 
 /* MX1 and MX3 has one interrupt *per* gpio port */
-static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx3_gpio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 irq_stat;
 	struct mxc_gpio_port *port = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
@@ -288,8 +289,9 @@ static void mx3_gpio_irq_handler(u32 irq
 }
 
 /* MX2 has one interrupt *for all* gpio ports */
-static void mx2_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx2_gpio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 irq_msk, irq_stat;
 	struct mxc_gpio_port *port;
 	struct irq_chip *chip = irq_get_chip(irq);
--- /var/linuxes/linux-next/drivers/gpio/gpio-mxs.c	2015-05-25 16:03:31.303858322 +0200
+++ /var/julia/linuxcopy/drivers/gpio/gpio-mxs.c	2015-06-13 10:30:54.803543662 +0200
@@ -154,8 +154,9 @@ static void mxs_flip_edge(struct mxs_gpi
 }
 
 /* MXS has one interrupt *per* gpio port */
-static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mxs_gpio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 irq_stat;
 	struct mxs_gpio_port *port = irq_get_handler_data(irq);
 
--- /var/linuxes/linux-next/drivers/gpio/gpio-pxa.c	2015-03-12 22:23:12.134844786 +0100
+++ /var/julia/linuxcopy/drivers/gpio/gpio-pxa.c	2015-06-13 10:30:55.215543647 +0200
@@ -401,7 +401,7 @@ static int pxa_gpio_irq_type(struct irq_
 	return 0;
 }
 
-static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc)
+static void pxa_gpio_demux_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pxa_gpio_chip *c;
 	int loop, gpio, gpio_base, n;
--- /var/linuxes/linux-next/drivers/gpio/gpio-sa1100.c	2015-05-25 16:03:31.303858322 +0200
+++ /var/julia/linuxcopy/drivers/gpio/gpio-sa1100.c	2015-06-13 10:30:54.631543669 +0200
@@ -173,7 +173,7 @@ static struct irq_domain *sa1100_gpio_ir
  * and call the handler.
  */
 static void
-sa1100_gpio_handler(unsigned int irq, struct irq_desc *desc)
+sa1100_gpio_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int mask;
 
--- /var/linuxes/linux-next/drivers/gpio/gpio-tegra.c	2015-06-11 07:18:48.246399419 +0200
+++ /var/julia/linuxcopy/drivers/gpio/gpio-tegra.c	2015-06-13 10:30:56.879543585 +0200
@@ -266,8 +266,9 @@ static void tegra_gpio_irq_shutdown(stru
 	gpiochip_unlock_as_irq(&tegra_gpio_chip, gpio);
 }
 
-static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void tegra_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct tegra_gpio_bank *bank;
 	int port;
 	int pin;
--- /var/linuxes/linux-next/drivers/gpio/gpio-timberdale.c	2014-11-16 10:01:31.005268457 +0100
+++ /var/julia/linuxcopy/drivers/gpio/gpio-timberdale.c	2015-06-13 10:30:54.479543674 +0200
@@ -192,8 +192,9 @@ out:
 	return ret;
 }
 
-static void timbgpio_irq(unsigned int irq, struct irq_desc *desc)
+static void timbgpio_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct timbgpio *tgpio = irq_get_handler_data(irq);
 	unsigned long ipr;
 	int offset;
--- /var/linuxes/linux-next/drivers/gpio/gpio-tz1090.c	2015-01-27 11:54:45.209642194 +0100
+++ /var/julia/linuxcopy/drivers/gpio/gpio-tz1090.c	2015-06-13 10:30:55.855543623 +0200
@@ -375,7 +375,7 @@ static int gpio_set_irq_wake(struct irq_
 #define gpio_set_irq_wake NULL
 #endif
 
-static void tz1090_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void tz1090_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	irq_hw_number_t hw;
 	unsigned int irq_stat, irq_no;
--- /var/linuxes/linux-next/drivers/gpu/ipu-v3/ipu-common.c	2015-03-03 13:07:04.749007532 +0100
+++ /var/julia/linuxcopy/drivers/gpu/ipu-v3/ipu-common.c	2015-06-13 10:30:53.139543724 +0200
@@ -912,8 +912,9 @@ static void ipu_irq_handle(struct ipu_so
 	}
 }
 
-static void ipu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
 	const int int_reg[] = { 0, 1, 2, 3, 10, 11, 12, 13, 14};
 	struct irq_chip *chip = irq_get_chip(irq);
@@ -925,8 +926,9 @@ static void ipu_irq_handler(unsigned int
 	chained_irq_exit(chip, desc);
 }
 
-static void ipu_err_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ipu_err_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
 	const int int_reg[] = { 4, 5, 8, 9};
 	struct irq_chip *chip = irq_get_chip(irq);
--- /var/linuxes/linux-next/drivers/irqchip/exynos-combiner.c	2015-05-25 16:03:31.435858317 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/exynos-combiner.c	2015-06-13 10:31:02.671543370 +0200
@@ -60,8 +60,10 @@ static void combiner_unmask_irq(struct i
 	__raw_writel(mask, combiner_base(data) + COMBINER_ENABLE_SET);
 }
 
-static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+static void combiner_handle_cascade_irq(unsigned int __irq,
+					struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct combiner_chip_data *chip_data = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned int cascade_irq, combiner_irq;
--- /var/linuxes/linux-next/drivers/irqchip/irq-armada-370-xp.c	2015-05-25 16:03:31.435858317 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-armada-370-xp.c	2015-06-13 10:31:00.127543464 +0200
@@ -448,9 +448,10 @@ static void armada_370_xp_handle_msi_irq
 static void armada_370_xp_handle_msi_irq(struct pt_regs *r, bool b) {}
 #endif
 
-static void armada_370_xp_mpic_handle_cascade_irq(unsigned int irq,
+static void armada_370_xp_mpic_handle_cascade_irq(unsigned int __irq,
 						  struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned long irqmap, irqn, irqsrc, cpuid;
 	unsigned int cascade_irq;
--- /var/linuxes/linux-next/drivers/irqchip/irq-bcm7038-l1.c	2015-03-29 18:14:16.868904309 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-bcm7038-l1.c	2015-06-13 10:31:01.499543413 +0200
@@ -116,7 +116,7 @@ static inline void l1_writel(u32 val, vo
 		writel(val, reg);
 }
 
-static void bcm7038_l1_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void bcm7038_l1_irq_handle(unsigned int __irq, struct irq_desc *desc)
 {
 	struct bcm7038_l1_chip *intc = irq_desc_get_handler_data(desc);
 	struct bcm7038_l1_cpu *cpu;
--- /var/linuxes/linux-next/drivers/irqchip/irq-bcm7120-l2.c	2015-03-29 18:14:16.868904309 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-bcm7120-l2.c	2015-06-13 10:30:59.919543472 +0200
@@ -52,7 +52,8 @@ struct bcm7120_l2_intc_data {
 	const __be32 *map_mask_prop;
 };
 
-static void bcm7120_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void bcm7120_l2_intc_irq_handle(unsigned int __irq,
+				       struct irq_desc *desc)
 {
 	struct bcm7120_l2_intc_data *b = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
--- /var/linuxes/linux-next/drivers/irqchip/irq-brcmstb-l2.c	2015-03-29 18:14:16.868904309 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-brcmstb-l2.c	2015-06-13 10:30:59.539543486 +0200
@@ -51,8 +51,10 @@ struct brcmstb_l2_intc_data {
 	u32 saved_mask; /* for suspend/resume */
 };
 
-static void brcmstb_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void brcmstb_l2_intc_irq_handle(unsigned int __irq,
+				       struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct brcmstb_l2_intc_data *b = irq_desc_get_handler_data(desc);
 	struct irq_chip_generic *gc = irq_get_domain_generic_chip(b->domain, 0);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
--- /var/linuxes/linux-next/drivers/irqchip/irq-dw-apb-ictl.c	2014-11-29 15:47:36.790720322 +0100
+++ /var/julia/linuxcopy/drivers/irqchip/irq-dw-apb-ictl.c	2015-06-13 10:31:00.671543444 +0200
@@ -26,8 +26,9 @@
 #define APB_INT_FINALSTATUS_L	0x30
 #define APB_INT_FINALSTATUS_H	0x34
 
-static void dw_apb_ictl_handler(unsigned int irq, struct irq_desc *desc)
+static void dw_apb_ictl_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct irq_chip_generic *gc = irq_get_handler_data(irq);
 	struct irq_domain *d = gc->private;
--- /var/linuxes/linux-next/drivers/irqchip/irq-gic.c	2015-06-11 07:18:48.530399409 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-gic.c	2015-06-13 10:31:03.715543331 +0200
@@ -286,8 +286,9 @@ static void __exception_irq_entry gic_ha
 	} while (1);
 }
 
-static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+static void gic_handle_cascade_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct gic_chip_data *chip_data = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned int cascade_irq, gic_irq;
--- /var/linuxes/linux-next/drivers/irqchip/irq-imgpdc.c	2013-08-24 13:44:34.000000000 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-imgpdc.c	2015-06-13 10:31:03.407543342 +0200
@@ -218,8 +218,9 @@ static int pdc_irq_set_wake(struct irq_d
 	return 0;
 }
 
-static void pdc_intc_perip_isr(unsigned int irq, struct irq_desc *desc)
+static void pdc_intc_perip_isr(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pdc_intc_priv *priv;
 	unsigned int i, irq_no;
 
@@ -239,7 +240,7 @@ found:
 	generic_handle_irq(irq_no);
 }
 
-static void pdc_intc_syswake_isr(unsigned int irq, struct irq_desc *desc)
+static void pdc_intc_syswake_isr(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pdc_intc_priv *priv;
 	unsigned int syswake, irq_no;
--- /var/linuxes/linux-next/drivers/irqchip/irq-keystone.c	2015-05-25 16:03:31.435858317 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-keystone.c	2015-06-13 10:31:01.335543419 +0200
@@ -84,8 +84,9 @@ static void keystone_irq_ack(struct irq_
 	/* nothing to do here */
 }
 
-static void keystone_irq_handler(unsigned irq, struct irq_desc *desc)
+static void keystone_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct keystone_irq_device *kirq = irq_desc_get_handler_data(desc);
 	unsigned long pending;
 	int src, virq;
--- /var/linuxes/linux-next/drivers/irqchip/irq-metag.c	2014-02-28 08:06:01.586441457 +0100
+++ /var/julia/linuxcopy/drivers/irqchip/irq-metag.c	2015-06-13 10:31:02.511543376 +0200
@@ -220,7 +220,8 @@ static int metag_internal_irq_set_affini
  *	occurred. It is this function's job to demux this irq and
  *	figure out exactly which trigger needs servicing.
  */
-static void metag_internal_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void metag_internal_irq_demux(unsigned int __irq,
+				     struct irq_desc *desc)
 {
 	struct metag_internal_irq_priv *priv = irq_desc_get_handler_data(desc);
 	irq_hw_number_t hw;
--- /var/linuxes/linux-next/drivers/irqchip/irq-metag-ext.c	2014-02-28 08:06:01.586441457 +0100
+++ /var/julia/linuxcopy/drivers/irqchip/irq-metag-ext.c	2015-06-13 10:31:00.519543450 +0200
@@ -447,7 +447,7 @@ static int meta_intc_irq_set_type(struct
  * Whilst using TR2 to detect external interrupts is a software convention it is
  * (hopefully) unlikely to change.
  */
-static void meta_intc_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void meta_intc_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct meta_intc_priv *priv = &meta_intc_priv;
 	irq_hw_number_t hw;
--- /var/linuxes/linux-next/drivers/irqchip/irq-mips-gic.c	2015-05-25 16:03:31.435858317 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-mips-gic.c	2015-06-13 10:31:00.907543435 +0200
@@ -513,7 +513,7 @@ static void __gic_irq_dispatch(void)
 	gic_handle_shared_int();
 }
 
-static void gic_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void gic_irq_dispatch(unsigned int __irq, struct irq_desc *desc)
 {
 	__gic_irq_dispatch();
 }
--- /var/linuxes/linux-next/drivers/irqchip/irq-mmp.c	2014-09-09 13:39:34.643435202 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-mmp.c	2015-06-13 10:31:02.939543360 +0200
@@ -130,8 +130,9 @@ struct irq_chip icu_irq_chip = {
 	.irq_unmask	= icu_unmask_irq,
 };
 
-static void icu_mux_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void icu_mux_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *domain;
 	struct icu_chip_data *data;
 	int i;
--- /var/linuxes/linux-next/drivers/irqchip/irq-orion.c	2014-09-09 13:39:34.643435202 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-orion.c	2015-06-13 10:31:01.799543402 +0200
@@ -107,8 +107,10 @@ IRQCHIP_DECLARE(orion_intc, "marvell,ori
 #define ORION_BRIDGE_IRQ_CAUSE	0x00
 #define ORION_BRIDGE_IRQ_MASK	0x04
 
-static void orion_bridge_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void orion_bridge_irq_handler(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *d = irq_get_handler_data(irq);
 
 	struct irq_chip_generic *gc = irq_get_domain_generic_chip(d, 0);
--- /var/linuxes/linux-next/drivers/irqchip/irq-s3c24xx.c	2015-05-25 16:03:31.439858317 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-s3c24xx.c	2015-06-13 10:31:02.191543388 +0200
@@ -299,7 +299,7 @@ static struct irq_chip s3c_irq_eint0t4 =
 	.irq_set_type	= s3c_irqext0_type,
 };
 
-static void s3c_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct s3c_irq_data *irq_data = irq_desc_get_chip_data(desc);
--- /var/linuxes/linux-next/drivers/irqchip/irq-sunxi-nmi.c	2015-06-11 07:18:48.530399409 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-sunxi-nmi.c	2015-06-13 10:31:01.107543428 +0200
@@ -58,8 +58,9 @@ static inline u32 sunxi_sc_nmi_read(stru
 	return irq_reg_readl(gc, off);
 }
 
-static void sunxi_sc_nmi_handle_irq(unsigned int irq, struct irq_desc *desc)
+static void sunxi_sc_nmi_handle_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned int virq = irq_find_mapping(domain, 0);
--- /var/linuxes/linux-next/drivers/irqchip/irq-tb10x.c	2014-11-16 10:01:31.085268454 +0100
+++ /var/julia/linuxcopy/drivers/irqchip/irq-tb10x.c	2015-06-13 10:31:01.647543408 +0200
@@ -97,8 +97,9 @@ static int tb10x_irq_set_type(struct irq
 	return IRQ_SET_MASK_OK;
 }
 
-static void tb10x_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void tb10x_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
 
 	generic_handle_irq(irq_find_mapping(domain, irq));
--- /var/linuxes/linux-next/drivers/irqchip/irq-versatile-fpga.c	2015-05-25 16:03:31.439858317 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-versatile-fpga.c	2015-06-13 10:31:02.359543381 +0200
@@ -66,8 +66,9 @@ static void fpga_irq_unmask(struct irq_d
 	writel(mask, f->base + IRQ_ENABLE_SET);
 }
 
-static void fpga_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void fpga_irq_handle(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct fpga_irq_data *f = irq_desc_get_handler_data(desc);
 	u32 status = readl(f->base + IRQ_STATUS);
 
--- /var/linuxes/linux-next/drivers/irqchip/irq-vic.c	2015-05-25 16:03:31.439858317 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/irq-vic.c	2015-06-13 10:31:00.319543457 +0200
@@ -226,7 +226,7 @@ static int handle_one_vic(struct vic_dev
 	return handled;
 }
 
-static void vic_handle_irq_cascaded(unsigned int irq, struct irq_desc *desc)
+static void vic_handle_irq_cascaded(unsigned int __irq, struct irq_desc *desc)
 {
 	u32 stat, hwirq;
 	struct irq_chip *host_chip = irq_desc_get_chip(desc);
--- /var/linuxes/linux-next/drivers/irqchip/spear-shirq.c	2014-07-03 11:45:53.138208393 +0200
+++ /var/julia/linuxcopy/drivers/irqchip/spear-shirq.c	2015-06-13 10:30:59.747543478 +0200
@@ -183,8 +183,9 @@ static struct spear_shirq *spear320_shir
 	&spear320_shirq_intrcomm_ras,
 };
 
-static void shirq_handler(unsigned irq, struct irq_desc *desc)
+static void shirq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct spear_shirq *shirq = irq_get_handler_data(irq);
 	u32 pend;
 
--- /var/linuxes/linux-next/drivers/mfd/asic3.c	2014-09-28 16:59:48.777931441 +0200
+++ /var/julia/linuxcopy/drivers/mfd/asic3.c	2015-06-13 10:30:58.751543516 +0200
@@ -138,7 +138,7 @@ static void asic3_irq_flip_edge(struct a
 	spin_unlock_irqrestore(&asic->lock, flags);
 }
 
-static void asic3_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void asic3_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct asic3 *asic = irq_desc_get_handler_data(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
--- /var/linuxes/linux-next/drivers/mfd/ezx-pcap.c	2014-07-29 09:46:18.518923678 +0200
+++ /var/julia/linuxcopy/drivers/mfd/ezx-pcap.c	2015-06-13 10:30:58.099543540 +0200
@@ -205,8 +205,9 @@ static void pcap_isr_work(struct work_st
 	} while (gpio_get_value(pdata->gpio));
 }
 
-static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pcap_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pcap_chip *pcap = irq_get_handler_data(irq);
 
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
--- /var/linuxes/linux-next/drivers/mfd/htc-egpio.c	2013-08-05 14:50:16.000000000 +0200
+++ /var/julia/linuxcopy/drivers/mfd/htc-egpio.c	2015-06-13 10:30:58.371543530 +0200
@@ -98,7 +98,7 @@ static struct irq_chip egpio_muxed_chip
 	.irq_unmask	= egpio_unmask,
 };
 
-static void egpio_handler(unsigned int irq, struct irq_desc *desc)
+static void egpio_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct egpio_info *ei = irq_desc_get_handler_data(desc);
 	int irqpin;
--- /var/linuxes/linux-next/drivers/mfd/jz4740-adc.c	2014-11-16 10:01:31.109268453 +0100
+++ /var/julia/linuxcopy/drivers/mfd/jz4740-adc.c	2015-06-13 10:30:57.827543550 +0200
@@ -65,7 +65,7 @@ struct jz4740_adc {
 	spinlock_t lock;
 };
 
-static void jz4740_adc_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void jz4740_adc_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip_generic *gc = irq_desc_get_handler_data(desc);
 	uint8_t status;
--- /var/linuxes/linux-next/drivers/mfd/pm8921-core.c	2014-11-16 10:01:31.109268453 +0100
+++ /var/julia/linuxcopy/drivers/mfd/pm8921-core.c	2015-06-13 10:30:57.355543567 +0200
@@ -156,7 +156,7 @@ static int pm8xxx_irq_master_handler(str
 	return ret;
 }
 
-static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pm8xxx_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pm_irq_chip *chip = irq_desc_get_handler_data(desc);
 	struct irq_chip *irq_chip = irq_desc_get_chip(desc);
--- /var/linuxes/linux-next/drivers/mfd/t7l66xb.c	2014-11-25 11:25:19.784159723 +0100
+++ /var/julia/linuxcopy/drivers/mfd/t7l66xb.c	2015-06-13 10:30:59.315543495 +0200
@@ -185,8 +185,9 @@ static struct mfd_cell t7l66xb_cells[] =
 /*--------------------------------------------------------------------------*/
 
 /* Handle the T7L66XB interrupt mux */
-static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc)
+static void t7l66xb_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct t7l66xb *t7l66xb = irq_get_handler_data(irq);
 	unsigned int isr;
 	unsigned int i, irq_base;
--- /var/linuxes/linux-next/drivers/mfd/tc6393xb.c	2014-11-16 10:01:31.109268453 +0100
+++ /var/julia/linuxcopy/drivers/mfd/tc6393xb.c	2015-06-13 10:30:59.051543504 +0200
@@ -523,8 +523,9 @@ static int tc6393xb_register_gpio(struct
 /*--------------------------------------------------------------------------*/
 
 static void
-tc6393xb_irq(unsigned int irq, struct irq_desc *desc)
+tc6393xb_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct tc6393xb *tc6393xb = irq_get_handler_data(irq);
 	unsigned int isr;
 	unsigned int i, irq_base;
--- /var/linuxes/linux-next/drivers/mfd/ucb1x00-core.c	2014-09-28 16:59:48.781931441 +0200
+++ /var/julia/linuxcopy/drivers/mfd/ucb1x00-core.c	2015-06-13 10:30:57.575543559 +0200
@@ -282,8 +282,9 @@ void ucb1x00_adc_disable(struct ucb1x00
  * SIBCLK to talk to the chip.  We leave the clock running until
  * we have finished processing all interrupts from the chip.
  */
-static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc)
+static void ucb1x00_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct ucb1x00 *ucb = irq_desc_get_handler_data(desc);
 	unsigned int isr, i;
 
--- /var/linuxes/linux-next/drivers/pci/host/pci-keystone.c	2015-02-09 14:08:01.403569005 +0100
+++ /var/julia/linuxcopy/drivers/pci/host/pci-keystone.c	2015-06-13 10:30:53.511543710 +0200
@@ -112,8 +112,9 @@ static int ks_pcie_establish_link(struct
 	return 0;
 }
 
-static void ks_pcie_msi_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ks_pcie_msi_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
 	u32 offset = irq - ks_pcie->msi_host_irqs[0];
 	struct pcie_port *pp = &ks_pcie->pp;
@@ -139,8 +140,10 @@ static void ks_pcie_msi_irq_handler(unsi
  * Traverse through pending legacy interrupts and invoke handler for each. Also
  * takes care of interrupt controller level mask/ack operation.
  */
-static void ks_pcie_legacy_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ks_pcie_legacy_irq_handler(unsigned int __irq,
+				       struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
 	struct pcie_port *pp = &ks_pcie->pp;
 	u32 irq_offset = irq - ks_pcie->legacy_host_irqs[0];
--- /var/linuxes/linux-next/drivers/pinctrl/mediatek/pinctrl-mtk-common.c	2015-06-11 07:18:48.742399401 +0200
+++ /var/julia/linuxcopy/drivers/pinctrl/mediatek/pinctrl-mtk-common.c	2015-06-13 10:30:49.699543852 +0200
@@ -1116,8 +1116,9 @@ mtk_eint_debounce_process(struct mtk_pin
 	}
 }
 
-static void mtk_eint_irq_handler(unsigned irq, struct irq_desc *desc)
+static void mtk_eint_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct mtk_pinctrl *pctl = irq_get_handler_data(irq);
 	unsigned int status, eint_num;
--- /var/linuxes/linux-next/drivers/pinctrl/pinctrl-adi2.c	2015-05-25 16:03:31.763858305 +0200
+++ /var/julia/linuxcopy/drivers/pinctrl/pinctrl-adi2.c	2015-06-13 10:30:50.631543818 +0200
@@ -530,8 +530,8 @@ static inline void preflow_handler(struc
 static inline void preflow_handler(struct irq_desc *desc) { }
 #endif
 
-static void adi_gpio_handle_pint_irq(unsigned int inta_irq,
-			struct irq_desc *desc)
+static void adi_gpio_handle_pint_irq(unsigned int __inta_irq,
+				     struct irq_desc *desc)
 {
 	u32 request;
 	u32 level_mask, hwirq;
--- /var/linuxes/linux-next/drivers/pinctrl/pinctrl-rockchip.c	2015-02-09 14:08:01.407569005 +0100
+++ /var/julia/linuxcopy/drivers/pinctrl/pinctrl-rockchip.c	2015-06-13 10:30:49.195543871 +0200
@@ -1394,8 +1394,9 @@ static const struct gpio_chip rockchip_g
  * Interrupt handling
  */
 
-static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void rockchip_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct rockchip_pin_bank *bank = irq_get_handler_data(irq);
 	u32 pend;
--- /var/linuxes/linux-next/drivers/pinctrl/pinctrl-single.c	2015-05-25 16:03:31.787858304 +0200
+++ /var/julia/linuxcopy/drivers/pinctrl/pinctrl-single.c	2015-06-13 10:30:50.263543831 +0200
@@ -1679,8 +1679,9 @@ static irqreturn_t pcs_irq_handler(int i
  * Use this if you have a separate interrupt for each
  * pinctrl-single instance.
  */
-static void pcs_irq_chain_handler(unsigned int irq, struct irq_desc *desc)
+static void pcs_irq_chain_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip;
 
--- /var/linuxes/linux-next/drivers/pinctrl/pinctrl-st.c	2015-04-11 07:10:38.336609519 +0200
+++ /var/julia/linuxcopy/drivers/pinctrl/pinctrl-st.c	2015-06-13 10:30:51.115543800 +0200
@@ -1472,8 +1472,9 @@ static void st_gpio_irq_handler(unsigned
 	chained_irq_exit(chip, desc);
 }
 
-static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
+static void st_gpio_irqmux_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct st_pinctrl *info = irq_get_handler_data(irq);
 	unsigned long status;
--- /var/linuxes/linux-next/drivers/pinctrl/samsung/pinctrl-exynos.c	2015-03-21 14:32:47.370972869 +0100
+++ /var/julia/linuxcopy/drivers/pinctrl/samsung/pinctrl-exynos.c	2015-06-13 10:30:52.039543765 +0200
@@ -420,8 +420,9 @@ static const struct of_device_id exynos_
 };
 
 /* interrupt handler for wakeup interrupts 0..15 */
-static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
+static void exynos_irq_eint0_15(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct exynos_weint_data *eintd = irq_get_handler_data(irq);
 	struct samsung_pin_bank *bank = eintd->bank;
 	struct irq_chip *chip = irq_get_chip(irq);
@@ -452,8 +453,10 @@ static inline void exynos_irq_demux_eint
 }
 
 /* interrupt handler for wakeup interrupt 16 */
-static void exynos_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
+static void exynos_irq_demux_eint16_31(unsigned int __irq,
+				       struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct exynos_muxed_weint_data *eintd = irq_get_handler_data(irq);
 	struct samsung_pinctrl_drv_data *d = eintd->banks[0]->drvdata;
--- /var/linuxes/linux-next/drivers/pinctrl/samsung/pinctrl-s3c64xx.c	2014-11-16 10:01:31.237268448 +0100
+++ /var/julia/linuxcopy/drivers/pinctrl/samsung/pinctrl-s3c64xx.c	2015-06-13 10:30:52.307543755 +0200
@@ -408,8 +408,9 @@ static const struct irq_domain_ops s3c64
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-static void s3c64xx_eint_gpio_irq(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_eint_gpio_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct s3c64xx_eint_gpio_data *data = irq_get_handler_data(irq);
 	struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
--- /var/linuxes/linux-next/drivers/pinctrl/sunxi/pinctrl-sunxi.c	2015-03-21 14:32:47.374972869 +0100
+++ /var/julia/linuxcopy/drivers/pinctrl/sunxi/pinctrl-sunxi.c	2015-06-13 10:30:48.607543893 +0200
@@ -709,8 +709,9 @@ static struct irq_chip sunxi_pinctrl_lev
 			  IRQCHIP_EOI_IF_HANDLED,
 };
 
-static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
+static void sunxi_pinctrl_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct sunxi_pinctrl *pctl = irq_get_handler_data(irq);
 	unsigned long bank, reg, val;
--- /var/linuxes/linux-next/drivers/sh/intc/core.c	2014-05-24 11:54:34.141699344 +0200
+++ /var/julia/linuxcopy/drivers/sh/intc/core.c	2015-06-13 10:30:48.275543905 +0200
@@ -65,8 +65,9 @@ void intc_set_prio_level(unsigned int ir
 	raw_spin_unlock_irqrestore(&intc_big_lock, flags);
 }
 
-static void intc_redirect_irq(unsigned int irq, struct irq_desc *desc)
+static void intc_redirect_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	generic_handle_irq((unsigned int)irq_get_handler_data(irq));
 }
 
--- /var/linuxes/linux-next/drivers/sh/intc/virq.c	2012-06-03 21:09:50.000000000 +0200
+++ /var/julia/linuxcopy/drivers/sh/intc/virq.c	2015-06-13 10:30:47.987543916 +0200
@@ -107,8 +107,9 @@ static int add_virq_to_pirq(unsigned int
 	return 0;
 }
 
-static void intc_virq_handler(unsigned int irq, struct irq_desc *desc)
+static void intc_virq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	struct intc_virq_list *entry, *vlist = irq_data_get_irq_handler_data(data);
--- /var/linuxes/linux-next/drivers/spmi/spmi-pmic-arb.c	2015-04-02 22:08:46.183526934 +0200
+++ /var/julia/linuxcopy/drivers/spmi/spmi-pmic-arb.c	2015-06-13 10:30:57.171543574 +0200
@@ -451,8 +451,9 @@ static void periph_interrupt(struct spmi
 	}
 }
 
-static void pmic_arb_chained_irq(unsigned int irq, struct irq_desc *desc)
+static void pmic_arb_chained_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct spmi_pmic_arb_dev *pa = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
 	void __iomem *intr = pa->intr;
--- /var/linuxes/linux-next/kernel/irq/chip.c	2015-05-26 21:47:09.183877948 +0200
+++ /var/julia/linuxcopy/kernel/irq/chip.c	2015-06-13 10:31:57.419541333 +0200
@@ -383,8 +383,9 @@ static bool irq_may_run(struct irq_desc
  *	unmask issues if necessary.
  */
 void
-handle_simple_irq(unsigned int irq, struct irq_desc *desc)
+handle_simple_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	raw_spin_lock(&desc->lock);
 
 	if (!irq_may_run(desc))
@@ -434,8 +435,9 @@ static void cond_unmask_irq(struct irq_d
  *	interrupt line is back to inactive.
  */
 void
-handle_level_irq(unsigned int irq, struct irq_desc *desc)
+handle_level_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	raw_spin_lock(&desc->lock);
 	mask_ack_irq(desc);
 
@@ -505,8 +507,9 @@ static void cond_unmask_eoi_irq(struct i
  *	details in hardware, transparently.
  */
 void
-handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
+handle_fasteoi_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = desc->irq_data.chip;
 
 	raw_spin_lock(&desc->lock);
@@ -561,8 +564,9 @@ EXPORT_SYMBOL_GPL(handle_fasteoi_irq);
  *	loop is left.
  */
 void
-handle_edge_irq(unsigned int irq, struct irq_desc *desc)
+handle_edge_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	raw_spin_lock(&desc->lock);
 
 	desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING);
@@ -624,8 +628,9 @@ EXPORT_SYMBOL(handle_edge_irq);
  * Similar as the above handle_edge_irq, but using eoi and w/o the
  * mask/unmask logic.
  */
-void handle_edge_eoi_irq(unsigned int irq, struct irq_desc *desc)
+void handle_edge_eoi_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	raw_spin_lock(&desc->lock);
@@ -671,8 +676,9 @@ out_eoi:
  *	Per CPU interrupts on SMP machines without locking requirements
  */
 void
-handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
+handle_percpu_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	kstat_incr_irqs_this_cpu(irq, desc);
@@ -698,8 +704,9 @@ handle_percpu_irq(unsigned int irq, stru
  * contain the real device id for the cpu on which this handler is
  * called
  */
-void handle_percpu_devid_irq(unsigned int irq, struct irq_desc *desc)
+void handle_percpu_devid_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irqaction *action = desc->action;
 	void *dev_id = raw_cpu_ptr(action->percpu_dev_id);
--- /var/linuxes/linux-next/kernel/irq/handle.c	2014-03-26 18:13:37.966022636 +0100
+++ /var/julia/linuxcopy/kernel/irq/handle.c	2015-06-13 10:31:25.603542517 +0200
@@ -27,8 +27,9 @@
  *
  * Handles spurious and unhandled IRQ's. It also prints a debugmessage.
  */
-void handle_bad_irq(unsigned int irq, struct irq_desc *desc)
+void handle_bad_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	print_irq_desc(irq, desc);
 	kstat_incr_irqs_this_cpu(irq, desc);
 	ack_bad_irq(irq);

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-13 14:04             ` Julia Lawall
@ 2015-06-13 14:53               ` Julia Lawall
  2015-06-13 16:49                 ` Jiang Liu
  0 siblings, 1 reply; 120+ messages in thread
From: Julia Lawall @ 2015-06-13 14:53 UTC (permalink / raw)
  To: Julia Lawall
  Cc: Thomas Gleixner, Jiang Liu, Bjorn Helgaas,
	Benjamin Herrenschmidt, Ingo Molnar, H. Peter Anvin,
	Rafael J. Wysocki, Randy Dunlap, Yinghai Lu, Borislav Petkov,
	Jason Cooper, Kevin Cernekee, Arnd Bergmann, Marc Zyngier,
	Konrad Rzeszutek Wilk, Tony Luck, x86, LKML, linux-pci,
	linux-acpi

[-- Attachment #1: Type: TEXT/PLAIN, Size: 29 bytes --]

Better formatted diff.

julia

[-- Attachment #2: Type: TEXT/PLAIN, Size: 87513 bytes --]

diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index b55c362..c16d8a7 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -138,8 +138,9 @@ static struct locomo_dev_info locomo_devices[] = {
 	},
 };
 
-static void locomo_handler(unsigned int irq, struct irq_desc *desc)
+static void locomo_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct locomo *lchip = irq_get_chip_data(irq);
 	int req, i;
 
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 5cc779c..98ca2a6 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -197,8 +197,9 @@ static struct sa1111_dev_info sa1111_devices[] = {
  * will call us again if there are more interrupts to process.
  */
 static void
-sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
+sa1111_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned int stat0, stat1, i;
 	struct sa1111 *sachip = irq_get_handler_data(irq);
 	void __iomem *mapbase = sachip->base + SA1111_INTC;
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
index 4a5a7ae..289b3e6 100644
--- a/arch/arm/mach-dove/irq.c
+++ b/arch/arm/mach-dove/irq.c
@@ -69,8 +69,9 @@ static struct irq_chip pmu_irq_chip = {
 	.irq_ack	= pmu_irq_ack,
 };
 
-static void pmu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pmu_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned long cause = readl(PMU_INTERRUPT_CAUSE);
 
 	cause &= readl(PMU_INTERRUPT_MASK);
diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
index c3a0abb..a56a01e 100644
--- a/arch/arm/mach-footbridge/isa-irq.c
+++ b/arch/arm/mach-footbridge/isa-irq.c
@@ -88,7 +88,7 @@ static struct irq_chip isa_hi_chip = {
 };
 
 static void
-isa_irq_handler(unsigned int irq, struct irq_desc *desc)
+isa_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
 
diff --git a/arch/arm/mach-gemini/gpio.c b/arch/arm/mach-gemini/gpio.c
index f8cb571..d892910 100644
--- a/arch/arm/mach-gemini/gpio.c
+++ b/arch/arm/mach-gemini/gpio.c
@@ -126,7 +126,7 @@ static int gpio_set_irq_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int port = (unsigned int)irq_desc_get_handler_data(desc);
 	unsigned int gpio_irq_no, irq_stat;
diff --git a/arch/arm/mach-imx/3ds_debugboard.c b/arch/arm/mach-imx/3ds_debugboard.c
index 1343773..53cb12b 100644
--- a/arch/arm/mach-imx/3ds_debugboard.c
+++ b/arch/arm/mach-imx/3ds_debugboard.c
@@ -85,7 +85,7 @@ static struct platform_device smsc_lan9217_device = {
 	.resource = smsc911x_resources,
 };
 
-static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mxc_expio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c
index d08c37c..a88978b 100644
--- a/arch/arm/mach-imx/mach-mx31ads.c
+++ b/arch/arm/mach-imx/mach-mx31ads.c
@@ -154,7 +154,7 @@ static inline void mxc_init_imx_uart(void)
 	imx31_add_imx_uart0(&uart_pdata);
 }
 
-static void mx31ads_expio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx31ads_expio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
 	u32 imr_val;
 	u32 int_valid;
diff --git a/arch/arm/mach-iop13xx/msi.c b/arch/arm/mach-iop13xx/msi.c
index 9f89e76..c7d5f97 100644
--- a/arch/arm/mach-iop13xx/msi.c
+++ b/arch/arm/mach-iop13xx/msi.c
@@ -91,7 +91,7 @@ static void (*write_imipr[])(u32) = {
 	write_imipr_3,
 };
 
-static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc)
+static void iop13xx_msi_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	int i, j;
 	unsigned long status;
diff --git a/arch/arm/mach-lpc32xx/irq.c b/arch/arm/mach-lpc32xx/irq.c
index 9ecb8f9..c468903 100644
--- a/arch/arm/mach-lpc32xx/irq.c
+++ b/arch/arm/mach-lpc32xx/irq.c
@@ -370,7 +370,7 @@ static struct irq_chip lpc32xx_irq_chip = {
 	.irq_set_wake = lpc32xx_irq_wake
 };
 
-static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic1_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC1_BASE));
 
@@ -383,7 +383,7 @@ static void lpc32xx_sic1_handler(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void lpc32xx_sic2_handler(unsigned int irq, struct irq_desc *desc)
+static void lpc32xx_sic2_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long ints = __raw_readl(LPC32XX_INTC_STAT(LPC32XX_SIC2_BASE));
 
diff --git a/arch/arm/mach-netx/generic.c b/arch/arm/mach-netx/generic.c
index db25b0c..6e85de6 100644
--- a/arch/arm/mach-netx/generic.c
+++ b/arch/arm/mach-netx/generic.c
@@ -70,7 +70,7 @@ static struct platform_device *devices[] __initdata = {
 #endif
 
 static void
-netx_hif_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
+netx_hif_demux_handler(unsigned int __irq_unused, struct irq_desc *desc)
 {
 	unsigned int irq = NETX_IRQ_HIF_CHAINED(0);
 	unsigned int stat;
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c
index 3c0e422..ddb4422 100644
--- a/arch/arm/mach-omap1/fpga.c
+++ b/arch/arm/mach-omap1/fpga.c
@@ -87,7 +87,8 @@ static void fpga_mask_ack_irq(struct irq_data *d)
 	fpga_ack_irq(d);
 }
 
-static void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)
+static void innovator_fpga_IRQ_demux(unsigned int __irq,
+				     struct irq_desc *desc)
 {
 	u32 stat;
 	int fpga_irq;
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
index 7add799..3fd58bf 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -102,7 +102,7 @@ static void omap_prcm_events_filter_priority(unsigned long *events,
  * dispatched accordingly. Clearing of the wakeup events should be
  * done by the SoC specific individual handlers.
  */
-static void omap_prcm_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void omap_prcm_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending[OMAP_PRCM_MAX_NR_PENDING_REG];
 	unsigned long priority_pending[OMAP_PRCM_MAX_NR_PENDING_REG];
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
index d897292..6c571e9 100644
--- a/arch/arm/mach-pxa/balloon3.c
+++ b/arch/arm/mach-pxa/balloon3.c
@@ -496,7 +496,7 @@ static struct irq_chip balloon3_irq_chip = {
 	.irq_unmask	= balloon3_unmask_irq,
 };
 
-static void balloon3_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void balloon3_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending = __raw_readl(BALLOON3_INT_CONTROL_REG) &
 					balloon3_irq_enabled;
diff --git a/arch/arm/mach-pxa/cm-x2xx-pci.c b/arch/arm/mach-pxa/cm-x2xx-pci.c
index d8f816c..1fa79f1 100644
--- a/arch/arm/mach-pxa/cm-x2xx-pci.c
+++ b/arch/arm/mach-pxa/cm-x2xx-pci.c
@@ -29,8 +29,9 @@
 void __iomem *it8152_base_address;
 static int cmx2xx_it8152_irq_gpio;
 
-static void cmx2xx_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void cmx2xx_it8152_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	/* clear our parent irq */
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
 
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index eaee2c2..1572072 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -120,7 +120,7 @@ static struct irq_chip lpd270_irq_chip = {
 	.irq_unmask	= lpd270_unmask_irq,
 };
 
-static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void lpd270_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
index 2897da2..988aeea 100644
--- a/arch/arm/mach-pxa/pcm990-baseboard.c
+++ b/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -284,7 +284,7 @@ static struct irq_chip pcm990_irq_chip = {
 	.irq_unmask	= pcm990_unmask_irq,
 };
 
-static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pcm990_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index de3b080..212ea2e 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -276,7 +276,7 @@ static inline unsigned long viper_irq_pending(void)
 			viper_irq_enabled_mask;
 }
 
-static void viper_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void viper_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index ac2ae5c..cc309c0 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -105,7 +105,7 @@ static inline unsigned long zeus_irq_pending(void)
 	return __raw_readw(ZEUS_CPLD_ISA_IRQ) & zeus_irq_enabled_mask;
 }
 
-static void zeus_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void zeus_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long pending;
 
diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
index fcb1d59..02dda52 100644
--- a/arch/arm/mach-rpc/ecard.c
+++ b/arch/arm/mach-rpc/ecard.c
@@ -552,7 +552,7 @@ static void ecard_check_lockup(struct irq_desc *desc)
 }
 
 static void
-ecard_irq_handler(unsigned int irq, struct irq_desc *desc)
+ecard_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	ecard_t *ec;
 	int called = 0;
diff --git a/arch/arm/mach-s3c24xx/bast-irq.c b/arch/arm/mach-s3c24xx/bast-irq.c
index cb1b791..f8e6b74 100644
--- a/arch/arm/mach-s3c24xx/bast-irq.c
+++ b/arch/arm/mach-s3c24xx/bast-irq.c
@@ -101,7 +101,7 @@ static struct irq_chip  bast_pc104_chip = {
 };
 
 static void
-bast_irq_pc104_demux(unsigned int irq,
+bast_irq_pc104_demux(unsigned int __irq,
 		     struct irq_desc *desc)
 {
 	unsigned int stat;
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
index 16547f2..31dd6df 100644
--- a/arch/arm/mach-s3c64xx/common.c
+++ b/arch/arm/mach-s3c64xx/common.c
@@ -389,22 +389,22 @@ static inline void s3c_irq_demux_eint(unsigned int start, unsigned int end)
 	}
 }
 
-static void s3c_irq_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint0_3(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(0, 3);
 }
 
-static void s3c_irq_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint4_11(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(4, 11);
 }
 
-static void s3c_irq_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint12_19(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(12, 19);
 }
 
-static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux_eint20_27(unsigned int __irq, struct irq_desc *desc)
 {
 	s3c_irq_demux_eint(20, 27);
 }
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
index af868d2..0958a55 100644
--- a/arch/arm/mach-sa1100/neponset.c
+++ b/arch/arm/mach-sa1100/neponset.c
@@ -166,7 +166,7 @@ static struct sa1100_port_fns neponset_port_fns = {
  * ensure that the IRQ signal is deasserted before returning.  This
  * is rather unfortunate.
  */
-static void neponset_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void neponset_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct neponset_drvdata *d = irq_desc_get_handler_data(desc);
 	unsigned int irr;
diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c
index 5168a52..ed4f186 100644
--- a/arch/arm/plat-orion/gpio.c
+++ b/arch/arm/plat-orion/gpio.c
@@ -407,8 +407,9 @@ static int gpio_irq_set_type(struct irq_data *d, u32 type)
 	return 0;
 }
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct orion_gpio_chip *ochip = irq_get_handler_data(irq);
 	u32 cause, type;
 	int i;
diff --git a/arch/avr32/mach-at32ap/extint.c b/arch/avr32/mach-at32ap/extint.c
index cfb298d..1b5a1d2 100644
--- a/arch/avr32/mach-at32ap/extint.c
+++ b/arch/avr32/mach-at32ap/extint.c
@@ -144,7 +144,7 @@ static struct irq_chip eic_chip = {
 	.irq_set_type	= eic_set_irq_type,
 };
 
-static void demux_eic_irq(unsigned int irq, struct irq_desc *desc)
+static void demux_eic_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	struct eic *eic = irq_desc_get_handler_data(desc);
 	unsigned long status, pending;
diff --git a/arch/avr32/mach-at32ap/pio.c b/arch/avr32/mach-at32ap/pio.c
index 903c7d8..032cc6d 100644
--- a/arch/avr32/mach-at32ap/pio.c
+++ b/arch/avr32/mach-at32ap/pio.c
@@ -281,8 +281,9 @@ static struct irq_chip gpio_irqchip = {
 	.irq_set_type	= gpio_irq_type,
 };
 
-static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pio_device	*pio = irq_desc_get_chip_data(desc);
 	unsigned		gpio_irq;
 
diff --git a/arch/blackfin/mach-bf537/ints-priority.c b/arch/blackfin/mach-bf537/ints-priority.c
index 2137a20..624e87f 100644
--- a/arch/blackfin/mach-bf537/ints-priority.c
+++ b/arch/blackfin/mach-bf537/ints-priority.c
@@ -89,7 +89,7 @@ static struct irq_chip bf537_generic_error_irqchip = {
 	.irq_unmask = bf537_generic_error_unmask_irq,
 };
 
-static void bf537_demux_error_irq(unsigned int int_err_irq,
+static void bf537_demux_error_irq(unsigned int __int_err_irq,
 				  struct irq_desc *inta_desc)
 {
 	int irq = 0;
@@ -182,9 +182,10 @@ static struct irq_chip bf537_mac_rx_irqchip = {
 	.irq_unmask = bf537_mac_rx_unmask_irq,
 };
 
-static void bf537_demux_mac_rx_irq(unsigned int int_irq,
+static void bf537_demux_mac_rx_irq(unsigned int __int_irq,
 				   struct irq_desc *desc)
 {
+	unsigned int int_irq = irq_desc_get_irq(desc);
 	if (bfin_read_DMA1_IRQ_STATUS() & (DMA_DONE | DMA_ERR))
 		bfin_handle_irq(IRQ_MAC_RX);
 	else
diff --git a/arch/blackfin/mach-common/ints-priority.c b/arch/blackfin/mach-common/ints-priority.c
index 7236bdf..c5dd19d 100644
--- a/arch/blackfin/mach-common/ints-priority.c
+++ b/arch/blackfin/mach-common/ints-priority.c
@@ -655,7 +655,7 @@ static struct irq_chip bfin_mac_status_irqchip = {
 	.irq_set_wake = bfin_mac_status_set_wake,
 };
 
-void bfin_demux_mac_status_irq(unsigned int int_err_irq,
+void bfin_demux_mac_status_irq(unsigned int ____int_err_irq,
 			       struct irq_desc *inta_desc)
 {
 	int i, irq = 0;
@@ -824,9 +824,10 @@ static void bfin_demux_gpio_block(unsigned int irq)
 	}
 }
 
-void bfin_demux_gpio_irq(unsigned int inta_irq,
-			struct irq_desc *desc)
+void bfin_demux_gpio_irq(unsigned int __inta_irq,
+			 struct irq_desc *desc)
 {
+	unsigned int inta_irq = irq_desc_get_irq(desc);
 	unsigned int irq;
 
 	switch (inta_irq) {
diff --git a/arch/c6x/platforms/megamod-pic.c b/arch/c6x/platforms/megamod-pic.c
index 74e3371..79d8196 100644
--- a/arch/c6x/platforms/megamod-pic.c
+++ b/arch/c6x/platforms/megamod-pic.c
@@ -93,7 +93,7 @@ static struct irq_chip megamod_chip = {
 	.irq_unmask	= unmask_megamod,
 };
 
-static void megamod_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void megamod_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct megamod_cascade_data *cascade;
 	struct megamod_pic *pic;
diff --git a/arch/m68k/amiga/amiints.c b/arch/m68k/amiga/amiints.c
index 47b5f90..8ee2ad4 100644
--- a/arch/m68k/amiga/amiints.c
+++ b/arch/m68k/amiga/amiints.c
@@ -46,7 +46,7 @@ static struct irq_chip amiga_irq_chip = {
  * The builtin Amiga hardware interrupt handlers.
  */
 
-static void ami_int1(unsigned int irq, struct irq_desc *desc)
+static void ami_int1(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -69,7 +69,7 @@ static void ami_int1(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int3(unsigned int irq, struct irq_desc *desc)
+static void ami_int3(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -92,7 +92,7 @@ static void ami_int3(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int4(unsigned int irq, struct irq_desc *desc)
+static void ami_int4(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
@@ -121,7 +121,7 @@ static void ami_int4(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ami_int5(unsigned int irq, struct irq_desc *desc)
+static void ami_int5(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
 
diff --git a/arch/m68k/coldfire/intc-5272.c b/arch/m68k/coldfire/intc-5272.c
index d1e2fba..ddfcd5f 100644
--- a/arch/m68k/coldfire/intc-5272.c
+++ b/arch/m68k/coldfire/intc-5272.c
@@ -143,8 +143,9 @@ static int intc_irq_set_type(struct irq_data *d, unsigned int type)
  * We need to be careful with the masking/acking due to the side effects
  * of masking an interrupt.
  */
-static void intc_external_irq(unsigned int irq, struct irq_desc *desc)
+static void intc_external_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	irq_desc_get_chip(desc)->irq_ack(&desc->irq_data);
 	handle_simple_irq(irq, desc);
 }
diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c
index 3fe0e43..f2bc069 100644
--- a/arch/m68k/mac/baboon.c
+++ b/arch/m68k/mac/baboon.c
@@ -45,7 +45,7 @@ void __init baboon_init(void)
  * Baboon interrupt handler. This works a lot like a VIA.
  */
 
-static void baboon_irq(unsigned int irq, struct irq_desc *desc)
+static void baboon_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int irq_bit, irq_num;
 	unsigned char events;
diff --git a/arch/m68k/mac/oss.c b/arch/m68k/mac/oss.c
index bb11dce..a195aca 100644
--- a/arch/m68k/mac/oss.c
+++ b/arch/m68k/mac/oss.c
@@ -63,8 +63,9 @@ void __init oss_nubus_init(void)
  * Handle miscellaneous OSS interrupts.
  */
 
-static void oss_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	int events = oss->irq_pending &
 	             (OSS_IP_IOPSCC | OSS_IP_SCSI | OSS_IP_IOPISM);
 
@@ -97,7 +98,7 @@ static void oss_irq(unsigned int irq, struct irq_desc *desc)
  * Unlike the VIA/RBV this is on its own autovector interrupt level.
  */
 
-static void oss_nubus_irq(unsigned int irq, struct irq_desc *desc)
+static void oss_nubus_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int events, irq_bit, i;
 
diff --git a/arch/m68k/mac/psc.c b/arch/m68k/mac/psc.c
index 835fa04..ea7651a 100644
--- a/arch/m68k/mac/psc.c
+++ b/arch/m68k/mac/psc.c
@@ -113,8 +113,9 @@ void __init psc_init(void)
  * PSC interrupt handler. It's a lot like the VIA interrupt handler.
  */
 
-static void psc_irq(unsigned int irq, struct irq_desc *desc)
+static void psc_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned int offset = (unsigned int)irq_desc_get_handler_data(desc);
 	int pIFR	= pIFRbase + offset;
 	int pIER	= pIERbase + offset;
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c
index e198dec..163e430 100644
--- a/arch/m68k/mac/via.c
+++ b/arch/m68k/mac/via.c
@@ -446,7 +446,7 @@ void via_nubus_irq_shutdown(int irq)
  * via6522.c :-), disable/pending masks added.
  */
 
-void via1_irq(unsigned int irq, struct irq_desc *desc)
+void via1_irq(unsigned int ____irq, struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -467,7 +467,7 @@ void via1_irq(unsigned int irq, struct irq_desc *desc)
 	} while (events >= irq_bit);
 }
 
-static void via2_irq(unsigned int irq, struct irq_desc *desc)
+static void via2_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int irq_num;
 	unsigned char irq_bit, events;
@@ -493,7 +493,7 @@ static void via2_irq(unsigned int irq, struct irq_desc *desc)
  * VIA2 dispatcher as a fast interrupt handler.
  */
 
-void via_nubus_irq(unsigned int irq, struct irq_desc *desc)
+void via_nubus_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	int slot_irq;
 	unsigned char slot_bit, events;
diff --git a/arch/mips/alchemy/common/irq.c b/arch/mips/alchemy/common/irq.c
index 6cb60ab..8c3f4f7 100644
--- a/arch/mips/alchemy/common/irq.c
+++ b/arch/mips/alchemy/common/irq.c
@@ -865,7 +865,7 @@ DISP(ic0r1, AU1000_INTC0_INT_BASE, AU1000_IC0_PHYS_ADDR + IC_REQ1INT)
 DISP(ic1r0, AU1000_INTC1_INT_BASE, AU1000_IC1_PHYS_ADDR + IC_REQ0INT)
 DISP(ic1r1, AU1000_INTC1_INT_BASE, AU1000_IC1_PHYS_ADDR + IC_REQ1INT)
 
-static void alchemy_gpic_dispatch(unsigned int irq, struct irq_desc *d)
+static void alchemy_gpic_dispatch(unsigned int __irq, struct irq_desc *d)
 {
 	int i = __raw_readl(AU1300_GPIC_ADDR + AU1300_GPIC_PRIENC);
 	generic_handle_irq(ALCHEMY_GPIC_INT_BASE + i);
diff --git a/arch/mips/alchemy/devboards/bcsr.c b/arch/mips/alchemy/devboards/bcsr.c
index c98c9ea..8d6ea36 100644
--- a/arch/mips/alchemy/devboards/bcsr.c
+++ b/arch/mips/alchemy/devboards/bcsr.c
@@ -85,8 +85,9 @@ EXPORT_SYMBOL_GPL(bcsr_mod);
 /*
  * DB1200/PB1200 CPLD IRQ muxer
  */
-static void bcsr_csc_handler(unsigned int irq, struct irq_desc *d)
+static void bcsr_csc_handler(unsigned int __irq, struct irq_desc *d)
 {
+	unsigned int irq = irq_desc_get_irq(d);
 	unsigned short bisr = __raw_readw(bcsr_virt + BCSR_REG_INTSTAT);
 
 	disable_irq_nosync(irq);
diff --git a/arch/mips/ath25/ar2315.c b/arch/mips/ath25/ar2315.c
index 8742e1c..8373db8 100644
--- a/arch/mips/ath25/ar2315.c
+++ b/arch/mips/ath25/ar2315.c
@@ -69,7 +69,7 @@ static struct irqaction ar2315_ahb_err_interrupt  = {
 	.name		= "ar2315-ahb-error",
 };
 
-static void ar2315_misc_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar2315_misc_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	u32 pending = ar2315_rst_reg_read(AR2315_ISR) &
 		      ar2315_rst_reg_read(AR2315_IMR);
diff --git a/arch/mips/ath25/ar5312.c b/arch/mips/ath25/ar5312.c
index 094b938..f990afc 100644
--- a/arch/mips/ath25/ar5312.c
+++ b/arch/mips/ath25/ar5312.c
@@ -73,7 +73,7 @@ static struct irqaction ar5312_ahb_err_interrupt  = {
 	.name    = "ar5312-ahb-error",
 };
 
-static void ar5312_misc_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar5312_misc_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	u32 pending = ar5312_rst_reg_read(AR5312_ISR) &
 		      ar5312_rst_reg_read(AR5312_IMR);
diff --git a/arch/mips/ath79/irq.c b/arch/mips/ath79/irq.c
index afb0096..7aba693 100644
--- a/arch/mips/ath79/irq.c
+++ b/arch/mips/ath79/irq.c
@@ -27,7 +27,7 @@
 #include "common.h"
 #include "machtypes.h"
 
-static void ath79_misc_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ath79_misc_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	void __iomem *base = ath79_reset_base;
 	u32 pending;
@@ -120,8 +120,9 @@ static void __init ath79_misc_irq_init(void)
 	irq_set_chained_handler(ATH79_CPU_IRQ(6), ath79_misc_irq_handler);
 }
 
-static void ar934x_ip2_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void ar934x_ip2_irq_dispatch(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 status;
 
 	disable_irq_nosync(irq);
@@ -153,8 +154,10 @@ static void ar934x_ip2_irq_init(void)
 	irq_set_chained_handler(ATH79_CPU_IRQ(2), ar934x_ip2_irq_dispatch);
 }
 
-static void qca955x_ip2_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void qca955x_ip2_irq_dispatch(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 status;
 
 	disable_irq_nosync(irq);
@@ -181,8 +184,10 @@ enable:
 	enable_irq(irq);
 }
 
-static void qca955x_ip3_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void qca955x_ip3_irq_dispatch(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 status;
 
 	disable_irq_nosync(irq);
diff --git a/arch/mips/jz4740/gpio.c b/arch/mips/jz4740/gpio.c
index 54c80d4..b3b8d47 100644
--- a/arch/mips/jz4740/gpio.c
+++ b/arch/mips/jz4740/gpio.c
@@ -296,7 +296,8 @@ static void jz_gpio_check_trigger_both(struct jz_gpio_chip *chip, unsigned int i
 	writel(mask, reg);
 }
 
-static void jz_gpio_irq_demux_handler(unsigned int irq, struct irq_desc *desc)
+static void jz_gpio_irq_demux_handler(unsigned int __irq,
+				      struct irq_desc *desc)
 {
 	uint32_t flag;
 	unsigned int gpio_irq;
diff --git a/arch/mips/kernel/i8259.c b/arch/mips/kernel/i8259.c
index 74f6752..e0423fb 100644
--- a/arch/mips/kernel/i8259.c
+++ b/arch/mips/kernel/i8259.c
@@ -353,8 +353,9 @@ void __init init_i8259_irqs(void)
 	__init_i8259_irqs(NULL);
 }
 
-static void i8259_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void i8259_irq_dispatch(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *domain = irq_get_handler_data(irq);
 	int hwirq = i8259_irq();
 
diff --git a/arch/mips/netlogic/common/smp.c b/arch/mips/netlogic/common/smp.c
index dc3e327..51a12a0 100644
--- a/arch/mips/netlogic/common/smp.c
+++ b/arch/mips/netlogic/common/smp.c
@@ -82,8 +82,9 @@ void nlm_send_ipi_mask(const struct cpumask *mask, unsigned int action)
 }
 
 /* IRQ_IPI_SMP_FUNCTION Handler */
-void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc)
+void nlm_smp_function_ipi_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	clear_c0_eimr(irq);
 	ack_c0_eirr(irq);
 	smp_call_function_interrupt();
@@ -91,8 +92,9 @@ void nlm_smp_function_ipi_handler(unsigned int irq, struct irq_desc *desc)
 }
 
 /* IRQ_IPI_SMP_RESCHEDULE  handler */
-void nlm_smp_resched_ipi_handler(unsigned int irq, struct irq_desc *desc)
+void nlm_smp_resched_ipi_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	clear_c0_eimr(irq);
 	ack_c0_eirr(irq);
 	scheduler_ipi();
diff --git a/arch/mips/pci/pci-ar2315.c b/arch/mips/pci/pci-ar2315.c
index dadb303..999a56c 100644
--- a/arch/mips/pci/pci-ar2315.c
+++ b/arch/mips/pci/pci-ar2315.c
@@ -318,7 +318,7 @@ static int ar2315_pci_host_setup(struct ar2315_pci_ctrl *apc)
 	return 0;
 }
 
-static void ar2315_pci_irq_handler(unsigned irq, struct irq_desc *desc)
+static void ar2315_pci_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	struct ar2315_pci_ctrl *apc = irq_desc_get_handler_data(desc);
 	u32 pending = ar2315_pci_reg_read(apc, AR2315_PCI_ISR) &
diff --git a/arch/mips/pci/pci-ar71xx.c b/arch/mips/pci/pci-ar71xx.c
index 2dbc747..9c4c54c 100644
--- a/arch/mips/pci/pci-ar71xx.c
+++ b/arch/mips/pci/pci-ar71xx.c
@@ -226,7 +226,7 @@ static struct pci_ops ar71xx_pci_ops = {
 	.write	= ar71xx_pci_write_config,
 };
 
-static void ar71xx_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ar71xx_pci_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct ar71xx_pci_controller *apc;
 	void __iomem *base = ath79_reset_base;
diff --git a/arch/mips/pci/pci-ar724x.c b/arch/mips/pci/pci-ar724x.c
index 0af362b..223929c 100644
--- a/arch/mips/pci/pci-ar724x.c
+++ b/arch/mips/pci/pci-ar724x.c
@@ -225,7 +225,7 @@ static struct pci_ops ar724x_pci_ops = {
 	.write	= ar724x_pci_write,
 };
 
-static void ar724x_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ar724x_pci_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct ar724x_pci_controller *apc;
 	void __iomem *base;
diff --git a/arch/mips/pci/pci-rt3883.c b/arch/mips/pci/pci-rt3883.c
index 80fafe6..adaa2b8 100644
--- a/arch/mips/pci/pci-rt3883.c
+++ b/arch/mips/pci/pci-rt3883.c
@@ -129,7 +129,7 @@ static void rt3883_pci_write_cfg32(struct rt3883_pci_controller *rpc,
 	rt3883_pci_w32(rpc, val, RT3883_PCI_REG_CFGDATA);
 }
 
-static void rt3883_pci_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void rt3883_pci_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct rt3883_pci_controller *rpc;
 	u32 pending;
diff --git a/arch/mips/ralink/irq.c b/arch/mips/ralink/irq.c
index da301e0..2fd1318 100644
--- a/arch/mips/ralink/irq.c
+++ b/arch/mips/ralink/irq.c
@@ -95,7 +95,7 @@ unsigned int get_c0_compare_int(void)
 	return CP0_LEGACY_COMPARE_IRQ;
 }
 
-static void ralink_intc_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ralink_intc_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	u32 pending = rt_intc_r32(INTC_REG_STATUS0);
 
diff --git a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
index ca3a062..ce8287c 100644
--- a/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
+++ b/arch/powerpc/platforms/512x/mpc5121_ads_cpld.c
@@ -105,7 +105,7 @@ cpld_pic_get_irq(int offset, u8 ignore, u8 __iomem *statusp,
 }
 
 static void
-cpld_pic_cascade(unsigned int irq, struct irq_desc *desc)
+cpld_pic_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	irq = cpld_pic_get_irq(0, PCI_IGNORE, &cpld_regs->pci_status,
 		&cpld_regs->pci_mask);
diff --git a/arch/powerpc/platforms/52xx/media5200.c b/arch/powerpc/platforms/52xx/media5200.c
index 32cae33..7736000 100644
--- a/arch/powerpc/platforms/52xx/media5200.c
+++ b/arch/powerpc/platforms/52xx/media5200.c
@@ -80,7 +80,7 @@ static struct irq_chip media5200_irq_chip = {
 	.irq_mask_ack = media5200_irq_mask,
 };
 
-void media5200_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void media5200_irq_cascade(unsigned int __virq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int sub_virq, val;
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
index 6301662..a5ba376 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
@@ -191,7 +191,7 @@ static struct irq_chip mpc52xx_gpt_irq_chip = {
 	.irq_set_type = mpc52xx_gpt_irq_set_type,
 };
 
-void mpc52xx_gpt_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void mpc52xx_gpt_irq_cascade(unsigned int __virq, struct irq_desc *desc)
 {
 	struct mpc52xx_gpt_priv *gpt = irq_desc_get_handler_data(desc);
 	int sub_virq;
diff --git a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
index 74861a7..fb42005 100644
--- a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
+++ b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
@@ -78,7 +78,7 @@ static struct irq_chip pq2ads_pci_ic = {
 	.irq_disable = pq2ads_pci_mask_irq
 };
 
-static void pq2ads_pci_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void pq2ads_pci_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pq2ads_pci_pic *priv = irq_desc_get_handler_data(desc);
 	u32 stat, mask, pend;
diff --git a/arch/powerpc/platforms/85xx/common.c b/arch/powerpc/platforms/85xx/common.c
index 7bfb9b1..1be093c 100644
--- a/arch/powerpc/platforms/85xx/common.c
+++ b/arch/powerpc/platforms/85xx/common.c
@@ -49,7 +49,7 @@ int __init mpc85xx_common_publish_devices(void)
 	return of_platform_bus_probe(NULL, mpc85xx_common_ids, NULL);
 }
 #ifdef CONFIG_CPM2
-static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm2_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq;
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
index b0753e2..13a8d1a 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -192,9 +192,10 @@ void mpc85xx_cds_fixup_bus(struct pci_bus *bus)
 }
 
 #ifdef CONFIG_PPC_I8259
-static void mpc85xx_8259_cascade_handler(unsigned int irq,
+static void mpc85xx_8259_cascade_handler(unsigned int __irq,
 					 struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	unsigned int cascade_irq = i8259_irq();
 
 	if (cascade_irq != NO_IRQ)
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index ffdf021..29799fa 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -46,7 +46,7 @@
 #endif
 
 #ifdef CONFIG_PPC_I8259
-static void mpc85xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc85xx_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
index 55a9682..0210f2e 100644
--- a/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
+++ b/arch/powerpc/platforms/85xx/socrates_fpga_pic.c
@@ -91,8 +91,9 @@ static inline unsigned int socrates_fpga_pic_get_irq(unsigned int irq)
 			(irq_hw_number_t)i);
 }
 
-void socrates_fpga_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void socrates_fpga_pic_cascade(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
 
diff --git a/arch/powerpc/platforms/86xx/pic.c b/arch/powerpc/platforms/86xx/pic.c
index d5b98c0..494df58 100644
--- a/arch/powerpc/platforms/86xx/pic.c
+++ b/arch/powerpc/platforms/86xx/pic.c
@@ -17,7 +17,7 @@
 #include <asm/i8259.h>
 
 #ifdef CONFIG_PPC_I8259
-static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc86xx_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/8xx/m8xx_setup.c b/arch/powerpc/platforms/8xx/m8xx_setup.c
index d303774..d0e5597 100644
--- a/arch/powerpc/platforms/8xx/m8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/m8xx_setup.c
@@ -214,7 +214,7 @@ void mpc8xx_restart(char *cmd)
 	panic("Restart failed\n");
 }
 
-static void cpm_cascade(unsigned int irq, struct irq_desc *desc)
+static void cpm_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int cascade_irq = cpm_get_irq();
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c
index fe51de4..23b3ce3 100644
--- a/arch/powerpc/platforms/cell/axon_msi.c
+++ b/arch/powerpc/platforms/cell/axon_msi.c
@@ -93,7 +93,7 @@ static void msic_dcr_write(struct axon_msic *msic, unsigned int dcr_n, u32 val)
 	dcr_write(msic->dcr_host, dcr_n, val);
 }
 
-static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
+static void axon_msi_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct axon_msic *msic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/interrupt.c b/arch/powerpc/platforms/cell/interrupt.c
index 3af8324..e2dd6c9 100644
--- a/arch/powerpc/platforms/cell/interrupt.c
+++ b/arch/powerpc/platforms/cell/interrupt.c
@@ -99,8 +99,9 @@ static void iic_ioexc_eoi(struct irq_data *d)
 {
 }
 
-static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc)
+static void iic_ioexc_cascade(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct cbe_iic_regs __iomem *node_iic =
 		(void __iomem *)irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/cell/spider-pic.c b/arch/powerpc/platforms/cell/spider-pic.c
index 1f72f4a..f3622c5 100644
--- a/arch/powerpc/platforms/cell/spider-pic.c
+++ b/arch/powerpc/platforms/cell/spider-pic.c
@@ -199,7 +199,7 @@ static const struct irq_domain_ops spider_host_ops = {
 	.xlate = spider_host_xlate,
 };
 
-static void spider_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void spider_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct spider_pic *pic = irq_desc_get_handler_data(desc);
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
index 15ebc4e..fcea134 100644
--- a/arch/powerpc/platforms/chrp/setup.c
+++ b/arch/powerpc/platforms/chrp/setup.c
@@ -363,7 +363,7 @@ void __init chrp_setup_arch(void)
 	if (ppc_md.progress) ppc_md.progress("Linux/PPC "UTS_RELEASE"\n", 0x0);
 }
 
-static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void chrp_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
index 9dd154d..55ee2f4 100644
--- a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
+++ b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
@@ -120,7 +120,7 @@ static unsigned int __hlwd_pic_get_irq(struct irq_domain *h)
 	return irq_linear_revmap(h, irq);
 }
 
-static void hlwd_pic_irq_cascade(unsigned int cascade_virq,
+static void hlwd_pic_irq_cascade(unsigned int __cascade_virq,
 				      struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/arch/powerpc/platforms/embedded6xx/mvme5100.c b/arch/powerpc/platforms/embedded6xx/mvme5100.c
index 1613303..b9240fd 100644
--- a/arch/powerpc/platforms/embedded6xx/mvme5100.c
+++ b/arch/powerpc/platforms/embedded6xx/mvme5100.c
@@ -42,7 +42,7 @@
 static phys_addr_t pci_membase;
 static u_char *restart;
 
-static void mvme5100_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void mvme5100_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index df6a704..3395706 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -111,7 +111,7 @@ static void __init fwnmi_init(void)
 		fwnmi_active = 1;
 }
 
-static void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void pseries_8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/powerpc/sysdev/ge/ge_pic.c b/arch/powerpc/sysdev/ge/ge_pic.c
index 2bcb78b..78c5767 100644
--- a/arch/powerpc/sysdev/ge/ge_pic.c
+++ b/arch/powerpc/sysdev/ge/ge_pic.c
@@ -91,7 +91,7 @@ static int gef_pic_cascade_irq;
  * should be masked out.
  */
 
-void gef_pic_cascade(unsigned int irq, struct irq_desc *desc)
+void gef_pic_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq;
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c
index 57b5447..62c9d44 100644
--- a/arch/powerpc/sysdev/tsi108_pci.c
+++ b/arch/powerpc/sysdev/tsi108_pci.c
@@ -428,7 +428,7 @@ void __init tsi108_pci_int_init(struct device_node *node)
 	init_pci_source();
 }
 
-void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc)
+void tsi108_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = get_pci_source();
diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
index d773453..e027f8a 100644
--- a/arch/powerpc/sysdev/uic.c
+++ b/arch/powerpc/sysdev/uic.c
@@ -194,7 +194,7 @@ static const struct irq_domain_ops uic_host_ops = {
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-void uic_irq_cascade(unsigned int virq, struct irq_desc *desc)
+void uic_irq_cascade(unsigned int __virq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_data *idata = irq_desc_get_irq_data(desc);
diff --git a/arch/powerpc/sysdev/xilinx_intc.c b/arch/powerpc/sysdev/xilinx_intc.c
index 43b8b27..71d19d0 100644
--- a/arch/powerpc/sysdev/xilinx_intc.c
+++ b/arch/powerpc/sysdev/xilinx_intc.c
@@ -222,7 +222,7 @@ int xilinx_intc_get_irq(void)
 /*
  * Support code for cascading to 8259 interrupt controllers
  */
-static void xilinx_i8259_cascade(unsigned int irq, struct irq_desc *desc)
+static void xilinx_i8259_cascade(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned int cascade_irq = i8259_irq();
diff --git a/arch/sh/boards/mach-se/7343/irq.c b/arch/sh/boards/mach-se/7343/irq.c
index 1087dba..f41bb15 100644
--- a/arch/sh/boards/mach-se/7343/irq.c
+++ b/arch/sh/boards/mach-se/7343/irq.c
@@ -29,8 +29,9 @@
 static void __iomem *se7343_irq_regs;
 struct irq_domain *se7343_irq_domain;
 
-static void se7343_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7343_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
diff --git a/arch/sh/boards/mach-se/7722/irq.c b/arch/sh/boards/mach-se/7722/irq.c
index 00e6992..7f4243a 100644
--- a/arch/sh/boards/mach-se/7722/irq.c
+++ b/arch/sh/boards/mach-se/7722/irq.c
@@ -28,8 +28,9 @@
 static void __iomem *se7722_irq_regs;
 struct irq_domain *se7722_irq_domain;
 
-static void se7722_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7722_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
diff --git a/arch/sh/boards/mach-se/7724/irq.c b/arch/sh/boards/mach-se/7724/irq.c
index 5d1d3ec..9f20338 100644
--- a/arch/sh/boards/mach-se/7724/irq.c
+++ b/arch/sh/boards/mach-se/7724/irq.c
@@ -92,8 +92,9 @@ static struct irq_chip se7724_irq_chip __read_mostly = {
 	.irq_unmask	= enable_se7724_irq,
 };
 
-static void se7724_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void se7724_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct fpga_irq set = get_fpga_irq(irq);
 	unsigned short intv = __raw_readw(set.sraddr);
 	unsigned int ext_irq = set.base;
diff --git a/arch/sh/boards/mach-x3proto/gpio.c b/arch/sh/boards/mach-x3proto/gpio.c
index f035a7a..effee72 100644
--- a/arch/sh/boards/mach-x3proto/gpio.c
+++ b/arch/sh/boards/mach-x3proto/gpio.c
@@ -60,8 +60,10 @@ static int x3proto_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
 	return virq;
 }
 
-static void x3proto_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void x3proto_gpio_irq_handler(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned long mask;
diff --git a/arch/sh/cchips/hd6446x/hd64461.c b/arch/sh/cchips/hd6446x/hd64461.c
index e973561..e14095b 100644
--- a/arch/sh/cchips/hd6446x/hd64461.c
+++ b/arch/sh/cchips/hd6446x/hd64461.c
@@ -56,7 +56,7 @@ static struct irq_chip hd64461_irq_chip = {
 	.irq_unmask	= hd64461_unmask_irq,
 };
 
-static void hd64461_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void hd64461_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned short intv = __raw_readw(HD64461_NIRR);
 	unsigned int ext_irq = HD64461_IRQBASE;
diff --git a/arch/tile/kernel/pci_gx.c b/arch/tile/kernel/pci_gx.c
index b1df847..a41400f 100644
--- a/arch/tile/kernel/pci_gx.c
+++ b/arch/tile/kernel/pci_gx.c
@@ -304,8 +304,9 @@ static struct irq_chip tilegx_legacy_irq_chip = {
  * to Linux which just calls handle_level_irq() after clearing the
  * MAC INTx Assert status bit associated with this interrupt.
  */
-static void trio_handle_level_irq(unsigned int irq, struct irq_desc *desc)
+static void trio_handle_level_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pci_controller *controller = irq_desc_get_handler_data(desc);
 	gxio_trio_context_t *trio_context = controller->trio;
 	uint64_t intx = (uint64_t)irq_desc_get_chip_data(desc);
diff --git a/arch/unicore32/kernel/irq.c b/arch/unicore32/kernel/irq.c
index 0be5ccd..625d427 100644
--- a/arch/unicore32/kernel/irq.c
+++ b/arch/unicore32/kernel/irq.c
@@ -113,7 +113,7 @@ static struct irq_chip puv3_low_gpio_chip = {
  * and call the handler.
  */
 static void
-puv3_gpio_handler(unsigned int irq, struct irq_desc *desc)
+puv3_gpio_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int mask;
 
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
index f2dc08c..bc45c0e 100644
--- a/arch/x86/lguest/boot.c
+++ b/arch/x86/lguest/boot.c
@@ -1021,7 +1021,7 @@ static struct clock_event_device lguest_clockevent = {
  * This is the Guest timer interrupt handler (hardware interrupt 0).  We just
  * call the clockevent infrastructure and it does whatever needs doing.
  */
-static void lguest_time_irq(unsigned int irq, struct irq_desc *desc)
+static void lguest_time_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long flags;
 
diff --git a/drivers/dma/ipu/ipu_irq.c b/drivers/dma/ipu/ipu_irq.c
index 2e284a4..b56858e 100644
--- a/drivers/dma/ipu/ipu_irq.c
+++ b/drivers/dma/ipu/ipu_irq.c
@@ -266,8 +266,9 @@ int ipu_irq_unmap(unsigned int source)
 }
 
 /* Chained IRQ handler for IPU error interrupt */
-static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_err(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct ipu *ipu = irq_get_handler_data(irq);
 	u32 status;
 	int i, line;
@@ -307,8 +308,9 @@ static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
 }
 
 /* Chained IRQ handler for IPU function interrupt */
-static void ipu_irq_fn(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_fn(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct ipu *ipu = irq_desc_get_handler_data(desc);
 	u32 status;
 	int i, line;
diff --git a/drivers/gpio/gpio-bcm-kona.c b/drivers/gpio/gpio-bcm-kona.c
index 8333f87..5c6e179 100644
--- a/drivers/gpio/gpio-bcm-kona.c
+++ b/drivers/gpio/gpio-bcm-kona.c
@@ -433,8 +433,10 @@ static int bcm_kona_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void bcm_kona_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void bcm_kona_gpio_irq_handler(unsigned int __irq,
+				      struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	void __iomem *reg_base;
 	int bit, bank_id;
 	unsigned long sta;
diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index c5e05c8..cb1494e 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -327,8 +327,9 @@ static struct irq_chip gpio_irqchip = {
 };
 
 static void
-gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct davinci_gpio_regs __iomem *g;
 	u32 mask = 0xffff;
 	struct davinci_gpio_controller *d;
diff --git a/drivers/gpio/gpio-dwapb.c b/drivers/gpio/gpio-dwapb.c
index 58faf04..4b15bc1 100644
--- a/drivers/gpio/gpio-dwapb.c
+++ b/drivers/gpio/gpio-dwapb.c
@@ -147,8 +147,9 @@ static u32 dwapb_do_irq(struct dwapb_gpio *gpio)
 	return ret;
 }
 
-static void dwapb_irq_handler(u32 irq, struct irq_desc *desc)
+static void dwapb_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct dwapb_gpio *gpio = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
diff --git a/drivers/gpio/gpio-ep93xx.c b/drivers/gpio/gpio-ep93xx.c
index 45684f3..e815f56 100644
--- a/drivers/gpio/gpio-ep93xx.c
+++ b/drivers/gpio/gpio-ep93xx.c
@@ -78,7 +78,8 @@ static void ep93xx_gpio_int_debounce(unsigned int irq, bool enable)
 		EP93XX_GPIO_REG(int_debounce_register_offset[port]));
 }
 
-static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ep93xx_gpio_ab_irq_handler(unsigned int __irq,
+				       struct irq_desc *desc)
 {
 	unsigned char status;
 	int i;
@@ -100,8 +101,10 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
 	}
 }
 
-static void ep93xx_gpio_f_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ep93xx_gpio_f_irq_handler(unsigned int __irq,
+				      struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	/*
 	 * map discontiguous hw irq range to continuous sw irq range:
 	 *
diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c
index 20aa66f..24321ca 100644
--- a/drivers/gpio/gpio-mpc8xxx.c
+++ b/drivers/gpio/gpio-mpc8xxx.c
@@ -185,7 +185,8 @@ static int mpc8xxx_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
 		return -ENXIO;
 }
 
-static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void mpc8xxx_gpio_irq_cascade(unsigned int __irq,
+				     struct irq_desc *desc)
 {
 	struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-msic.c b/drivers/gpio/gpio-msic.c
index 01acf0a..43a690e 100644
--- a/drivers/gpio/gpio-msic.c
+++ b/drivers/gpio/gpio-msic.c
@@ -232,7 +232,7 @@ static struct irq_chip msic_irqchip = {
 	.irq_bus_sync_unlock	= msic_bus_sync_unlock,
 };
 
-static void msic_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void msic_gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
 	struct msic_gpio *mg = irq_data_get_irq_handler_data(data);
diff --git a/drivers/gpio/gpio-msm-v2.c b/drivers/gpio/gpio-msm-v2.c
index 52ff182..8c6f935 100644
--- a/drivers/gpio/gpio-msm-v2.c
+++ b/drivers/gpio/gpio-msm-v2.c
@@ -313,7 +313,7 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type)
  * which have been set as summary IRQ lines and which are triggered,
  * and to call their interrupt handlers.
  */
-static void msm_summary_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void msm_summary_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned long i;
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
index 1a54205..87edf07 100644
--- a/drivers/gpio/gpio-mvebu.c
+++ b/drivers/gpio/gpio-mvebu.c
@@ -458,8 +458,9 @@ static int mvebu_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void mvebu_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void mvebu_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct mvebu_gpio_chip *mvchip = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	u32 cause, type;
diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
index 7007036..8ec96e1 100644
--- a/drivers/gpio/gpio-mxc.c
+++ b/drivers/gpio/gpio-mxc.c
@@ -272,8 +272,9 @@ static void mxc_gpio_irq_handler(struct mxc_gpio_port *port, u32 irq_stat)
 }
 
 /* MX1 and MX3 has one interrupt *per* gpio port */
-static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx3_gpio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 irq_stat;
 	struct mxc_gpio_port *port = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
@@ -288,8 +289,9 @@ static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc)
 }
 
 /* MX2 has one interrupt *for all* gpio ports */
-static void mx2_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mx2_gpio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 irq_msk, irq_stat;
 	struct mxc_gpio_port *port;
 	struct irq_chip *chip = irq_get_chip(irq);
diff --git a/drivers/gpio/gpio-mxs.c b/drivers/gpio/gpio-mxs.c
index 150a322..3e0291e 100644
--- a/drivers/gpio/gpio-mxs.c
+++ b/drivers/gpio/gpio-mxs.c
@@ -154,8 +154,9 @@ static void mxs_flip_edge(struct mxs_gpio_port *port, u32 gpio)
 }
 
 /* MXS has one interrupt *per* gpio port */
-static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc)
+static void mxs_gpio_irq_handler(u32 __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 irq_stat;
 	struct mxs_gpio_port *port = irq_get_handler_data(irq);
 
diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index cdbbcf0..ab7db60 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -401,7 +401,7 @@ static int pxa_gpio_irq_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc)
+static void pxa_gpio_demux_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pxa_gpio_chip *c;
 	int loop, gpio, gpio_base, n;
diff --git a/drivers/gpio/gpio-sa1100.c b/drivers/gpio/gpio-sa1100.c
index 3fa22da..96e36d5 100644
--- a/drivers/gpio/gpio-sa1100.c
+++ b/drivers/gpio/gpio-sa1100.c
@@ -173,7 +173,7 @@ static struct irq_domain *sa1100_gpio_irqdomain;
  * and call the handler.
  */
 static void
-sa1100_gpio_handler(unsigned int irq, struct irq_desc *desc)
+sa1100_gpio_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	unsigned int mask;
 
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index a19f81a..983070b 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -266,8 +266,9 @@ static void tegra_gpio_irq_shutdown(struct irq_data *d)
 	gpiochip_unlock_as_irq(&tegra_gpio_chip, gpio);
 }
 
-static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void tegra_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct tegra_gpio_bank *bank;
 	int port;
 	int pin;
diff --git a/drivers/gpio/gpio-timberdale.c b/drivers/gpio/gpio-timberdale.c
index e8f97e0..2a5a005 100644
--- a/drivers/gpio/gpio-timberdale.c
+++ b/drivers/gpio/gpio-timberdale.c
@@ -192,8 +192,9 @@ out:
 	return ret;
 }
 
-static void timbgpio_irq(unsigned int irq, struct irq_desc *desc)
+static void timbgpio_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct timbgpio *tgpio = irq_get_handler_data(irq);
 	unsigned long ipr;
 	int offset;
diff --git a/drivers/gpio/gpio-tz1090.c b/drivers/gpio/gpio-tz1090.c
index 445660a..aa3b366 100644
--- a/drivers/gpio/gpio-tz1090.c
+++ b/drivers/gpio/gpio-tz1090.c
@@ -375,7 +375,7 @@ static int gpio_set_irq_wake(struct irq_data *data, unsigned int on)
 #define gpio_set_irq_wake NULL
 #endif
 
-static void tz1090_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void tz1090_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	irq_hw_number_t hw;
 	unsigned int irq_stat, irq_no;
diff --git a/drivers/gpu/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
index 67bab5c..f6a6421 100644
--- a/drivers/gpu/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -912,8 +912,9 @@ static void ipu_irq_handle(struct ipu_soc *ipu, const int *regs, int num_regs)
 	}
 }
 
-static void ipu_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ipu_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
 	const int int_reg[] = { 0, 1, 2, 3, 10, 11, 12, 13, 14};
 	struct irq_chip *chip = irq_get_chip(irq);
@@ -925,8 +926,9 @@ static void ipu_irq_handler(unsigned int irq, struct irq_desc *desc)
 	chained_irq_exit(chip, desc);
 }
 
-static void ipu_err_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ipu_err_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct ipu_soc *ipu = irq_desc_get_handler_data(desc);
 	const int int_reg[] = { 4, 5, 8, 9};
 	struct irq_chip *chip = irq_get_chip(irq);
diff --git a/drivers/irqchip/exynos-combiner.c b/drivers/irqchip/exynos-combiner.c
index a57a3a1..a568080 100644
--- a/drivers/irqchip/exynos-combiner.c
+++ b/drivers/irqchip/exynos-combiner.c
@@ -60,8 +60,10 @@ static void combiner_unmask_irq(struct irq_data *data)
 	__raw_writel(mask, combiner_base(data) + COMBINER_ENABLE_SET);
 }
 
-static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+static void combiner_handle_cascade_irq(unsigned int __irq,
+					struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct combiner_chip_data *chip_data = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned int cascade_irq, combiner_irq;
diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c
index 0d3b0fe..17a4a27 100644
--- a/drivers/irqchip/irq-armada-370-xp.c
+++ b/drivers/irqchip/irq-armada-370-xp.c
@@ -448,9 +448,10 @@ static void armada_370_xp_handle_msi_irq(struct pt_regs *regs, bool is_chained)
 static void armada_370_xp_handle_msi_irq(struct pt_regs *r, bool b) {}
 #endif
 
-static void armada_370_xp_mpic_handle_cascade_irq(unsigned int irq,
+static void armada_370_xp_mpic_handle_cascade_irq(unsigned int __irq,
 						  struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned long irqmap, irqn, irqsrc, cpuid;
 	unsigned int cascade_irq;
diff --git a/drivers/irqchip/irq-bcm7038-l1.c b/drivers/irqchip/irq-bcm7038-l1.c
index d3b8c8b..dbebc99 100644
--- a/drivers/irqchip/irq-bcm7038-l1.c
+++ b/drivers/irqchip/irq-bcm7038-l1.c
@@ -116,7 +116,7 @@ static inline void l1_writel(u32 val, void __iomem *reg)
 		writel(val, reg);
 }
 
-static void bcm7038_l1_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void bcm7038_l1_irq_handle(unsigned int __irq, struct irq_desc *desc)
 {
 	struct bcm7038_l1_chip *intc = irq_desc_get_handler_data(desc);
 	struct bcm7038_l1_cpu *cpu;
diff --git a/drivers/irqchip/irq-bcm7120-l2.c b/drivers/irqchip/irq-bcm7120-l2.c
index 3ba5cc7..4c54e33 100644
--- a/drivers/irqchip/irq-bcm7120-l2.c
+++ b/drivers/irqchip/irq-bcm7120-l2.c
@@ -52,7 +52,8 @@ struct bcm7120_l2_intc_data {
 	const __be32 *map_mask_prop;
 };
 
-static void bcm7120_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void bcm7120_l2_intc_irq_handle(unsigned int __irq,
+				       struct irq_desc *desc)
 {
 	struct bcm7120_l2_intc_data *b = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/irq-brcmstb-l2.c b/drivers/irqchip/irq-brcmstb-l2.c
index d6bcc6b..4f78f18 100644
--- a/drivers/irqchip/irq-brcmstb-l2.c
+++ b/drivers/irqchip/irq-brcmstb-l2.c
@@ -51,8 +51,10 @@ struct brcmstb_l2_intc_data {
 	u32 saved_mask; /* for suspend/resume */
 };
 
-static void brcmstb_l2_intc_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void brcmstb_l2_intc_irq_handle(unsigned int __irq,
+				       struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct brcmstb_l2_intc_data *b = irq_desc_get_handler_data(desc);
 	struct irq_chip_generic *gc = irq_get_domain_generic_chip(b->domain, 0);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/irq-dw-apb-ictl.c b/drivers/irqchip/irq-dw-apb-ictl.c
index 53bb732..6df4c18 100644
--- a/drivers/irqchip/irq-dw-apb-ictl.c
+++ b/drivers/irqchip/irq-dw-apb-ictl.c
@@ -26,8 +26,9 @@
 #define APB_INT_FINALSTATUS_L	0x30
 #define APB_INT_FINALSTATUS_H	0x34
 
-static void dw_apb_ictl_handler(unsigned int irq, struct irq_desc *desc)
+static void dw_apb_ictl_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct irq_chip_generic *gc = irq_get_handler_data(irq);
 	struct irq_domain *d = gc->private;
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 8d7e1c8..881cc72 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -286,8 +286,9 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
 	} while (1);
 }
 
-static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+static void gic_handle_cascade_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct gic_chip_data *chip_data = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned int cascade_irq, gic_irq;
diff --git a/drivers/irqchip/irq-imgpdc.c b/drivers/irqchip/irq-imgpdc.c
index 8071c2e..86d50d5 100644
--- a/drivers/irqchip/irq-imgpdc.c
+++ b/drivers/irqchip/irq-imgpdc.c
@@ -218,8 +218,9 @@ static int pdc_irq_set_wake(struct irq_data *data, unsigned int on)
 	return 0;
 }
 
-static void pdc_intc_perip_isr(unsigned int irq, struct irq_desc *desc)
+static void pdc_intc_perip_isr(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pdc_intc_priv *priv;
 	unsigned int i, irq_no;
 
@@ -239,7 +240,7 @@ found:
 	generic_handle_irq(irq_no);
 }
 
-static void pdc_intc_syswake_isr(unsigned int irq, struct irq_desc *desc)
+static void pdc_intc_syswake_isr(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pdc_intc_priv *priv;
 	unsigned int syswake, irq_no;
diff --git a/drivers/irqchip/irq-keystone.c b/drivers/irqchip/irq-keystone.c
index 5dc6165..a14c88a 100644
--- a/drivers/irqchip/irq-keystone.c
+++ b/drivers/irqchip/irq-keystone.c
@@ -84,8 +84,9 @@ static void keystone_irq_ack(struct irq_data *d)
 	/* nothing to do here */
 }
 
-static void keystone_irq_handler(unsigned irq, struct irq_desc *desc)
+static void keystone_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct keystone_irq_device *kirq = irq_desc_get_handler_data(desc);
 	unsigned long pending;
 	int src, virq;
diff --git a/drivers/irqchip/irq-metag.c b/drivers/irqchip/irq-metag.c
index c16c186..4e5bae7 100644
--- a/drivers/irqchip/irq-metag.c
+++ b/drivers/irqchip/irq-metag.c
@@ -220,7 +220,8 @@ static int metag_internal_irq_set_affinity(struct irq_data *data,
  *	occurred. It is this function's job to demux this irq and
  *	figure out exactly which trigger needs servicing.
  */
-static void metag_internal_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void metag_internal_irq_demux(unsigned int __irq,
+				     struct irq_desc *desc)
 {
 	struct metag_internal_irq_priv *priv = irq_desc_get_handler_data(desc);
 	irq_hw_number_t hw;
diff --git a/drivers/irqchip/irq-metag-ext.c b/drivers/irqchip/irq-metag-ext.c
index 2cb474a..09717d4 100644
--- a/drivers/irqchip/irq-metag-ext.c
+++ b/drivers/irqchip/irq-metag-ext.c
@@ -447,7 +447,7 @@ static int meta_intc_irq_set_type(struct irq_data *data, unsigned int flow_type)
  * Whilst using TR2 to detect external interrupts is a software convention it is
  * (hopefully) unlikely to change.
  */
-static void meta_intc_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void meta_intc_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct meta_intc_priv *priv = &meta_intc_priv;
 	irq_hw_number_t hw;
diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c
index 44d2d10..2eaf447 100644
--- a/drivers/irqchip/irq-mips-gic.c
+++ b/drivers/irqchip/irq-mips-gic.c
@@ -513,7 +513,7 @@ static void __gic_irq_dispatch(void)
 	gic_handle_shared_int();
 }
 
-static void gic_irq_dispatch(unsigned int irq, struct irq_desc *desc)
+static void gic_irq_dispatch(unsigned int __irq, struct irq_desc *desc)
 {
 	__gic_irq_dispatch();
 }
diff --git a/drivers/irqchip/irq-mmp.c b/drivers/irqchip/irq-mmp.c
index c0da57b..44febf1 100644
--- a/drivers/irqchip/irq-mmp.c
+++ b/drivers/irqchip/irq-mmp.c
@@ -130,8 +130,9 @@ struct irq_chip icu_irq_chip = {
 	.irq_unmask	= icu_unmask_irq,
 };
 
-static void icu_mux_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void icu_mux_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *domain;
 	struct icu_chip_data *data;
 	int i;
diff --git a/drivers/irqchip/irq-orion.c b/drivers/irqchip/irq-orion.c
index ad0c0f6..f25d0f8 100644
--- a/drivers/irqchip/irq-orion.c
+++ b/drivers/irqchip/irq-orion.c
@@ -107,8 +107,10 @@ IRQCHIP_DECLARE(orion_intc, "marvell,orion-intc", orion_irq_init);
 #define ORION_BRIDGE_IRQ_CAUSE	0x00
 #define ORION_BRIDGE_IRQ_MASK	0x04
 
-static void orion_bridge_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void orion_bridge_irq_handler(unsigned int __irq,
+				     struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *d = irq_get_handler_data(irq);
 
 	struct irq_chip_generic *gc = irq_get_domain_generic_chip(d, 0);
diff --git a/drivers/irqchip/irq-s3c24xx.c b/drivers/irqchip/irq-s3c24xx.c
index e96717f..4030d53 100644
--- a/drivers/irqchip/irq-s3c24xx.c
+++ b/drivers/irqchip/irq-s3c24xx.c
@@ -299,7 +299,7 @@ static struct irq_chip s3c_irq_eint0t4 = {
 	.irq_set_type	= s3c_irqext0_type,
 };
 
-static void s3c_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void s3c_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct s3c_irq_data *irq_data = irq_desc_get_chip_data(desc);
diff --git a/drivers/irqchip/irq-sunxi-nmi.c b/drivers/irqchip/irq-sunxi-nmi.c
index 6b2b582..f6c63db 100644
--- a/drivers/irqchip/irq-sunxi-nmi.c
+++ b/drivers/irqchip/irq-sunxi-nmi.c
@@ -58,8 +58,9 @@ static inline u32 sunxi_sc_nmi_read(struct irq_chip_generic *gc, u32 off)
 	return irq_reg_readl(gc, off);
 }
 
-static void sunxi_sc_nmi_handle_irq(unsigned int irq, struct irq_desc *desc)
+static void sunxi_sc_nmi_handle_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned int virq = irq_find_mapping(domain, 0);
diff --git a/drivers/irqchip/irq-tb10x.c b/drivers/irqchip/irq-tb10x.c
index accc200..a8dada3 100644
--- a/drivers/irqchip/irq-tb10x.c
+++ b/drivers/irqchip/irq-tb10x.c
@@ -97,8 +97,9 @@ static int tb10x_irq_set_type(struct irq_data *data, unsigned int flow_type)
 	return IRQ_SET_MASK_OK;
 }
 
-static void tb10x_irq_cascade(unsigned int irq, struct irq_desc *desc)
+static void tb10x_irq_cascade(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_domain *domain = irq_desc_get_handler_data(desc);
 
 	generic_handle_irq(irq_find_mapping(domain, irq));
diff --git a/drivers/irqchip/irq-versatile-fpga.c b/drivers/irqchip/irq-versatile-fpga.c
index 888111b..52e539d 100644
--- a/drivers/irqchip/irq-versatile-fpga.c
+++ b/drivers/irqchip/irq-versatile-fpga.c
@@ -66,8 +66,9 @@ static void fpga_irq_unmask(struct irq_data *d)
 	writel(mask, f->base + IRQ_ENABLE_SET);
 }
 
-static void fpga_irq_handle(unsigned int irq, struct irq_desc *desc)
+static void fpga_irq_handle(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct fpga_irq_data *f = irq_desc_get_handler_data(desc);
 	u32 status = readl(f->base + IRQ_STATUS);
 
diff --git a/drivers/irqchip/irq-vic.c b/drivers/irqchip/irq-vic.c
index d4ce331..f5a261b 100644
--- a/drivers/irqchip/irq-vic.c
+++ b/drivers/irqchip/irq-vic.c
@@ -226,7 +226,7 @@ static int handle_one_vic(struct vic_device *vic, struct pt_regs *regs)
 	return handled;
 }
 
-static void vic_handle_irq_cascaded(unsigned int irq, struct irq_desc *desc)
+static void vic_handle_irq_cascaded(unsigned int __irq, struct irq_desc *desc)
 {
 	u32 stat, hwirq;
 	struct irq_chip *host_chip = irq_desc_get_chip(desc);
diff --git a/drivers/irqchip/spear-shirq.c b/drivers/irqchip/spear-shirq.c
index 9c145a7..34cde1f 100644
--- a/drivers/irqchip/spear-shirq.c
+++ b/drivers/irqchip/spear-shirq.c
@@ -183,8 +183,9 @@ static struct spear_shirq *spear320_shirq_blocks[] = {
 	&spear320_shirq_intrcomm_ras,
 };
 
-static void shirq_handler(unsigned irq, struct irq_desc *desc)
+static void shirq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct spear_shirq *shirq = irq_get_handler_data(irq);
 	u32 pend;
 
diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c
index 977bd3a..e182e6f 100644
--- a/drivers/mfd/asic3.c
+++ b/drivers/mfd/asic3.c
@@ -138,7 +138,7 @@ static void asic3_irq_flip_edge(struct asic3 *asic,
 	spin_unlock_irqrestore(&asic->lock, flags);
 }
 
-static void asic3_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void asic3_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct asic3 *asic = irq_desc_get_handler_data(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
index 5991fad..546771c 100644
--- a/drivers/mfd/ezx-pcap.c
+++ b/drivers/mfd/ezx-pcap.c
@@ -205,8 +205,9 @@ static void pcap_isr_work(struct work_struct *work)
 	} while (gpio_get_value(pdata->gpio));
 }
 
-static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pcap_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pcap_chip *pcap = irq_get_handler_data(irq);
 
 	desc->irq_data.chip->irq_ack(&desc->irq_data);
diff --git a/drivers/mfd/htc-egpio.c b/drivers/mfd/htc-egpio.c
index 49f39fe..207c350 100644
--- a/drivers/mfd/htc-egpio.c
+++ b/drivers/mfd/htc-egpio.c
@@ -98,7 +98,7 @@ static struct irq_chip egpio_muxed_chip = {
 	.irq_unmask	= egpio_unmask,
 };
 
-static void egpio_handler(unsigned int irq, struct irq_desc *desc)
+static void egpio_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct egpio_info *ei = irq_desc_get_handler_data(desc);
 	int irqpin;
diff --git a/drivers/mfd/jz4740-adc.c b/drivers/mfd/jz4740-adc.c
index b31c54e..1f3ace2 100644
--- a/drivers/mfd/jz4740-adc.c
+++ b/drivers/mfd/jz4740-adc.c
@@ -65,7 +65,7 @@ struct jz4740_adc {
 	spinlock_t lock;
 };
 
-static void jz4740_adc_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void jz4740_adc_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip_generic *gc = irq_desc_get_handler_data(desc);
 	uint8_t status;
diff --git a/drivers/mfd/pm8921-core.c b/drivers/mfd/pm8921-core.c
index 5a92646..fc50052 100644
--- a/drivers/mfd/pm8921-core.c
+++ b/drivers/mfd/pm8921-core.c
@@ -156,7 +156,7 @@ static int pm8xxx_irq_master_handler(struct pm_irq_chip *chip, int master)
 	return ret;
 }
 
-static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pm8xxx_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
 	struct pm_irq_chip *chip = irq_desc_get_handler_data(desc);
 	struct irq_chip *irq_chip = irq_desc_get_chip(desc);
diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c
index c09fb5d..84d6833 100644
--- a/drivers/mfd/t7l66xb.c
+++ b/drivers/mfd/t7l66xb.c
@@ -185,8 +185,9 @@ static struct mfd_cell t7l66xb_cells[] = {
 /*--------------------------------------------------------------------------*/
 
 /* Handle the T7L66XB interrupt mux */
-static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc)
+static void t7l66xb_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct t7l66xb *t7l66xb = irq_get_handler_data(irq);
 	unsigned int isr;
 	unsigned int i, irq_base;
diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c
index 63458b3..b1d0f88 100644
--- a/drivers/mfd/tc6393xb.c
+++ b/drivers/mfd/tc6393xb.c
@@ -523,8 +523,9 @@ static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base)
 /*--------------------------------------------------------------------------*/
 
 static void
-tc6393xb_irq(unsigned int irq, struct irq_desc *desc)
+tc6393xb_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct tc6393xb *tc6393xb = irq_get_handler_data(irq);
 	unsigned int isr;
 	unsigned int i, irq_base;
diff --git a/drivers/mfd/ucb1x00-core.c b/drivers/mfd/ucb1x00-core.c
index 58ea9fd..e000007 100644
--- a/drivers/mfd/ucb1x00-core.c
+++ b/drivers/mfd/ucb1x00-core.c
@@ -282,8 +282,9 @@ void ucb1x00_adc_disable(struct ucb1x00 *ucb)
  * SIBCLK to talk to the chip.  We leave the clock running until
  * we have finished processing all interrupts from the chip.
  */
-static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc)
+static void ucb1x00_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct ucb1x00 *ucb = irq_desc_get_handler_data(desc);
 	unsigned int isr, i;
 
diff --git a/drivers/pci/host/pci-keystone.c b/drivers/pci/host/pci-keystone.c
index 75333b0..91e2739 100644
--- a/drivers/pci/host/pci-keystone.c
+++ b/drivers/pci/host/pci-keystone.c
@@ -112,8 +112,9 @@ static int ks_pcie_establish_link(struct keystone_pcie *ks_pcie)
 	return 0;
 }
 
-static void ks_pcie_msi_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ks_pcie_msi_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
 	u32 offset = irq - ks_pcie->msi_host_irqs[0];
 	struct pcie_port *pp = &ks_pcie->pp;
@@ -139,8 +140,10 @@ static void ks_pcie_msi_irq_handler(unsigned int irq, struct irq_desc *desc)
  * Traverse through pending legacy interrupts and invoke handler for each. Also
  * takes care of interrupt controller level mask/ack operation.
  */
-static void ks_pcie_legacy_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void ks_pcie_legacy_irq_handler(unsigned int __irq,
+				       struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct keystone_pcie *ks_pcie = irq_desc_get_handler_data(desc);
 	struct pcie_port *pp = &ks_pcie->pp;
 	u32 irq_offset = irq - ks_pcie->legacy_host_irqs[0];
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
index 5f016c0..bd0cfe9 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
@@ -1116,8 +1116,9 @@ mtk_eint_debounce_process(struct mtk_pinctrl *pctl, int index)
 	}
 }
 
-static void mtk_eint_irq_handler(unsigned irq, struct irq_desc *desc)
+static void mtk_eint_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct mtk_pinctrl *pctl = irq_get_handler_data(irq);
 	unsigned int status, eint_num;
diff --git a/drivers/pinctrl/pinctrl-adi2.c b/drivers/pinctrl/pinctrl-adi2.c
index 49df903..d790249 100644
--- a/drivers/pinctrl/pinctrl-adi2.c
+++ b/drivers/pinctrl/pinctrl-adi2.c
@@ -530,8 +530,8 @@ static inline void preflow_handler(struct irq_desc *desc)
 static inline void preflow_handler(struct irq_desc *desc) { }
 #endif
 
-static void adi_gpio_handle_pint_irq(unsigned int inta_irq,
-			struct irq_desc *desc)
+static void adi_gpio_handle_pint_irq(unsigned int __inta_irq,
+				     struct irq_desc *desc)
 {
 	u32 request;
 	u32 level_mask, hwirq;
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index dee7d5f..63d1578 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -1394,8 +1394,9 @@ static const struct gpio_chip rockchip_gpiolib_chip = {
  * Interrupt handling
  */
 
-static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void rockchip_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct rockchip_pin_bank *bank = irq_get_handler_data(irq);
 	u32 pend;
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index 968e352..1221f30 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -1679,8 +1679,9 @@ static irqreturn_t pcs_irq_handler(int irq, void *d)
  * Use this if you have a separate interrupt for each
  * pinctrl-single instance.
  */
-static void pcs_irq_chain_handler(unsigned int irq, struct irq_desc *desc)
+static void pcs_irq_chain_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip;
 
diff --git a/drivers/pinctrl/pinctrl-st.c b/drivers/pinctrl/pinctrl-st.c
index 65bf73b..e17a5d4 100644
--- a/drivers/pinctrl/pinctrl-st.c
+++ b/drivers/pinctrl/pinctrl-st.c
@@ -1472,8 +1472,9 @@ static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 	chained_irq_exit(chip, desc);
 }
 
-static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
+static void st_gpio_irqmux_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct st_pinctrl *info = irq_get_handler_data(irq);
 	unsigned long status;
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c
index 0b7afa5..4f8a1fb 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -420,8 +420,9 @@ static const struct of_device_id exynos_wkup_irq_ids[] = {
 };
 
 /* interrupt handler for wakeup interrupts 0..15 */
-static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
+static void exynos_irq_eint0_15(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct exynos_weint_data *eintd = irq_get_handler_data(irq);
 	struct samsung_pin_bank *bank = eintd->bank;
 	struct irq_chip *chip = irq_get_chip(irq);
@@ -452,8 +453,10 @@ static inline void exynos_irq_demux_eint(unsigned long pend,
 }
 
 /* interrupt handler for wakeup interrupt 16 */
-static void exynos_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
+static void exynos_irq_demux_eint16_31(unsigned int __irq,
+				       struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct exynos_muxed_weint_data *eintd = irq_get_handler_data(irq);
 	struct samsung_pinctrl_drv_data *d = eintd->banks[0]->drvdata;
diff --git a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
index 7756c1e..6c418ff 100644
--- a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
+++ b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
@@ -408,8 +408,9 @@ static const struct irq_domain_ops s3c64xx_gpio_irqd_ops = {
 	.xlate	= irq_domain_xlate_twocell,
 };
 
-static void s3c64xx_eint_gpio_irq(unsigned int irq, struct irq_desc *desc)
+static void s3c64xx_eint_gpio_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct s3c64xx_eint_gpio_data *data = irq_get_handler_data(irq);
 	struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index f8e171b..32ed079 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -709,8 +709,9 @@ static struct irq_chip sunxi_pinctrl_level_irq_chip = {
 			  IRQCHIP_EOI_IF_HANDLED,
 };
 
-static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
+static void sunxi_pinctrl_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	struct sunxi_pinctrl *pctl = irq_get_handler_data(irq);
 	unsigned long bank, reg, val;
diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
index 81f2298..9b389e4 100644
--- a/drivers/sh/intc/core.c
+++ b/drivers/sh/intc/core.c
@@ -65,8 +65,9 @@ void intc_set_prio_level(unsigned int irq, unsigned int level)
 	raw_spin_unlock_irqrestore(&intc_big_lock, flags);
 }
 
-static void intc_redirect_irq(unsigned int irq, struct irq_desc *desc)
+static void intc_redirect_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	generic_handle_irq((unsigned int)irq_get_handler_data(irq));
 }
 
diff --git a/drivers/sh/intc/virq.c b/drivers/sh/intc/virq.c
index f30ac93..ba63f2b 100644
--- a/drivers/sh/intc/virq.c
+++ b/drivers/sh/intc/virq.c
@@ -107,8 +107,9 @@ static int add_virq_to_pirq(unsigned int irq, unsigned int virq)
 	return 0;
 }
 
-static void intc_virq_handler(unsigned int irq, struct irq_desc *desc)
+static void intc_virq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_data *data = irq_get_irq_data(irq);
 	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	struct intc_virq_list *entry, *vlist = irq_data_get_irq_handler_data(data);
diff --git a/drivers/spmi/spmi-pmic-arb.c b/drivers/spmi/spmi-pmic-arb.c
index d7119db..b2cc722 100644
--- a/drivers/spmi/spmi-pmic-arb.c
+++ b/drivers/spmi/spmi-pmic-arb.c
@@ -451,8 +451,9 @@ static void periph_interrupt(struct spmi_pmic_arb_dev *pa, u8 apid)
 	}
 }
 
-static void pmic_arb_chained_irq(unsigned int irq, struct irq_desc *desc)
+static void pmic_arb_chained_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct spmi_pmic_arb_dev *pa = irq_get_handler_data(irq);
 	struct irq_chip *chip = irq_get_chip(irq);
 	void __iomem *intr = pa->intr;
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 330fc79..e493257 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -383,8 +383,9 @@ static bool irq_may_run(struct irq_desc *desc)
  *	unmask issues if necessary.
  */
 void
-handle_simple_irq(unsigned int irq, struct irq_desc *desc)
+handle_simple_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	raw_spin_lock(&desc->lock);
 
 	if (!irq_may_run(desc))
@@ -434,8 +435,9 @@ static void cond_unmask_irq(struct irq_desc *desc)
  *	interrupt line is back to inactive.
  */
 void
-handle_level_irq(unsigned int irq, struct irq_desc *desc)
+handle_level_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	raw_spin_lock(&desc->lock);
 	mask_ack_irq(desc);
 
@@ -505,8 +507,9 @@ static void cond_unmask_eoi_irq(struct irq_desc *desc, struct irq_chip *chip)
  *	details in hardware, transparently.
  */
 void
-handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
+handle_fasteoi_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = desc->irq_data.chip;
 
 	raw_spin_lock(&desc->lock);
@@ -561,8 +564,9 @@ EXPORT_SYMBOL_GPL(handle_fasteoi_irq);
  *	loop is left.
  */
 void
-handle_edge_irq(unsigned int irq, struct irq_desc *desc)
+handle_edge_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	raw_spin_lock(&desc->lock);
 
 	desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING);
@@ -624,8 +628,9 @@ EXPORT_SYMBOL(handle_edge_irq);
  * Similar as the above handle_edge_irq, but using eoi and w/o the
  * mask/unmask logic.
  */
-void handle_edge_eoi_irq(unsigned int irq, struct irq_desc *desc)
+void handle_edge_eoi_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	raw_spin_lock(&desc->lock);
@@ -671,8 +676,9 @@ out_eoi:
  *	Per CPU interrupts on SMP machines without locking requirements
  */
 void
-handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
+handle_percpu_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	kstat_incr_irqs_this_cpu(irq, desc);
@@ -698,8 +704,9 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
  * contain the real device id for the cpu on which this handler is
  * called
  */
-void handle_percpu_devid_irq(unsigned int irq, struct irq_desc *desc)
+void handle_percpu_devid_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irqaction *action = desc->action;
 	void *dev_id = raw_cpu_ptr(action->percpu_dev_id);
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index 6354802..fd60025 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -27,8 +27,9 @@
  *
  * Handles spurious and unhandled IRQ's. It also prints a debugmessage.
  */
-void handle_bad_irq(unsigned int irq, struct irq_desc *desc)
+void handle_bad_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	print_irq_desc(irq, desc);
 	kstat_incr_irqs_this_cpu(irq, desc);
 	ack_bad_irq(irq);

^ permalink raw reply related	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-13 14:53               ` Julia Lawall
@ 2015-06-13 16:49                 ` Jiang Liu
  2015-06-13 20:15                   ` Julia Lawall
  0 siblings, 1 reply; 120+ messages in thread
From: Jiang Liu @ 2015-06-13 16:49 UTC (permalink / raw)
  To: Julia Lawall
  Cc: Thomas Gleixner, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jason Cooper, Kevin Cernekee,
	Arnd Bergmann, Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck,
	x86, LKML, linux-pci, linux-acpi

On 2015/6/13 22:53, Julia Lawall wrote:
> Better formatted diff.
Great thanks to you, Julia!
It seems really attractively, I will try to figure out
whether I have caught all the cases.

BTW, a new version of these patch set has been posted at:
http://comments.gmane.org/gmane.linux.kernel.pci/42320

I have also push the new version to github in case you need
to access it:
 https://github.com/jiangliu/linux.git irq:irqdesc_v2

Thanks!
Gerry

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-13 16:49                 ` Jiang Liu
@ 2015-06-13 20:15                   ` Julia Lawall
  2015-06-13 20:32                     ` Thomas Gleixner
  0 siblings, 1 reply; 120+ messages in thread
From: Julia Lawall @ 2015-06-13 20:15 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Julia Lawall, Thomas Gleixner, Bjorn Helgaas,
	Benjamin Herrenschmidt, Ingo Molnar, H. Peter Anvin,
	Rafael J. Wysocki, Randy Dunlap, Yinghai Lu, Borislav Petkov,
	Jason Cooper, Kevin Cernekee, Arnd Bergmann, Marc Zyngier,
	Konrad Rzeszutek Wilk, Tony Luck, x86, LKML, linux-pci,
	linux-acpi

The following are the cases that require some manual attention, either 
because the handler is a local variable or because it is some other kind 
of expression.

julia

Local variable: arch/x86/kernel/apic/io_apic.c:932 hdl
Local variable: arch/sparc/kernel/leon_kernel.c:232 flow_handler
Local variable: arch/sparc/kernel/leon_kernel.c:257 flow_handler
Local variable: arch/powerpc/platforms/52xx/mpc52xx_pic.c:199 handler
Local variable: arch/powerpc/platforms/52xx/mpc52xx_pic.c:364 hndlr
Local variable: arch/powerpc/sysdev/qe_lib/qe_ic.c:377 high_handler
Local variable: arch/powerpc/sysdev/qe_lib/qe_ic.c:372 low_handler
Local variable: arch/mips/cavium-octeon/octeon-irq.c:69 handler
Local variable: arch/mips/alchemy/common/irq.c:494 handler
Local variable: arch/mips/alchemy/common/irq.c:706 hdl
Local variable: arch/blackfin/mach-common/ints-priority.c:693 handle
Local variable: arch/tile/kernel/irq.c:239 handle
Local variable: arch/m68k/kernel/ints.c:124 handle
Local variable: drivers/irqchip/irq-clps711x.c:152 handler
Local variable: drivers/gpio/gpio-ep93xx.c:211 handler
Local variable: drivers/gpio/gpiolib.c:447 parent_handler
Local variable: drivers/pinctrl/intel/pinctrl-cherryview.c:1328 handler
Local variable: kernel/irq/irqdomain.c:946 handler
Local variable: kernel/irq/irqdomain.c:1251 handler
Local variable: kernel/irq/chip.c:787 handle
Arbitrary expression: arch/ia64/kernel/iosapic.c:613 trigger == IOSAPIC_EDGE ? handle_edge_irq : handle_level_irq
Arbitrary expression: arch/powerpc/sysdev/mpic.c:1669 & mpic_cascade
Arbitrary expression: arch/mips/dec/ioasic-irq.c:111 1 << ( i - base ) & IO_IRQ_DMA_INFO ? handle_edge_irq : handle_fasteoi_irq
Arbitrary expression: drivers/irqchip/irq-or1k-pic.c:131 pic -> handle
Arbitrary expression: drivers/iio/industrialio-trigger.c:449 & handle_simple_irq
Arbitrary expression: drivers/gpio/gpio-sta2x11.c:347 ct -> handler
Arbitrary expression: drivers/gpio/gpiolib.c:482 chip -> irq_handler
Arbitrary expression: drivers/pinctrl/samsung/pinctrl-s3c24xx.c:517 handlers [ i ]
Arbitrary expression: drivers/pinctrl/samsung/pinctrl-s3c64xx.c:734 s3c64xx_eint0_handlers [ i ]
Arbitrary expression: drivers/staging/iio/iio_dummy_evgen.c:89 & handle_simple_irq
Arbitrary expression: kernel/irq/generic-chip.c:461 ct -> handler
Arbitrary expression: kernel/irq/msi.c:167 info -> handler

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-13 20:15                   ` Julia Lawall
@ 2015-06-13 20:32                     ` Thomas Gleixner
  2015-06-13 20:42                       ` Julia Lawall
  2015-06-13 21:42                       ` Julia Lawall
  0 siblings, 2 replies; 120+ messages in thread
From: Thomas Gleixner @ 2015-06-13 20:32 UTC (permalink / raw)
  To: Julia Lawall
  Cc: Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86, LKML,
	linux-pci, linux-acpi

On Sat, 13 Jun 2015, Julia Lawall wrote:

> The following are the cases that require some manual attention, either 
> because the handler is a local variable or because it is some other kind 
> of expression.

yep, found it in the logs already and found a missing search expression:

|
gpiochip_set_chained_irqchip@p(e1,e2,e3,\(lih\|ih\|eh\))

This is really impressive work!!!!

Thanks

	tglx
 

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-13 20:32                     ` Thomas Gleixner
@ 2015-06-13 20:42                       ` Julia Lawall
  2015-06-24 21:10                         ` Thomas Gleixner
  2015-06-13 21:42                       ` Julia Lawall
  1 sibling, 1 reply; 120+ messages in thread
From: Julia Lawall @ 2015-06-13 20:42 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Julia Lawall, Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jason Cooper, Kevin Cernekee,
	Arnd Bergmann, Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck,
	x86, LKML, linux-pci, linux-acpi



On Sat, 13 Jun 2015, Thomas Gleixner wrote:

> On Sat, 13 Jun 2015, Julia Lawall wrote:
> 
> > The following are the cases that require some manual attention, either 
> > because the handler is a local variable or because it is some other kind 
> > of expression.
> 
> yep, found it in the logs already and found a missing search expression:
> 
> |
> gpiochip_set_chained_irqchip@p(e1,e2,e3,\(lih\|ih\|eh\))
> 
> This is really impressive work!!!!

Thanks :)

I'll add the above pattern, but I guess you already have the results for 
that case.

julia

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-13 20:32                     ` Thomas Gleixner
  2015-06-13 20:42                       ` Julia Lawall
@ 2015-06-13 21:42                       ` Julia Lawall
  1 sibling, 0 replies; 120+ messages in thread
From: Julia Lawall @ 2015-06-13 21:42 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Julia Lawall, Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jason Cooper, Kevin Cernekee,
	Arnd Bergmann, Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck,
	x86, LKML, linux-pci, linux-acpi

The semantic patch below considers the problem from another point of view, 
to find functions that may have a handler as an argument.  The results 
that are different than those considered already are as follows:

arch/x86/platform/uv/uv_irq.c:106 irq_domain_set_info
	has a possible handler in argument 6
arch/sparc/kernel/leon_pci_grpci2.c:815 leon_update_virq_handling
	has a possible handler in argument 2
arch/sparc/kernel/leon_kernel.c:79 leon_build_device_irq
	has a possible handler in argument 2
arch/arm/mach-omap2/prm_common.c:331 irq_alloc_generic_chip
	has a possible handler in argument 5
arch/mips/cavium-octeon/octeon-irq.c:1231 octeon_irq_set_ciu_mapping
	has a possible handler in argument 6
arch/blackfin/mach-common/ints-priority.c:805 bfin_set_irq_handler
	has a possible handler in argument 2
arch/m68k/q40/q40ints.c:84 m68k_setup_irq_controller
	has a possible handler in argument 2
drivers/gpio/gpio-pcf857x.c:362 gpiochip_irqchip_add
	has a possible handler in argument 4

The semantic patch looks for a function that has as argument a function 
that has arguments of type (unsigned int irq, struct irq_desc *desc) and a 
void return type.  It also looks for functions that have as argument a 
bunch of known irq handlers.

julia


@initialize:ocaml@
@@
let tbl = Hashtbl.create 101
let ln = Str.regexp "linux-next/" (* update as appropriate *)

let _ =
  List.iter (function x -> Hashtbl.add tbl x ())
    [("__irq_set_handler",2);("irq_set_handler",2);
      ("irq_set_chained_handler",2);("irq_alloc_generic_chip",4);
      ("irq_alloc_domain_generic_chips",5);("irq_set_chip_and_handler_name",3);
      ("irq_set_chip_and_handler",3);("__irq_set_handler_locked",2);
      ("__irq_set_chip_handler_name_locked",3);("__irq_set_preflow_handler",2);
      ("gpiochip_set_chained_irqchip",4)]

let update g f n p =
  let n = n + 1 in
  let entry = (g,n) in
  try let _ = Hashtbl.find tbl entry in ()
  with Not_found ->
    begin
      Hashtbl.add tbl entry ();
      let p = List.hd p in
      Printf.printf "%s:%d %s\n\thas a possible handler in argument %d\n"
	(List.nth (Str.split ln p.file) 1) p.line g
	n
    end

@possible_handler@
identifier f,irq,desc;
@@

void f(unsigned int irq, struct irq_desc *desc) { ... }

@call@
identifier g,possible_handler.f;
expression list[n] es;
position p;
@@

g(es,f@p,...)

@script:ocaml@
p << call.p;
f << possible_handler.f;
g << call.g;
n << call.n;
@@

update g f n p

@call2@
identifier g,f;
expression list[n] es;
position p;
symbol handle_level_irq,handle_simple_irq,handle_edge_irq,
       handle_fasteoi_irq,handle_percpu_irq;
@@

g(es,\(handle_level_irq@f@p\|handle_simple_irq@f@p\|handle_edge_irq@f@p\|
       handle_fasteoi_irq@f@p\|handle_percpu_irq@f@p\),...)

@script:ocaml@
p << call2.p;
f << call2.f;
g << call2.g;
n << call2.n;
@@

update g f n p

^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-13 20:42                       ` Julia Lawall
@ 2015-06-24 21:10                         ` Thomas Gleixner
  2015-06-24 21:44                           ` Julia Lawall
  0 siblings, 1 reply; 120+ messages in thread
From: Thomas Gleixner @ 2015-06-24 21:10 UTC (permalink / raw)
  To: Julia Lawall
  Cc: Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt, Ingo Molnar,
	H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap, Yinghai Lu,
	Borislav Petkov, Jason Cooper, Kevin Cernekee, Arnd Bergmann,
	Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck, x86, LKML,
	linux-pci, linux-acpi

On Sat, 13 Jun 2015, Julia Lawall wrote:
> On Sat, 13 Jun 2015, Thomas Gleixner wrote:
> 
> > On Sat, 13 Jun 2015, Julia Lawall wrote:
> > 
> > > The following are the cases that require some manual attention, either 
> > > because the handler is a local variable or because it is some other kind 
> > > of expression.
> > 
> > yep, found it in the logs already and found a missing search expression:
> > 
> > |
> > gpiochip_set_chained_irqchip@p(e1,e2,e3,\(lih\|ih\|eh\))
> > 
> > This is really impressive work!!!!
> 
> Thanks :)
> 
> I'll add the above pattern, but I guess you already have the results for 
> that case.

Yes.

I did some more experiments and analyzed all functions which have the
signature

[static] void f(T irq, struct irq_desc *desc)

where T is either 'unsigned int' or 'u32'

That throws up a handful of false positives, but those are functions
which are called from a real handler function, so we want to look at
those anyway.

Now where my cocci foo ends is when I try to match both types in the
same rule, i.e. 

@ fun exists @
identifier hf,irq,desc;
typedef u32;
@@

(
void hf(unsigned irq, struct irq_desc *desc) { ... }
|
void hf(u32 irq, struct irq_desc *desc) { ... }
)

results in:
Fatal error: exception Failure("minus: parse error: 
 = File "../cocci/find-pot-handler.cocci", line 7, column 5,  charpos = 63
    around = 'hf', whole content = void hf(unsigned irq, struct irq_desc *desc) { ... }
")

I tried a couple of other variants, but finally gave up and ran a
cocci script first which does s/u32/unsigned/ on those functions, but
of course because I'm lazy I wanted to do everything in one go. :)

Aside of that the ruleset you gave me works nicely except for that
part:

// no uses of the first parameter before the assignment
@@
identifier fun.hf,irq;
expression e;
type T;
fresh identifier firq = "__" ## irq;
position r.p,p1 != {s.p1,s1.p1};
@@

hf(T@p
- irq
+ firq
  ,...) {
  ... when != irq
      when strict
? irq@p1 = e
  ... when any
}

That lacks a:

+ unsigned int irq;

and therefor missed to add the local variable 'unsigned int irq' in
case the parameter is only used for local storage.

That was simple enough to fix even for me :)

Thanks,

	tglx


^ permalink raw reply	[flat|nested] 120+ messages in thread

* Re: [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t
  2015-06-24 21:10                         ` Thomas Gleixner
@ 2015-06-24 21:44                           ` Julia Lawall
  0 siblings, 0 replies; 120+ messages in thread
From: Julia Lawall @ 2015-06-24 21:44 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Julia Lawall, Jiang Liu, Bjorn Helgaas, Benjamin Herrenschmidt,
	Ingo Molnar, H. Peter Anvin, Rafael J. Wysocki, Randy Dunlap,
	Yinghai Lu, Borislav Petkov, Jason Cooper, Kevin Cernekee,
	Arnd Bergmann, Marc Zyngier, Konrad Rzeszutek Wilk, Tony Luck,
	x86, LKML, linux-pci, linux-acpi

> Now where my cocci foo ends is when I try to match both types in the
> same rule, i.e. 
> 
> @ fun exists @
> identifier hf,irq,desc;
> typedef u32;
> @@
> 
> (
> void hf(unsigned irq, struct irq_desc *desc) { ... }
> |
> void hf(u32 irq, struct irq_desc *desc) { ... }
> )
> 
> results in:
> Fatal error: exception Failure("minus: parse error: 
>  = File "../cocci/find-pot-handler.cocci", line 7, column 5,  charpos = 63
>     around = 'hf', whole content = void hf(unsigned irq, struct irq_desc *desc) { ... }
> ")

Yeah, sorry, it doesn't work.  There is no way to put a disjunction on
a function definition or a parameter type.

> I tried a couple of other variants, but finally gave up and ran a
> cocci script first which does s/u32/unsigned/ on those functions, but
> of course because I'm lazy I wanted to do everything in one go. :)
> 
> Aside of that the ruleset you gave me works nicely except for that
> part:
> 
> // no uses of the first parameter before the assignment
> @@
> identifier fun.hf,irq;
> expression e;
> type T;
> fresh identifier firq = "__" ## irq;
> position r.p,p1 != {s.p1,s1.p1};
> @@
> 
> hf(T@p
> - irq
> + firq
>   ,...) {
>   ... when != irq
>       when strict
> ? irq@p1 = e
>   ... when any
> }
> 
> That lacks a:
> 
> + unsigned int irq;
> 
> and therefor missed to add the local variable 'unsigned int irq' in
> case the parameter is only used for local storage.

Oops, thanks.

julia

> That was simple enough to fix even for me :)
> 
> Thanks,
> 
> 	tglx
> 
> 

^ permalink raw reply	[flat|nested] 120+ messages in thread

end of thread, other threads:[~2015-06-24 21:44 UTC | newest]

Thread overview: 120+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-20  9:59 [RFC v1 00/25] Optimize irq flow handler Jiang Liu
2015-05-20  9:59 ` Jiang Liu
2015-05-20  9:59 ` [RFC v1 01/25] ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-05-20 19:35   ` Russell King - ARM Linux
2015-05-20 19:35     ` Russell King - ARM Linux
2015-05-20  9:59 ` [RFC v1 02/25] avr32, " Jiang Liu
2015-05-20 10:15   ` Hans-Christian Egtvedt
2015-05-20  9:59 ` [RFC v1 03/25] MIPS, " Jiang Liu
2015-05-20  9:59 ` [RFC v1 04/25] powerpc, " Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-06-02  9:58   ` [RFC, v1, " Michael Ellerman
2015-05-20  9:59 ` [RFC v1 05/25] gpio: " Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-06-01 12:45   ` Linus Walleij
2015-06-01 12:45     ` Linus Walleij
2015-06-01 12:45     ` Linus Walleij
2015-06-01 13:48     ` Jiang Liu
2015-06-01 13:48       ` Jiang Liu
2015-06-01 13:48       ` Jiang Liu
2015-05-20  9:59 ` [RFC v1 06/25] pinctrl: " Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-06-01 12:46   ` Linus Walleij
2015-06-01 12:46     ` Linus Walleij
2015-05-20  9:59 ` [RFC v1 07/25] irqchip: " Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-05-20  9:59 ` [RFC v1 08/25] mfd: " Jiang Liu
2015-05-20 10:44   ` Lee Jones
2015-05-20 10:44     ` Lee Jones
2015-05-20  9:59 ` [RFC v1 09/25] ipu: " Jiang Liu
2015-05-20  9:59 ` [RFC v1 10/25] sh: intc: " Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-05-20 15:12   ` Thomas Gleixner
2015-05-20 15:12     ` Thomas Gleixner
2015-05-20 15:24     ` Jiang Liu
2015-05-20 15:24       ` Jiang Liu
2015-05-20  9:59 ` [RFC v1 11/25] keystone, irq: Use irq_data_get_xxx() to avoid redundant lookup of irq_data Jiang Liu
2015-05-20  9:59   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 12/25] spmi: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Jiang Liu
2015-05-20 10:00 ` [RFC v1 13/25] genirq: Kill the parameter 'irq' of kstat_incr_irqs_this_cpu() Jiang Liu
2015-05-20 15:23   ` Thomas Gleixner
2015-05-20 10:00 ` [RFC v1 14/25] genirq: Kill the first parameter 'irq' of irq_flow_handler_t Jiang Liu
2015-05-20 15:25   ` Thomas Gleixner
2015-05-20 15:28     ` Jiang Liu
2015-05-20 18:35       ` Thomas Gleixner
2015-05-20 20:00         ` Julia Lawall
2015-05-20 20:12           ` Thomas Gleixner
2015-05-20 20:15             ` Julia Lawall
2015-05-20 20:22               ` Thomas Gleixner
2015-06-12 20:29                 ` Julia Lawall
2015-06-12 20:35                   ` Thomas Gleixner
2015-06-12 22:16                     ` Julia Lawall
2015-06-13  8:27         ` Julia Lawall
2015-06-13  9:00         ` Julia Lawall
2015-06-13  9:32           ` Thomas Gleixner
2015-06-13 14:04             ` Julia Lawall
2015-06-13 14:53               ` Julia Lawall
2015-06-13 16:49                 ` Jiang Liu
2015-06-13 20:15                   ` Julia Lawall
2015-06-13 20:32                     ` Thomas Gleixner
2015-06-13 20:42                       ` Julia Lawall
2015-06-24 21:10                         ` Thomas Gleixner
2015-06-24 21:44                           ` Julia Lawall
2015-06-13 21:42                       ` Julia Lawall
2015-05-20 18:36       ` Thomas Gleixner
2015-05-20 10:00 ` [RFC v1 15/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 15:28   ` Thomas Gleixner
2015-05-20 15:28     ` Thomas Gleixner
2015-05-20 15:28     ` Thomas Gleixner
2015-05-20 15:32     ` Jiang Liu
2015-05-20 15:32       ` Jiang Liu
2015-05-20 15:32       ` Jiang Liu
2015-05-20 15:48       ` Thomas Gleixner
2015-05-20 15:48         ` Thomas Gleixner
2015-05-20 15:48         ` Thomas Gleixner
2015-05-20 15:38   ` Hans Ulli Kroll
2015-05-20 15:38     ` Hans Ulli Kroll
2015-05-20 15:38     ` Hans Ulli Kroll
2015-05-20 18:54   ` Robert Jarzmik
2015-05-20 18:54     ` Robert Jarzmik
2015-05-20 18:54     ` Robert Jarzmik
2015-05-20 10:00 ` [RFC v1 16/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 17/25] " Jiang Liu
2015-05-20 10:00 ` [RFC v1 18/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 19/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 20/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:16   ` Hans-Christian Egtvedt
2015-05-20 10:16     ` Hans-Christian Egtvedt
2015-05-20 10:16     ` Hans-Christian Egtvedt
2015-05-20 10:00 ` [RFC v1 21/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 22/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 23/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 10:00 ` [RFC v1 24/25] " Jiang Liu
2015-05-20 10:43   ` Lee Jones
2015-05-20 10:43     ` Lee Jones
2015-05-20 10:00 ` [RFC v1 25/25] " Jiang Liu
2015-05-20 10:00   ` Jiang Liu
2015-05-20 15:40   ` Thomas Gleixner
2015-05-20 15:40     ` Thomas Gleixner
2015-05-20 15:49     ` Jiang Liu
2015-05-20 15:49       ` Jiang Liu
2015-05-20 18:43       ` Thomas Gleixner
2015-05-20 18:43         ` Thomas Gleixner
2015-05-20 10:16 ` [RFC v1 00/25] Optimize irq flow handler Ingo Molnar
2015-05-20 10:16   ` Ingo Molnar
2015-05-20 10:23   ` Jiang Liu
2015-05-20 10:23     ` Jiang Liu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.