I want to be sure if I understand the process describe non-secure high level os sending smc command. According to Arm user manual and many blogs and articles, I think this is the following scenario:
- EL0(non-secure) to EL1(non-secure) - svc
- EL1(non-secure) to EL2(hypervisovr - non-secure) - smc/hvc
- EL2(hypervisovr - non-secure) to EL3(monitor - non-secure) - smc note: here EL3(non-secure) change to EL3(secure)
- EL3(monitor - secure) to EL1(secure) - ???
- EL1(secure) to EL3(monitor - secure) - smc note: here EL3(secure) change to EL3(monitor - non-secure)
- EL3(monitor - non-secure) to EL2(hypervisovr - non-secure) - eret
- EL2(hypervisovr - non-secure) to EL1(non-secure) - eret
- EL1(non-secure) to EL0(non-secure) - ret Can anyone fill in the blanks and correct me ? Thank,