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

[Trustzone] interrupt level fast world switch(NWD->SWD) solution?

Note: This was originally posted on 11th October 2012 at http://forums.arm.com

Dear ARM Engineer,

I have a question about interrupt level fast word switch for trustzone enabled ecosystem.
For scenario - 1 core is running in one World, interrupt of the other World happen. How to switch the core to the other world quickly.

Solution-1
In the whitepaper prd29-genc-009492c_trustzone_security_whitepaper.pdf
one solution is already mentioned. - monitor route slolution.
but this solution need carefully deal with monitor, NWD OS, SWD OS interrupt related code.

Solution-2
I was checking another solution which one World OS actively do swtich directly while the other world interrupt happen.
From ARM GIC Spec, spurious interrupt ID 1022 & 1023 seems to be possible as the flag.
(Suppose NWD only use IRQ, SWD only use FIQ)
After test,
1022 can help SWD->NWD  for case cpu core in SWD and IRQ happened.
1023 can not help NWD->SWD for case cpu core in NWD and FIQ happened. (As 1023 will also happen in other case)

So is there any extra flag/way can help Solution-2 do NWD->SWD.
Or say Besides Monitro solution, is there any other way can help interrupt level fast word switch NWD->SWD while  FIQ happen.

Thanks!
Parents
  • Note: This was originally posted on 12th October 2012 at http://forums.arm.com

    Thanks for reply, guys

    We all agree monitor solution is better(best) solution to this case.
    monitor solution has better performance but inflexible.

    I mean, for one world OS, giveup CPU stradegy can be changeable while the other world interrupt* happen.
    e.g.
    1.every interrupt* happen do world switch
    2.every N(2,3) interrupt* happen do world switch
    3.only NOT in critical area code(hope to be finished before switch), interrupt* happen do world switch

Reply
  • Note: This was originally posted on 12th October 2012 at http://forums.arm.com

    Thanks for reply, guys

    We all agree monitor solution is better(best) solution to this case.
    monitor solution has better performance but inflexible.

    I mean, for one world OS, giveup CPU stradegy can be changeable while the other world interrupt* happen.
    e.g.
    1.every interrupt* happen do world switch
    2.every N(2,3) interrupt* happen do world switch
    3.only NOT in critical area code(hope to be finished before switch), interrupt* happen do world switch

Children
No data