On Wed, 3 Nov 2021 at 13:27, Jean-Christophe DUBOIS <j...@tribudubois.net> wrote: > 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. > > Is there something that changed in Qemu (since Qemu 6.0.0) when it comes to > the "secure" world/state? > Is there some additional command line parameters to use (I search in the > documentation but without luck) to get secure world behavior ? > Is it necessary to "adapt" the emulated platform (i.MX6UL/mcimx6ul-evk) in > some way (it looks like the "virt" machine with "secure=on" does work for arm > platform)?
Could you try doing a bisect to find the QEMU commit that caused your guest to stop working ? thanks -- PMM