My initial understanding was that with LRENPIE set, any EOI coming from the guest on IRQs that are not in any LRs, will result in a maintenance interrupt and the hypervisor can check which IRQ was deactivated.
Upon taking a closer look though, I can't understand how this can be done. Since such an event will cause an asynchronous exception and not a data abort (like a regular trap), you cannot use the ESR to get the register number that the guest used for the EOI/DIR. The manual only mentions EOIcount, but that's just a counter of how many EOIs occured without a relevant LR.
So my question is, how can you tell which IRQ the guest EOIed, by using the LRENPIE maintenance interrupt and without trapping all EOI guest accesses?
I got a detailed reply from Martin with a very good example, but somehow I cannot find it in this thread anymore. If it got lost due to a forum problem I still have it in my email, so I can post it later if needed.
Hello, Martin's post was caught by our spam bot but I have just approved it so it now appears. Thanks all.
Oli
Arm Community team