[parisc-linux] irq.c patch to fix lockups on recent kernels
Grant Grundler
grundler@dsl2.external.hp.com
Thu, 16 May 2002 15:30:48 -0600
Grant Grundler wrote:
> Only the I-bit is disabled when do_cpu_irq_mask() is entered.
> Bits in the EIRR are already cleared by assembler code to indicate
> we are handling those interrupts.
> If any bits in EIRR are set when re-enabling I-bit (in PSW),
> we should get another external interrupt.
I'm thinking we should:
o move the EIRR bit handling into do_cpu_irq_mask()
(do_cpu_irq_mask() could loop until EIRR is zero).
o move I-bit handling into the entry.S assembly.
That way, EIRR and EIM handling is all in C and I-bit is all in asm.
That seems to make the most sense to me since EIRR/EIM are closely
related and I-bit is orthogonal to that.
grant