Commit 90732a8a authored by Pavel Pisa's avatar Pavel Pisa Committed by Linus Torvalds

[PATCH] VM86 interrupt emulation fix

Fixes faulty IRQ_NONE value returning by VM86 irq_handler().

The IRQ source is blocked as well until userspace confirms processing.
This should enable to use VM86 code even for level triggered interrupt
sources. 
Signed-off-by: default avatarPavel Pisa <pisa@cmp.felk.cvut.cz>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 6899ad04
...@@ -723,7 +723,14 @@ static irqreturn_t irq_handler(int intno, void *dev_id, struct pt_regs * regs) ...@@ -723,7 +723,14 @@ static irqreturn_t irq_handler(int intno, void *dev_id, struct pt_regs * regs)
irqbits |= irq_bit; irqbits |= irq_bit;
if (vm86_irqs[intno].sig) if (vm86_irqs[intno].sig)
send_sig(vm86_irqs[intno].sig, vm86_irqs[intno].tsk, 1); send_sig(vm86_irqs[intno].sig, vm86_irqs[intno].tsk, 1);
/* else user will poll for IRQs */ spin_unlock_irqrestore(&irqbits_lock, flags);
/*
* IRQ will be re-enabled when user asks for the irq (whether
* polling or as a result of the signal)
*/
disable_irq(intno);
return IRQ_HANDLED;
out: out:
spin_unlock_irqrestore(&irqbits_lock, flags); spin_unlock_irqrestore(&irqbits_lock, flags);
return IRQ_NONE; return IRQ_NONE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment