|
From: | Jean-Christophe DUBOIS |
Subject: | Qemu and ARM secure state. |
Date: | Wed, 3 Nov 2021 14:27:17 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.2 |
Hi,
I have a little application that is designed to work on the i.MX6UL processor.
I developed it and tested it on the mcimx6ul-evk platform emulated by Qemu.
This application used to work "flawlessly" on Qemu 5.0.50 and is working on Qemu 6.0.0 (available as a pre-built package on the latest Ubuntu).
But when I try to run the exact same command line on a Qemu version I compile myself from main/latest of github (Qemu 6.1.50), my application fails to start.
So a little background:
My application expects to start in "secure" state and supervisor mode (which is the default state of i.MX6UL when booting barebone [without u-boot]).
From this state the application tries to get to "non secure" /
hypervisor mode which imply going to the "secure" / monitor state
before being able to drop to "non secure" / hypervisor. To do so
is runs a "smc 0" operand (from "secure" / supervisor).
This "smc" instruction is processed "as expected" by Qemu 5.0.50
and Qemu 6.0.0 (getting to "secure" / monitor mode) but on Qemu
6.1.50 (latest from github) it is as if the smc operand was a
no-op. It doesn't trigger any exception and the processor just get
to the next instruction after the "smc" instruction. So I am a bit
puzzled.
Thanks for your help.
JC
[Prev in Thread] | Current Thread | [Next in Thread] |