Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 14449
b: refs/heads/master
c: 3f90288
h: refs/heads/master
i:
  14447: c1aedc4
v: v3
  • Loading branch information
Grant Grundler authored and Kyle McMartin committed Nov 17, 2005
1 parent eb38172 commit fbb511d
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9a8b4584065dd241d6c2bf818e349986bd900b8e
refs/heads/master: 3f902886a81c6d4e6c399760936b645b5c7a7342
13 changes: 6 additions & 7 deletions trunk/arch/parisc/kernel/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -250,10 +250,11 @@ void do_cpu_irq_mask(struct pt_regs *regs)
irq_enter();

/*
* Only allow interrupt processing to be interrupted by the
* timer tick
* Don't allow TIMER or IPI nested interrupts.
* Allowing any single interrupt to nest can lead to that CPU
* handling interrupts with all enabled interrupts unmasked.
*/
set_eiem(EIEM_MASK(TIMER_IRQ));
set_eiem(0UL);

/* 1) only process IRQs that are enabled/unmasked (cpu_eiem)
* 2) We loop here on EIRR contents in order to avoid
Expand All @@ -267,9 +268,6 @@ void do_cpu_irq_mask(struct pt_regs *regs)
if (!eirr_val)
break;

if (eirr_val & EIEM_MASK(TIMER_IRQ))
set_eiem(0);

mtctl(eirr_val, 23); /* reset bits we are going to process */

/* Work our way from MSb to LSb...same order we alloc EIRs */
Expand All @@ -283,7 +281,8 @@ void do_cpu_irq_mask(struct pt_regs *regs)
__do_IRQ(irq, regs);
}
}
set_eiem(cpu_eiem);

set_eiem(cpu_eiem); /* restore original mask */
irq_exit();
}

Expand Down

0 comments on commit fbb511d

Please sign in to comment.