[U-Boot] RFC: Alternative boot_jump_linux() function

Ramon Fried ramon.fried at gmail.com
Thu May 24 17:22:59 UTC 2018


Ping

On Thu, May 17, 2018 at 7:48 PM, Ramon Fried <ramon.fried at gmail.com> wrote:
> On Thu, May 17, 2018 at 5:22 PM, Tom Rini <trini at konsulko.com> wrote:
>> On Thu, May 17, 2018 at 02:01:55PM +0300, Ramon Fried wrote:
>>
>>> Hi.
>>> I'm currently working on snapdragon bootloader support and in the
>>> particular case where U-boot is running in Aarch32 and the kernel is
>>> Aarch64 the specific implementation is to jump to Linux through SCM
>>> call.
>>>
>>> I try to find the best possible way to provide an alternative boot function.
>>> Adding #ifdef ARCH_SNAPDRAGON will just be too specific in
>>> arm/lib/bootm.c in my opinion and I'm thinking of introducing kind of
>>> a callback function in gd. that if exists will jump there instead of
>>> executing boot_jump_linux().
>>>
>>> What do you think ?
>>
>> So, to be clear, we're on an aarch64 SoC, but U-Boot has been entered in
>> 32bit mode.  And we need to boot a 64bit Linux Kernel.  What else, if
>> anything, is also loaded/still in residence/etc?  Can you explain the
>> overall usecase a bit more and why we're in 32bit mode?  Thanks!
>>
> OK.
> Basically, Qualcomm has the following boot flow:
>
> PBL -> SBL -> LK -> Linux Kernel
>
> PBL - 32bit Primary boot loader(ROM) loads the SBL from eMMC.
>
> SBL - 32bit Secondary boot loader(eMMC/UFS), proprietary closed source,
> Initializes the DDR, starts the trustzone and can load either a 32bit
> or a 64bit (1)
> ELF bootloader, given that it's signed.
>
> LK - Little kernel, 32bit. Qualcomm maintains a downstream version, open source.
> Loads 64bit Android boot image from eMMC and jumps to it using SMC
> call made to Trustzone.
>
> This was used primarily for Android, but when Dragonboards boards came
> out, Qualcomm and Linaro started
> distributing 64bit Linux OE & Debian builds that were booted by LK.
> Because U-boot is much more useful than LK, the first U-boot
> contribution was made by Mateusz Kulikowski.
>
> Basically, Mateusz port is wrapping U-boot to appear as a kernel so LK
> boots it, then it boots Linux.
> So basically, LK did the 32 -> 64 transition.
>
> Now, here where I appear in the story... :)
>
> I'm trying to get rid of LK and use U-boot as the real bootloader for Linux.
> I succeeded in that, and I have all the patches ready for submission,
> I just need to add a dedicated boot function
> that does the SMC call, hence this discussion.
>
> (1) - It implies that we can in practice just use 64bit U-boot for Snapdragon.
> The only problem I have right now is that there's isn't any
> open-source tool to sign the Bootloader that supports ELF64
> executable.
>
> Thanks,
> Ramon.
>
>
>> Tom


More information about the U-Boot mailing list