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

    Why is it inflexible? It's entirely configured by software.

    If you want it to behave like any other interrupt handler (i.e. allow nesting of secure and non-secure interrupts in either direction) just allow the normal world to mask FIQ in the NSACR in CP15. The only overhead over "single world model" is the latency of the monitor transitions, but other than that it should behave like any OS behaves with interrupts masked (or not).

    The behaviour is entirely down to how your security use cases need to function, and what attacks you want to prevent. TrustZone provides a bag of tools, and is very flexible - restrictions need only be applied if your use case needs them ...
Reply
  • Note: This was originally posted on 12th October 2012 at http://forums.arm.com

    Why is it inflexible? It's entirely configured by software.

    If you want it to behave like any other interrupt handler (i.e. allow nesting of secure and non-secure interrupts in either direction) just allow the normal world to mask FIQ in the NSACR in CP15. The only overhead over "single world model" is the latency of the monitor transitions, but other than that it should behave like any OS behaves with interrupts masked (or not).

    The behaviour is entirely down to how your security use cases need to function, and what attacks you want to prevent. TrustZone provides a bag of tools, and is very flexible - restrictions need only be applied if your use case needs them ...
Children
No data