From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9BBC2C07E95 for ; Sat, 10 Jul 2021 19:27:30 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6026060FDA for ; Sat, 10 Jul 2021 19:27:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6026060FDA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=gerhold.net Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8AE2683187; Sat, 10 Jul 2021 21:27:27 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=gerhold.net Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gerhold.net header.i=@gerhold.net header.b="mbERWQjI"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CB5C3832C9; Sat, 10 Jul 2021 21:27:25 +0200 (CEST) Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de [85.215.255.25]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id BA6FC82B77 for ; Sat, 10 Jul 2021 21:27:22 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=gerhold.net Authentication-Results: phobos.denx.de; spf=none smtp.mailfrom=stephan@gerhold.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1625945242; s=strato-dkim-0002; d=gerhold.net; h=In-Reply-To:References:Message-ID:Subject:Cc:To:From:Date:Cc:Date: From:Subject:Sender; bh=DyavvXUoZiRCG5bBn3CFkHDUThEFrVinHXY6CfXVcl0=; b=mbERWQjIJsqNwXBUnuo4JTF/06TI2aMfs2zQKcRTDm60CPhq4iW8NnlJgq7yB4hfHN /0rJjA5UlWQKuLe7sbsIgL6gJSV96TewxTdwpBy6tj2B6GA9PYCLL2iAyMl7tr4zLjWD 6u3gvXCmTi3TrzJ75zGg5U/cGZ/zn/0G042CCIVeY83Qw6vtc3cagaRmaK/rxb1yB0z1 RDn++G7mJ22HyNjU4nkS64KZXP+DJcB67i6ZSPZyJikR0S7CLMXS4n6su8bm88D0z48i Y0xRv1hZBmT+BsessW5JbPS5bOspy1LKyFbwMJTKKFv5Hbk17i0rTgEAInmPeAX3K/Yx kanA== Authentication-Results: strato.com; dkim=none X-RZG-AUTH: ":P3gBZUipdd93FF5ZZvYFPugejmSTVR2nRPhVOQ/OcYgojyw4j34+u26zEodhPgRDZ8j4IcnNBg==" X-RZG-CLASS-ID: mo00 Received: from gerhold.net by smtp.strato.de (RZmta 47.28.1 DYNA|AUTH) with ESMTPSA id Y070ccx6AJRLzff (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 10 Jul 2021 21:27:21 +0200 (CEST) Date: Sat, 10 Jul 2021 21:27:11 +0200 From: Stephan Gerhold To: Ramon Fried Cc: U-Boot Mailing List , Jorge Ramirez-Ortiz , Nicolas Dechesne Subject: Re: [PATCH] board: dragonboard410c: Load U-Boot directly without LK Message-ID: References: <20210707090602.32515-1-stephan@gerhold.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean On Sat, Jul 10, 2021 at 10:07:28PM +0300, Ramon Fried wrote: > On Wed, Jul 7, 2021 at 12:06 PM 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 > > Signed-off-by: Stephan Gerhold > > --- > > > > Related RFC with even more detailed explanations: > > https://lore.kernel.org/u-boot/YN2F1c926HFF+JA2@gerhold.net/ > > > > In my tests both U-Boot and Linux are fully functional with this patch. > > However, I would appreciate further testing, since my testing does > > likely not represent a typical usage scenario for the DragonBoard 410c. > > > > When testing, please pick the following pending patch additionally: > > https://lore.kernel.org/u-boot/20210705121847.48432-1-stephan@gerhold.net/ > > on top of u-boot/master. > > > > --- > > [...] > > Thanks Stephan, it looks very good. > I started testing it, it builds correctly and I flashed and everything > seems to work. > I do have a problem with my TFTP setup, so I didn't boot Linux yet, > but I will get to it, if it will boot successfully we can merge this > one. > > U-boot doesn't know how to boot qcom android kernel partitions, I'm > not sure this is something I even want to start supporting in U-boot. It's probably not too hard to support this (I actually boot the same Android boot images on both LK and U-Boot via "fastboot boot", because this is the workflow I'm used to). But I agree that anything else (i.e. reading the images from partitions) is not worth the effort. > Nico, do you think you can change the format of the BOOT partition to > host a u-boot FIT image ? > Is a "boot" partition with a binary image even useful at all? I would expect that all typical Linux distributions except Android have a separate boot partition with a file system, so setting something up that works with the generic distro configuration (doc/README.distro) would be probably best. This would also avoid having to re-build the image just to change the cmdline for example. Stephan