I would like to know how pending interrupts are managed in Gems 2.0 when a
transaction is being executed. As far as I can see, we set an Interrupt flag
and trap to software handler by an exception (like a TLB miss).
For LogTM, we do not disable interrupts during transaction execution.
The interrupt flag and the subsequent trap are used only when we are
retrying a conflicting memory reference in hardware. In this case, Simics
cannot process the pending interrupt until we unstall it by completing
the memory reference. Hence we generate a trap on the reference and
allow the interrupt to be handled while we are in the software handler for
the trap.
However, is it possible to handle a pending interrupt if we are in PRIV_MODE? It
can't be done in Gems 2.0, as exceptions are caught when we aren't.
I didn't quite understand your question. Execution in PRIV_MODE is 'escaped'
by default. Interrupt processing should not be affected by LogTM in this
case.
Does Lazy VM handle interrupts? I think that a good way to do it should be
jumping to software handler, but it must require some extra information (i.e.
put some extra information in the log) that I miss.
I think LazyVM in Gems can handle interrupts as long as there is no
interaction
between the interrupt handler and the transaction being executed.
Jayaram
|