• Guo Ren's avatar
    irqchip/csky: fixup handle_irq_perbit break irq · dad4502d
    Guo Ren authored
    [ Upstream commit 56752b21 ]
    
    The handle_irq_perbit function loop every bit in hwirq local variable.
    
    handle_irq_perbit(hwirq) {
      for_everyt_bit_in(hwirq) {
    	handle_domain_irq()
    		->irq_exit()
    		->invoke_softirq()
    		->__do_softirq()
    		->local_irq_enable() // Here will cause new interrupt.
      }
    }
    
    When new interrupt coming at local_irq_enable, it will finish another
    interrupt handler and pull down the interrupt source. But hwirq is the
    local variable for handle_irq_perbit(), it can't get new interrupt
    controller pending reg status. So we need update hwirq with pending reg
    in every loop.
    
    Also change write_relax to writel could prevent stw from fast retire.
    When local_irq is enabled, intc regs is really set-in.
    Signed-off-by: Guo Ren's avatarGuo Ren <ren_guo@c-sky.com>
    Cc: Lu Baoquan <lu.baoquan@intellif.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    dad4502d
Name
Last commit
Last update
..
Kconfig Loading commit data...
Makefile Loading commit data...
alphascale_asm9260-icoll.h Loading commit data...
exynos-combiner.c Loading commit data...
irq-alpine-msi.c Loading commit data...
irq-armada-370-xp.c Loading commit data...
irq-aspeed-i2c-ic.c Loading commit data...
irq-aspeed-vic.c Loading commit data...
irq-ath79-cpu.c Loading commit data...
irq-ath79-misc.c Loading commit data...
irq-ativic32.c Loading commit data...
irq-atmel-aic-common.c Loading commit data...
irq-atmel-aic-common.h Loading commit data...
irq-atmel-aic.c Loading commit data...
irq-atmel-aic5.c Loading commit data...
irq-bcm2835.c Loading commit data...
irq-bcm2836.c Loading commit data...
irq-bcm6345-l1.c Loading commit data...
irq-bcm7038-l1.c Loading commit data...
irq-bcm7120-l2.c Loading commit data...
irq-brcmstb-l2.c Loading commit data...
irq-clps711x.c Loading commit data...
irq-crossbar.c Loading commit data...
irq-csky-apb-intc.c Loading commit data...
irq-csky-mpintc.c Loading commit data...
irq-digicolor.c Loading commit data...
irq-dw-apb-ictl.c Loading commit data...
irq-eznps.c Loading commit data...
irq-ftintc010.c Loading commit data...
irq-gic-common.c Loading commit data...
irq-gic-common.h Loading commit data...
irq-gic-pm.c Loading commit data...
irq-gic-realview.c Loading commit data...
irq-gic-v2m.c Loading commit data...
irq-gic-v3-its-fsl-mc-msi.c Loading commit data...
irq-gic-v3-its-pci-msi.c Loading commit data...
irq-gic-v3-its-platform-msi.c Loading commit data...
irq-gic-v3-its.c Loading commit data...
irq-gic-v3-mbi.c Loading commit data...
irq-gic-v3.c Loading commit data...
irq-gic-v4.c Loading commit data...
irq-gic.c Loading commit data...
irq-goldfish-pic.c Loading commit data...
irq-hip04.c Loading commit data...
irq-i8259.c Loading commit data...
irq-imgpdc.c Loading commit data...
irq-imx-gpcv2.c Loading commit data...
irq-ingenic.c Loading commit data...
irq-jcore-aic.c Loading commit data...
irq-keystone.c Loading commit data...
irq-lpc32xx.c Loading commit data...
irq-ls-scfg-msi.c Loading commit data...
irq-mbigen.c Loading commit data...
irq-meson-gpio.c Loading commit data...
irq-mips-cpu.c Loading commit data...
irq-mips-gic.c Loading commit data...
irq-mmp.c Loading commit data...
irq-mscc-ocelot.c Loading commit data...
irq-mtk-cirq.c Loading commit data...
irq-mtk-sysirq.c Loading commit data...
irq-mvebu-gicp.c Loading commit data...
irq-mvebu-icu.c Loading commit data...
irq-mvebu-odmi.c Loading commit data...
irq-mvebu-pic.c Loading commit data...
irq-mvebu-sei.c Loading commit data...
irq-mxs.c Loading commit data...
irq-nvic.c Loading commit data...
irq-omap-intc.c Loading commit data...
irq-ompic.c Loading commit data...
irq-or1k-pic.c Loading commit data...
irq-orion.c Loading commit data...
irq-partition-percpu.c Loading commit data...
irq-pic32-evic.c Loading commit data...
irq-renesas-h8300h.c Loading commit data...
irq-renesas-h8s.c Loading commit data...
irq-renesas-intc-irqpin.c Loading commit data...
irq-renesas-irqc.c Loading commit data...
irq-s3c24xx.c Loading commit data...
irq-sa11x0.c Loading commit data...
irq-sifive-plic.c Loading commit data...
irq-sirfsoc.c Loading commit data...
irq-sni-exiu.c Loading commit data...
irq-st.c Loading commit data...
irq-stm32-exti.c Loading commit data...
irq-sun4i.c Loading commit data...
irq-sunxi-nmi.c Loading commit data...
irq-tango.c Loading commit data...
irq-tb10x.c Loading commit data...
irq-tegra.c Loading commit data...
irq-ts4800.c Loading commit data...
irq-uniphier-aidet.c Loading commit data...
irq-versatile-fpga.c Loading commit data...
irq-vf610-mscm-ir.c Loading commit data...
irq-vic.c Loading commit data...
irq-vt8500.c Loading commit data...
irq-xilinx-intc.c Loading commit data...
irq-xtensa-mx.c Loading commit data...
irq-xtensa-pic.c Loading commit data...
irq-zevio.c Loading commit data...
irqchip.c Loading commit data...
qcom-irq-combiner.c Loading commit data...
qcom-pdc.c Loading commit data...
spear-shirq.c Loading commit data...