diff options
| author | Matthew Wilcox <willy@parisc-linux.org> | 2005-03-08 16:13:13 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-03-08 16:13:13 -0800 |
| commit | 6365711de73b0e67cf2c8e496300dbfe491d2a8c (patch) | |
| tree | c0057b708a25e4bcf67be98c2a6386365835d0bc /include | |
| parent | 16b81eccbfaa784f801af8e67cea7e924b572f2f (diff) | |
[PATCH] PA-RISC irq handling improvements
- Move the bits_wide parameter from txn_alloc_data to txn_alloc_irq.
It's too late by the time it hits txn_alloc_data(), we can only panic.
In txn_alloc_irq, we can fail the allocation and continue.
- Also fix a bug where we'd only allow up to half the interrupts to be
allocated. Not a problem for iosapic machines, but might have sucked
on a really big GSC-based machine.
- Add missing irq_enter() / irq_exit()
- Allow interrupt processing to be interrupted by the timer tick so we
actually account hard interrupts. Also speed up the handling of CPU
interrupts by not masking with cpu_eiem again.
- Remove sufficiently obsolete DEBUG_IRQ code
- Remove limit on times around the loop. If we exit the loop while
interrupts are still pending, we'll only be re-interrupted as soon
as we exit the function.
- Remove unnecessary includes
Signed-off-by: Matthew Wilcox <willy@parisc-linux.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-parisc/irq.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/include/asm-parisc/irq.h b/include/asm-parisc/irq.h index 4e5fad213c39..75654ba93353 100644 --- a/include/asm-parisc/irq.h +++ b/include/asm-parisc/irq.h @@ -40,10 +40,12 @@ struct hw_interrupt_type; void no_ack_irq(unsigned int irq); void no_end_irq(unsigned int irq); -extern int txn_alloc_irq(void); +extern int txn_alloc_irq(unsigned int nbits); extern int txn_claim_irq(int); -extern unsigned int txn_alloc_data(int, unsigned int); -extern unsigned long txn_alloc_addr(int); +extern unsigned int txn_alloc_data(unsigned int); +extern unsigned long txn_alloc_addr(unsigned int); + +extern int cpu_claim_irq(unsigned int irq, struct hw_interrupt_type *, void *); extern int cpu_claim_irq(unsigned int irq, struct hw_interrupt_type *, void *); |
