All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom Rini <trini@konsulko.com>
To: Stephan Gerhold <stephan@gerhold.net>
Cc: u-boot@lists.denx.de, Ramon Fried <rfried.dev@gmail.com>,
	Jorge Ramirez-Ortiz <jorge.ramirez.ortiz@gmail.com>,
	Nicolas Dechesne <nicolas.dechesne@linaro.org>
Subject: Re: [PATCH] board: dragonboard410c: Load U-Boot directly without LK
Date: Sat, 24 Jul 2021 16:39:59 -0400	[thread overview]
Message-ID: <20210724203959.GN9379@bill-the-cat> (raw)
In-Reply-To: <20210707090602.32515-1-stephan@gerhold.net>

[-- Attachment #1: Type: text/plain, Size: 2930 bytes --]

On Wed, Jul 07, 2021 at 11:06:02AM +0200, Stephan Gerhold wrote:

> At the moment the U-Boot port for the DragonBoard 410c is designed
> to be loaded as an Android boot image after Qualcomm's Little Kernel (LK)
> bootloader. This is simple to set up but LK is redundant in this case,
> since everything done by LK can be also done directly by U-Boot.
> 
> Dropping LK entirely has at least the following advantages:
>   - Easier installation/board code (no need for Android boot images)
>   - (Slightly) faster boot
>   - Boot directly in 64-bit without a round trip to 32-bit for LK
> 
> So far this was not possible yet because of unsolved problems:
> 
>   1. Signing tool: The firmware expects a "signed" ELF image with extra
>      (Qualcomm-specific) ELF headers, usually used for secure boot.
>      The DragonBoard 410c does not have secure boot by default but the
>      extra ELF headers are still required.
> 
>   2. PSCI bug: There seems to be a bug in the PSCI implementation
>      (part of the TrustZone/tz firmware) that causes all other CPU cores
>      to be started in 32-bit mode if LK is missing in the boot chain.
>      This causes Linux to hang early during boot.
> 
> There is a solution for both problems now:
> 
>   1. qtestsign (https://github.com/msm8916-mainline/qtestsign)
>      can be used as a "signing" tool for U-Boot and other firmware.
> 
>   2. A workaround for the "PSCI bug" is to execute the TZ syscall when
>      entering U-Boot. That way PSCI is made aware of the 64-bit switch
>      and starts all other CPU cores in 64-bit mode as well.
> 
> Simplify the dragonboard410c board by removing all the extra code that
> is only used to build an Android boot image that can be loaded by LK.
> This allows dropping the custom linker script, special image magic,
> as well as most of the special build/installation instructions.
> 
> CONFIG_REMAKE_ELF is used to build a new ELF image that has both U-Boot
> and the appended DTB combined. The resulting u-boot.elf can then be
> passed to the "signing" tool (e.g. qtestsign).
> 
> The PSCI workaround is placed in the "boot0" hook that is enabled
> with CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK. The extra check for EL1 allows
> compatibility with custom firmware that enters U-Boot in EL2 or EL3,
> e.g. qhypstub (https://github.com/msm8916-mainline/qhypstub).
> 
> As a first step these changes apply only to DragonBoard410c.
> Similar changes could likely also work for the DragonBoard 820c.
> 
> Note that removing LK wouldn't be possible that easily without a lot of
> work already done three years ago by Ramon Fried. A lot of missing
> initialization, pinctrl etc was already added back then even though
> it was not strictly needed yet.
> 
> Cc: Ramon Fried <rfried.dev@gmail.com>
> Signed-off-by: Stephan Gerhold <stephan@gerhold.net>

Applied to u-boot/master, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

      parent reply	other threads:[~2021-07-24 20:40 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-07  9:06 [PATCH] board: dragonboard410c: Load U-Boot directly without LK Stephan Gerhold
2021-07-10 19:07 ` Ramon Fried
2021-07-10 19:27   ` Stephan Gerhold
2021-07-24 20:39 ` Tom Rini [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210724203959.GN9379@bill-the-cat \
    --to=trini@konsulko.com \
    --cc=jorge.ramirez.ortiz@gmail.com \
    --cc=nicolas.dechesne@linaro.org \
    --cc=rfried.dev@gmail.com \
    --cc=stephan@gerhold.net \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.