From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Graf Date: Thu, 7 Jul 2016 14:58:32 +0200 Subject: [U-Boot] [PATCH v5 1/2] armv8: Support loading 32-bit OS in AArch32 execution state In-Reply-To: References: <1467873048-46777-1-git-send-email-b18965@freescale.com> <1467873048-46777-2-git-send-email-b18965@freescale.com> <577E4B6C.8020205@suse.de> <577E4E0E.7000909@suse.de> Message-ID: <577E51F8.8020702@suse.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 07/07/2016 02:46 PM, Ryan Harkin wrote: > On 7 July 2016 at 13:41, Alexander Graf wrote: >> On 07/07/2016 02:35 PM, Ryan Harkin wrote: >>> On 7 July 2016 at 13:30, Alexander Graf wrote: >>>> On 07/07/2016 02:16 PM, Ryan Harkin wrote: >>>>> On 7 July 2016 at 07:30, Alison Wang wrote: >>>>>> To support loading a 32-bit OS, the execution state will change from >>>>>> AArch64 to AArch32 when jumping to kernel. >>>>>> >>>>>> The architecture information will be got through checking FIT image, >>>>>> then U-Boot will load 32-bit OS or 64-bit OS automatically. >>>>>> >>>>>> Signed-off-by: Ebony Zhu >>>>>> Signed-off-by: Alison Wang >>>>>> Signed-off-by: Chenhui Zhao >>>>> Unfortunately, this patch fails to boot for me. >>>>> >>>>> On FVP Foundation models, I see this error before the model hangs: >>>>> >>>>> [snip] >>>>> Starting kernel ... >>>>> >>>>> resetting ... >>>>> [snip] >>>>> >>>>> And I see the same output on AEMv8 Base models and Juno boards, only >>>>> they reset continuously rather than hang. >>>>> >>>>> I think the problem is that I see this from ARM Trusted Firmware on >>>>> boot: >>>>> >>>>> INFO: BL31: Preparing for EL3 exit to normal world >>>>> >>>>> Looking at the patch, it appears to be changing everything to boot in >>>>> EL2. >>>> >>>> That was the case before the patch (with the removal of the EL1 boot >>>> thing) >>>> already. Linux can't run in EL3, that's why it has to boot in EL2 (or >>>> EL1, >>>> but that really should be limited to VMs). >>>> >>> Pah! I misread the patch, specifically this hunk (and the one before >>> it, I suppose): >>> >>> diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c >>> index e3c9832..59adab8 100644 >>> --- a/arch/arm/lib/bootm.c >>> +++ b/arch/arm/lib/bootm.c >>> @@ -193,7 +193,6 @@ static void do_nonsec_virt_switch(void) >>> { >>> smp_kick_all_cpus(); >>> dcache_disable(); /* flush cache before swtiching to EL2 */ >>> - armv8_switch_to_el2(); >>> } >>> #endif >>> >>> That's a "-", not a "+" on the call to armv8_switch_to_el2(). >>> >>> Either way, all my platforms are dead with this patch. >> >> Since you're running in software models, can you try to figure out where >> exactly it breaks? > You assume that because I have a model that I have the ability to debug it ;-) > > ARM's FVP Foundation model is publicly available and free to use. So > if you want to give it a spin, it's there for the taking. I thought the Foundation model doesn't support external debugging? I'd basically want to put a breakpoint at the point where the kernel exit print goes and then trace it from there :). But since Alison wrote the patches, I'm sure he can do that too :). Alex