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

Issue with exception handler

Hi,

I am facing an issue where I am setting timer at Guest EL1 (NS) mode and trying to route this interrupt to EL2.

I do see that when timer expires the interrupt is pending (using generic timer PPI 30) in GICD_ISPENDR (bit 30 set) but control reaches to first entry in EL2 exception vector rather then IRQ handler vector ?

I do set the HCR_EL2 (IMO) bit to 1 in order to route all IRQs. I am confused as how the control can reach to first entry in exception vector (EL2t Synch handler) ?

I am not sure for v8 if is there any extra configuration step ?

Thanks,

Parents
  • Hello,

    Are you sure that you aren't actually entering the vector table at the IRQ entry for a lower EL, but then somewhere in your handler you're taking a synchronous exception and this is taking you to that entry? The simplest way to test this would be to put a branch-to-self at the start of each of your vector table entries, then test the code again, then use a debugger to interrupt the core after the timer expires, and then see where the core is.

    Please can you try this, and then provide the values of the following registers:

    • PC
    • VBAR_EL2
    • ESR_EL2

    This will help to narrow down the issue.

    Ash.

Reply
  • Hello,

    Are you sure that you aren't actually entering the vector table at the IRQ entry for a lower EL, but then somewhere in your handler you're taking a synchronous exception and this is taking you to that entry? The simplest way to test this would be to put a branch-to-self at the start of each of your vector table entries, then test the code again, then use a debugger to interrupt the core after the timer expires, and then see where the core is.

    Please can you try this, and then provide the values of the following registers:

    • PC
    • VBAR_EL2
    • ESR_EL2

    This will help to narrow down the issue.

    Ash.

Children