On 02/01/18 11:13, Jean-Christophe DUBOIS wrote:
Hi Mark, Artyom,
I am wondering if the IRQMP code in hw/intc/grlib_irqmp.c is correct
when it comes to acknowledging interrupts.
With the actual code an interrupt can be lowered/acked only by an "ack"
from the processor which means that the trap handler related to this
external interrupt needs to be run for the ack to happen.
In particular this means that the interrupt cannot be acked only by
software. Even if the software clears the "pending" interrupts (by
writing to the CLEAR_OFFSET register before the interrupt handler is
run) this does not clear the interrupt to the processor (which is kept
asserted until the handler is run and the interrupt acked by the
processor). Do you know if this is indeed the intended behavior (I
understand that for most operating system the interrupt handler will be
run at last and this does not make a difference)?
I would expect that clearing interrupt through software (by writing to
the CLEAR_OFFSET register) would have the same effect as the processor
acknowledgment (and could avoid to run the interrupt handler if things
have already been taken care of by software).
Unfortunately the documentation I got (on the web) on the IRQMP is not
very clear on the topic.
Anyway you can find below the patch I'd like to provide for IRQMP.
Thanks
Thanks for the patch! I'm afraid I don't really have any experience with
LEON as my focus is sun4m/sun4u, however I'm happy to take patches
Acked/Reviewed by Fabien as the current LEON maintainer if they don't
cause any regressions in my own tests.
ATB,
Mark.