[U-Boot] ARMv8 switching CPUs into EL1

Mark Kettenis mark.kettenis at xs4all.nl
Tue Jun 11 12:39:50 UTC 2019

> From: Michal Simek <monstr at monstr.eu>
> Date: Tue, 11 Jun 2019 14:09:29 +0200
> Hi,
> On 06. 06. 19 15:15, Mels van Broekhoven wrote:
> > L.S.!
> > 
> > On a Xilinx ZynqMP-based platform with u-boot running in Aarch64 mode in
> > EL2, after booting a Linux kernel  in EL1 using CONFIG_ARMV8_SWITCH_TO_EL1,
> > Linux throws a warning that the CPUs have started in inconsistent modes
> > ("CPU: CPUs started in inconsistent modes").
> > Indeed, only the first core on which U-boot was running is switched to EL1
> > at this point.
> > 
> > Is this a bug or a not completely supported feature in U-boot or can this
> > warning actually be safely ignored under certain circumstances?
> I have take a look at the path and what it is happening is that ATF
> records that cpu0 started in EL2. Then u-boot starts Linux in EL1
> because of macro above. And then Linux is asking from EL1 ATF to turn on
> CPU but ATF has a record that CPU0 started in EL2 that's why it starts
> others cpus in EL2. And then Kernel reports back that it is not consistent.

I'd say the answer in this situation is that you really shouldn't use
the CONFIG_ARMV8_SWITCH_TO_EL1 in your configuration if you're using
ATF.  Or you should configure ATF such that it spins up the secondary
CPUs into EL1.  Not sure if there is an easy way to do that though.

More information about the U-Boot mailing list