Virtual IRQ and IRQ handling

hi,

I am new to arm virtualization and little confused by below diagram


Till now what i have understood is that with hypervisor running in EL2 we can route physical interrupt to el2 by configuring certain register, then el2 can generate the virtual IRQ and send to
guest OS running in el1.

As seen in above diagram vIRQ  is a physical line from gic to CPU ,but both IRQ and vIRQ have same vector table entry.

If we go by little analogy FIQ and IRQ are also h/w signal from GIC to CPU and they have separate vector table entry

similarly i thought as VIRQ and VFIQ are also h/w signal from GIC to CPU so they should also have a separate entry in Vector table entry . But that is not the case i was checking my guest-os code it had only standard ARM Vector table and that seem logically .

So is it like my understanding of above diagram is not correct, meaning VIRQ and VFIQ are not Physical lines from GIC to CPU.

or


They are HW signal but there is some more HW logic ,which checks which HW line generate interrupt IRQ or VIRQ : 


If VIRQ signal is generated ,switch CPU to EL1 and then route VIRQ to CPU IRQ

If IRQ signal is generated ,switch CPU to EL2 and then route IRQ to CPU IRQ

Can you please through some light on this ,as to how we don't need separate vector table entry for vIRQ or vFIQ.

Regards
SN

Parents
  • Thanks Michael for your reply, It cleared my doubt. 
     Some more follow up question :
    1) Within Vector table  offset  of IRQ/vIRQ  is same ? ( thats what i infer after seeing vector table of my guest os running on my hypervisor ).
         Guest os is Free-rtos and hypervisor is Bao.

    2)  If assumption in query 1 is correct ,then it means that with hypervisor enabled we can't have  scenario where both IRQ & vIRQ are handled/routed  to same           
         EL(EL1/EL2).
        All IRQ in system will be routed/handled in  EL2  and all vIRQ will be routed/handled in  EL1  


Reply
  • Thanks Michael for your reply, It cleared my doubt. 
     Some more follow up question :
    1) Within Vector table  offset  of IRQ/vIRQ  is same ? ( thats what i infer after seeing vector table of my guest os running on my hypervisor ).
         Guest os is Free-rtos and hypervisor is Bao.

    2)  If assumption in query 1 is correct ,then it means that with hypervisor enabled we can't have  scenario where both IRQ & vIRQ are handled/routed  to same           
         EL(EL1/EL2).
        All IRQ in system will be routed/handled in  EL2  and all vIRQ will be routed/handled in  EL1  


Children