qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH arm-devs v1]  pl330: Interrupt logic fix
@ 2013-04-03  3:57 Peter Crosthwaite
  2013-04-03  3:59 ` [Qemu-devel] [PATCH arm-devs v1] pl330: Dont inhibit ES bits on INTEN Peter Crosthwaite
  0 siblings, 1 reply; 3+ messages in thread
From: Peter Crosthwaite @ 2013-04-03  3:57 UTC (permalink / raw)
  To: qemu-devel, peter.maydell; +Cc: Peter Crosthwaite

Hi Peter

I recently did a bringup of the common Linux kernel pl330 driver as
instantiated in Zynq. Just the one QEMU bug discovered in the process,
with the interrupt logic.

Regards,
Peter


Peter Crosthwaite (1):
  pl330: Dont inhibit ES bits on INTEN

 hw/pl330.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Qemu-devel] [PATCH arm-devs v1] pl330: Dont inhibit ES bits on INTEN
  2013-04-03  3:57 [Qemu-devel] [PATCH arm-devs v1] pl330: Interrupt logic fix Peter Crosthwaite
@ 2013-04-03  3:59 ` Peter Crosthwaite
  2013-04-05 16:02   ` Peter Maydell
  0 siblings, 1 reply; 3+ messages in thread
From: Peter Crosthwaite @ 2013-04-03  3:59 UTC (permalink / raw)
  To: qemu-devel, peter.maydell; +Cc: Peter Crosthwaite

This if-else logic inhibits setting of the event status (ES) bits
when interrupts are enabled. This is incorrect. ES should be set
regardless on INTEN state. INTEN only inhibits the signalling of
events to PL330 threads, not setting of the ES register.

Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---

 hw/pl330.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/hw/pl330.c b/hw/pl330.c
index 1a04773..60aa4a8 100644
--- a/hw/pl330.c
+++ b/hw/pl330.c
@@ -870,9 +870,8 @@ static void pl330_dmasev(PL330Chan *ch, uint8_t opcode, uint8_t *args, int len)
         ch->parent->int_status |= (1 << ev_id);
         DB_PRINT("event interrupt raised %d\n", ev_id);
         qemu_irq_raise(ch->parent->irq[ev_id]);
-    } else {
-        ch->parent->ev_status |= (1 << ev_id);
     }
+    ch->parent->ev_status |= (1 << ev_id);
 }
 
 static void pl330_dmast(PL330Chan *ch, uint8_t opcode, uint8_t *args, int len)
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PATCH arm-devs v1] pl330: Dont inhibit ES bits on INTEN
  2013-04-03  3:59 ` [Qemu-devel] [PATCH arm-devs v1] pl330: Dont inhibit ES bits on INTEN Peter Crosthwaite
@ 2013-04-05 16:02   ` Peter Maydell
  0 siblings, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2013-04-05 16:02 UTC (permalink / raw)
  To: Peter Crosthwaite; +Cc: qemu-devel

On 3 April 2013 04:59, Peter Crosthwaite <peter.crosthwaite@xilinx.com> wrote:
> This if-else logic inhibits setting of the event status (ES) bits
> when interrupts are enabled. This is incorrect. ES should be set
> regardless on INTEN state. INTEN only inhibits the signalling of
> events to PL330 threads, not setting of the ES register.
>
> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>

Thanks, applied to arm-devs.next.

-- PMM

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-04-05 16:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-03  3:57 [Qemu-devel] [PATCH arm-devs v1] pl330: Interrupt logic fix Peter Crosthwaite
2013-04-03  3:59 ` [Qemu-devel] [PATCH arm-devs v1] pl330: Dont inhibit ES bits on INTEN Peter Crosthwaite
2013-04-05 16:02   ` Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).