[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 2/5] intc/xilinx_intc: Don't clear level sens. IR
From: |
peter . crosthwaite |
Subject: |
[Qemu-devel] [PATCH v2 2/5] intc/xilinx_intc: Don't clear level sens. IRQs without ACK |
Date: |
Tue, 11 Jun 2013 10:58:25 +1000 |
From: Peter Crosthwaite <address@hidden>
For level sensitive interrupts, ISR bits are cleared when the input pin
is lowered. This is incorrect. Only software can clear ISR bits (via
IAR or direct write to ISR with !MER(2)).
Signed-off-by: Peter Crosthwaite <address@hidden>
---
hw/intc/xilinx_intc.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/hw/intc/xilinx_intc.c b/hw/intc/xilinx_intc.c
index b106e72..a585ba1 100644
--- a/hw/intc/xilinx_intc.c
+++ b/hw/intc/xilinx_intc.c
@@ -139,13 +139,7 @@ static void irq_handler(void *opaque, int irq, int level)
return;
}
- /* Update source flops. Don't clear unless level triggered.
- Edge triggered interrupts only go away when explicitely acked to
- the interrupt controller. */
- if (!(p->c_kind_of_intr & (1 << irq)) || level) {
- p->regs[R_ISR] &= ~(1 << irq);
- p->regs[R_ISR] |= (level << irq);
- }
+ p->regs[R_ISR] |= (level << irq);
update_irq(p);
}
--
1.8.3.rc1.44.gb387c77.dirty
- [Qemu-devel] [PATCH v2 0/5] Xilinx Intc Fixes, peter . crosthwaite, 2013/06/10
- [Qemu-devel] [PATCH v2 1/5] microblaze/petalogix_s3adsp1800_mmu: Fix UART IRQ, peter . crosthwaite, 2013/06/10
- [Qemu-devel] [PATCH v2 2/5] intc/xilinx_intc: Don't clear level sens. IRQs without ACK,
peter . crosthwaite <=
- [Qemu-devel] [PATCH v2 3/5] intc/xilinx_intc: Handle level interrupt retriggering, peter . crosthwaite, 2013/06/10
- [Qemu-devel] [PATCH v2 4/5] intc/xilinx_intc: Inhibit write to ISR when HIE, peter . crosthwaite, 2013/06/10
- [Qemu-devel] [PATCH v2 5/5] intc/xilinx_intc: Dont lower IRQ when HIE cleared, peter . crosthwaite, 2013/06/10
- Re: [Qemu-devel] [PATCH v2 0/5] Xilinx Intc Fixes, Edgar E. Iglesias, 2013/06/18