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_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 8F705C07E9B for ; Mon, 19 Jul 2021 12:21:18 +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 559FB61026 for ; Mon, 19 Jul 2021 12:21:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 559FB61026 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nic.cz 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 DC0DC82B36; Mon, 19 Jul 2021 14:21:14 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=nic.cz Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=nic.cz header.i=@nic.cz header.b="IQ7Tg2o7"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id C9DEB82A15; Mon, 19 Jul 2021 14:21:12 +0200 (CEST) Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id B6CA481EBD for ; Mon, 19 Jul 2021 14:21:08 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=nic.cz Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=marek.behun@nic.cz Received: from dellmb.labs.office.nic.cz (unknown [IPv6:2001:1488:fffe:6:8747:7254:5571:3010]) by mail.nic.cz (Postfix) with ESMTPSA id 47BFF140431; Mon, 19 Jul 2021 14:21:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nic.cz; s=default; t=1626697268; bh=fgOwaqm8KDB+fXsBrXlE38XO1pWTtsnl8QnAAgz05s0=; h=From:To:Date; b=IQ7Tg2o723WCIPkIhlJdflO2Fr4f5AfM+1x8kMrDTNO/pSzRX8/6TPLOugJvZIcIL WyEmWs80Y8s5k0ghO4mJ7U3BkJXWg6IZ3GpsXLItXAjdOMTu6Wl2zt2IFRfGrltYNg Lrp8aowujxSZZPfV2EP6O3dVQvQLURaRny9lKcl4= From: =?UTF-8?q?Marek=20Beh=C3=BAn?= To: u-boot@lists.denx.de, Chris Packham , Stefan Roese , Baruch Siach , Dirk Eibach , Chris Packham Cc: Dennis Gilmore , Mario Six , Jon Nettleton , =?UTF-8?q?Marek=20Beh=C3=BAn?= Subject: [PATCH u-boot-mvebu v2 00/41] kwboot / kwbimage improvements reducing image size Date: Mon, 19 Jul 2021 14:20:23 +0200 Message-Id: <20210719122104.29698-1-marek.behun@nic.cz> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Hi Stefan and others, this is v2 of the series of improvements to kwboot, kwbimage and mvebu, with main motivation the reduction of KWB image size. Changes since v1: - change of cover letter message + information about boot times added - some additional small fix patches are added - we do not remove the SPL code for loading U-Boot, but add the option to make BootROM do it. By default SPL code is used to load main U-Boot binary, since it seems to be faster than BootROM (at least on Turris Omnia). If users want to use BootROM for this, they need to disable the necessary media (SPI NOR / NAND / SATA) support in SPL This series makes correct usage of BootROM's code for loading U-Boot from NOR / NAND: currently, only SPL is read by BootROM and the main U-Boot is read by SPL. We can use BootROM to also load main U-Boot. This reduces the size of the u-boot-spl.bin by about ~7 KiB, since it does not need to contain code for reading NOR / NAND. This patch series makes it possible to use BootROM for this, but since SPL code may read the main U-Boot binary faster, we leave it to board maintainers to decide whether they want to use BootROM or SPL code to load the main U-Boot binary. (The rule of thumb, I guess, is to use SPL if you have enough space, and BootROM if you need the additional 7 KiB.) This patch series also reduces the size of the u-boot-spl.kwb binary by addutuibak ~29 KiB (depending on board, this is on Turris Omnia), by getting rid of the offseting of main U-Boot binary to a specific point on the boot device, and instead using information from the kwbimage header to find main U-Boot binary. On Turris Omnia, the size differences and boot time differences are: before after after with booting via BootROM u-boot-spl.kwb 901632 B 872960 B 864768 B u-boot-spl.bin 115526 B 115898 B 107994 B boot time 2426 ms 2411 ms 3283 ms As can be seen, after this patch series, when still loading main U-Boot binary via SPL code, the boot time is on Turris Omnia reduced from 2426 ms to 2411 ms. When booting via BootROM is preferred, the boot time increases to 3283 ms, but we save additional 7 KiB in the u-boot-spl.kwb binary. Before merging, this series should be tested on as many relevant boards as possible. The affected boards are: - clearfog - controlcenterdc - db-88f6720 - db-88f6820-amc - db-88f6820-gp - db-mv784mp-gp - ds414 - helios4 - theadorable_debug - turris_omnia - x530 Marek Behún (2): tools: kwbimage: Add constant for SDIO bootfrom tools: kwbimage: Cosmetic fix - remove redundant space character Pali Rohár (39): tools: kwbimage: Fix compilation without CONFIG_SYS_U_BOOT_OFFS tools: kwbimage: Simplify aligning and calculating checksum tools: kwbimage: Align SPI and NAND images to 256 bytes tools: kwbimage: Fix generation of SATA, SDIO and PCIe images tools: kwbimage: Don't crash when binary file name does not contain '/' tools: kwbimage: Fix check for v0 extended header checksum tools: kwbimage: Validate extended headers of v1 images tools: kwbimage: Validate data checksum of v1 images tools: kwbimage: Print size of binary header in kwbimage_print_header() tools: kwbimage: Use -a parameter (load address) for v1 images tools: kwbimage: Change maximum number of arguments in binary header to 256 tools: kwbimage: Fix calculating size of binary header tools: kwbimage: Add support for more BINARY headers tools: kwbimage: Don't parse PAYLOAD keyword tools: kwbimage: Add support for DATA command also for v1 images tools: kwbimage: Add support for a new DATA_DELAY command tools: kwbimage: Do not hide usage of secure header under CONFIG_ARMADA_38X tools: kwbimage: Mark all BootROM structures __packed tools: dumpimage: Fix crashing when trying to extract data from kwbimage tools: dumpimage: Show error message when trying to extract data from kwbimage tools: kwboot: Fix wrong parameter passed to read() tools: kwboot: Fix restoring terminal tools: kwboot: Print trailing newline after terminal is terminated tools: kwboot: Cosmetic fix - add missing curly brackets tools: kwboot: Check for v1 header size tools: kwboot: Fix checking image header version arm: mvebu: Fix return_to_bootrom() arm: mvebu: Mark return_to_bootrom() as a noreturn function arm: mvebu: Implement return_to_bootrom() via U-Boot's SPL framework arm: mvebu: Use U-Boot's SPL BootROM framework for booting from NAND/UART SPL: Add support for specifying offset between header and image SPL: Add support for parsing board / BootROM specific image types arm: mvebu: Load main U-Boot binary in SPL code based on kwbimage header arm: mvebu: Remove legacy U-Boot header from kwbimage v1 files tools: kwbimage: Remove v1 kwbimage SPL padding to CONFIG_SYS_U_BOOT_OFFS bytes arm: mvebu: Remove unused macro CONFIG_SYS_U_BOOT_OFFS arm: mvebu: gdsys: Remove custom spl_board_init() kwbimage: Add support for extracting images via dumpimage tool kwbimage: Update help message about how to extract from an existing image Makefile | 2 +- arch/arm/mach-mvebu/Kconfig | 26 +- arch/arm/mach-mvebu/include/mach/cpu.h | 2 +- arch/arm/mach-mvebu/lowlevel_spl.S | 3 +- arch/arm/mach-mvebu/spl.c | 248 ++++++++++++-- board/gdsys/a38x/Makefile | 2 +- board/gdsys/a38x/spl.c | 20 -- board/kobol/helios4/Kconfig | 5 - board/solidrun/clearfog/Kconfig | 5 - common/spl/Kconfig | 4 +- common/spl/spl.c | 9 + common/spl/spl_mmc.c | 16 +- common/spl/spl_sata.c | 12 +- common/spl/spl_spi.c | 2 +- configs/clearfog_defconfig | 1 - configs/controlcenterdc_defconfig | 1 - configs/db-88f6720_defconfig | 1 - configs/db-88f6820-amc_defconfig | 1 - configs/db-88f6820-gp_defconfig | 2 - configs/db-mv784mp-gp_defconfig | 1 - configs/ds414_defconfig | 1 - configs/helios4_defconfig | 1 - configs/maxbcm_defconfig | 1 - configs/theadorable_debug_defconfig | 1 - configs/turris_omnia_defconfig | 1 - configs/x530_defconfig | 1 - include/configs/clearfog.h | 7 +- include/configs/controlcenterdc.h | 9 - include/configs/db-88f6720.h | 3 - include/configs/db-88f6820-amc.h | 5 - include/configs/db-88f6820-gp.h | 7 - include/configs/db-mv784mp-gp.h | 3 - include/configs/ds414.h | 5 - include/configs/helios4.h | 7 +- include/configs/theadorable.h | 3 - include/configs/turris_omnia.h | 7 - include/configs/x530.h | 3 - include/spl.h | 1 + scripts/config_whitelist.txt | 1 - tools/Makefile | 8 - tools/kwbimage.c | 437 ++++++++++++++++++------- tools/kwbimage.h | 54 ++- tools/kwboot.c | 24 +- 43 files changed, 651 insertions(+), 302 deletions(-) delete mode 100644 board/gdsys/a38x/spl.c -- 2.31.1