This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Virtual interrupt EOI mode & irq state

Dear all,

After reading the http://infocenter.arm.com/help/topic/com.arm.doc.dai0492b/GICv3_Software_Overview_Official_Release_B.pdf

I have three questions about the virtual interrupt handing.

1) Can the hypervisor not use the EOI split mode and do the priority drop and inactive operation together to the irq. And then give a pending state to the LRs, the guest can still receive the virq then?

For example, the virtual timer for the vPE, PPI 27.

When the vtimer irq assert, it traps to EL2, and hypervisor do priority drop and inactive operation together. And create a LR, and assert to the VM.

Is it possible to do so?

2) The other question is about the irq state transcation. Assume the level trigger irq and split EOI mode.

1. pending -> active & pending if we ack the irq

2. if we drop the priority, how the state change? still in active & pending?

3. if we write to device reg and reset the device state, it may change from active & pending to active

4. finally, we deactive the irq.

but without split EOI mode, things turns like

1 3 4(with priority drop and deactive)?

3) Does the virq share the same state with the physic irq, i read from the doc that with virtualization extension, the virq state can affect to the pirq state, e.g., deactive the virq also deactive the pirq state, how they work togther indeed, it's confused if they share the same state, since pirq still in acive&pending when we inject the virq, while the virq in the LRs start from pending and waiting guest to ack it and finally deactive by the guest.

vtimer for example, for pirq, 

pending -> actv & pending -> priority drop to it and inject to the lr -> state changes by the guest handle ...

virq state start in lr from pending if i am not missing something

pending -> actv & pending -> clean the timer maybe and turn to actv state  -> deactive the irq, and it deative the pirq state too.

But I never find there is a way turn a actv & pending irq direct to inactive in the state machine for the irq.

Regards, George.