diff options
author | Guo Ren <ren_guo@c-sky.com> | 2019-01-08 13:49:24 +0100 |
---|---|---|
committer | Guo Ren <ren_guo@c-sky.com> | 2019-01-08 17:18:46 +0100 |
commit | 56752b21755aef598709d143684cb363db98a7d2 (patch) | |
tree | f2fd36e145d1415f306a295c61aff66783134b31 /crypto/rsa.c | |
parent | csky: fixup compile error with pte_alloc (diff) | |
download | linux-56752b21755aef598709d143684cb363db98a7d2.tar.xz linux-56752b21755aef598709d143684cb363db98a7d2.zip |
irqchip/csky: fixup handle_irq_perbit break irq
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 <ren_guo@c-sky.com>
Cc: Lu Baoquan <lu.baoquan@intellif.com>
Diffstat (limited to 'crypto/rsa.c')
0 files changed, 0 insertions, 0 deletions