From patchwork Tue Jan 23 20:16:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 125570 Delivered-To: patch@linaro.org Received: by 10.46.66.141 with SMTP id h13csp1981244ljf; Tue, 23 Jan 2018 12:17:15 -0800 (PST) X-Google-Smtp-Source: AH8x224Xgi9d19pFXQnnXP79q1bznNWN2bz+aHJuWZlFbRc/hKJU9w/dVu6Rqu+9O3LEx+amNFc5 X-Received: by 10.80.189.139 with SMTP id y11mr9595180edh.122.1516738635602; Tue, 23 Jan 2018 12:17:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516738635; cv=none; d=google.com; s=arc-20160816; b=jGui0+chUNXlNV59g61u7LS+tj9DG99aBRWZLlERWK3H0wO21T+flJipgEjT+MhdWm c++m61+ofSatC/JJHy53Ze2r2t3qJ/HU4BFNApnnQVjIt7VLONoZv3CipqKrCJJVDSzd yksz237EfSJH4+N81pyo8MPWxlK1oiNnzcTkU3Cozgdocd4O76quLlGsZDhJY2RIo48h zVNnugTtEtZMO1UhtdEfaJQeNnWpRThgk1v2r/KBo5AGQXRILhALENZ/5bLVoSZkycng r6o6fApbZj7ow4/Q0X/+jvzgGGfMyr8a/XgGzPiwKwgYgIb4IuUA9m4eDautUUkgfL89 3yTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:cc:message-id:date:to:from :arc-authentication-results; bh=a1g7g/61C6IFSa4BjLQ8YkFzM4R2PBBPlZMfDFiThgI=; b=uTEeFhIWitgbPxokxnG7sNOS0XaA7iuAhCiU859EfKLXcnQX9e0QvzAXLHR2aoIt/e wLeKEfXTbjjMIN/QXLvtUJt2vh+PFN8ETfp3qve4EaM7tI0LWgbzkjkotnuxm1bO566/ GejTPY2IceVZJ6z3pvl7N2w7/5u7LyeT+0934GkHh7qJCJMfzyt0whBqxvLgWZjrNr4l vj7mUU3OKRepSX3j3K4uk3paeDPI1J56pRAPxOEJuasI6KRYTl3jxah5IutNEV7TVWHd mJSKcSyqvBom11ijb5HzjcCxubd3lbTL47tgp8P5spJYbQUNz/XqZ8JI9RAftuz3x/LY v/7A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de Return-Path: Received: from lists.denx.de (dione.denx.de. [81.169.180.215]) by mx.google.com with ESMTP id u34si15612945edc.179.2018.01.23.12.17.15; Tue, 23 Jan 2018 12:17:15 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) client-ip=81.169.180.215; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by lists.denx.de (Postfix, from userid 105) id ED6F7C21E85; Tue, 23 Jan 2018 20:17:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 3BBE8C21DB5; Tue, 23 Jan 2018 20:17:09 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id EB4C8C21C51; Tue, 23 Jan 2018 20:17:07 +0000 (UTC) Received: from mail.free-electrons.com (mail.free-electrons.com [62.4.15.54]) by lists.denx.de (Postfix) with ESMTP id 8C98FC21C3F for ; Tue, 23 Jan 2018 20:17:07 +0000 (UTC) Received: by mail.free-electrons.com (Postfix, from userid 110) id 51D5720919; Tue, 23 Jan 2018 21:17:07 +0100 (CET) Received: from localhost (LFbn-1-2035-97.w90-76.abo.wanadoo.fr [90.76.104.97]) by mail.free-electrons.com (Postfix) with ESMTPSA id 1F479207A8; Tue, 23 Jan 2018 21:17:07 +0100 (CET) From: Maxime Ripard To: Tom Rini Date: Tue, 23 Jan 2018 21:16:49 +0100 Message-Id: X-Mailer: git-send-email 2.14.3 Cc: Andre Przywara , agraf@suse.de, u-boot@lists.denx.de, Maxime Ripard , Jagan Teki Subject: [U-Boot] [PATCH v3 00/15] env: Multiple env support and env transition for sunxi X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Hi, Here is a second attempt at transitioning away from the MMC raw environment to a FAT-based one for Allwinner SoCs. Since the RFC was quite well received, I actually tested it and fixed a few rough edges. You'll find the first RFC here for reference: https://lists.denx.de/pipermail/u-boot/2017-October/310111.html And the second that originated in this series: https://lists.denx.de/pipermail/u-boot/2017-November/311608.html I gave it a travis run, and it passes all tests: https://travis-ci.org/mripard/u-boot Thanks! Maxime Original description of the patches: The fundamental issue I'm trying to adress is that we've had for a very long time the assumption that the main U-Boot binary wouldn't exceed around 500 bytes. However, we're starting to get real close to that limit, and are running out of silver bullets to deal with the consequences of having a bigger U-Boot binary, the main consequence being that we would have some overlap between the environment and U-Boot. One way to address this that has been suggested by Tom is to move away from the raw MMC environment to a FAT-based one. This would allow us to slowly migrate away, and eventually remove the MMC-raw option entirely to reclaim that space for the binary. That cannot be done in a single release however, since we might have environments in the wild already that people rely on. And since we always encouraged people to use the raw MMC environment, noone would expect that. This is even worse since some platforms are using the U-Boot environment to deal with implement their upgrade mechanism, such as mender.io, and force moving the environment would break any further upgrade. The suggested implementation is to allow U-Boot to compile multiple environments backend at once, based on the work done by Simon. The default behaviour shouldn't change obviously. We can then piggy-back on this to tweak on a per-board basis the environment lookup algorithm to always favour the FAT-based environment and then fallback to the MMC. It will allow us to migrate a raw-MMC user to a FAT based solution as soon as they update their environment (assuming that there is a bootable FAT partition in the system). This has just been compile tested on sunxi so far, and I'd like general comments on the approach taken. Obviously, this will need to work properly before being merged. Changes from v2: - Fix a bug showing up on travis that resulted in the vexpress_ca_15 DHCP unit test failing. This was due to an improper return of ENVL_UNKNOWN. - Added Simon reviewed-by tag Changes from v1: - Collect tags - Rebased on v2018.01 - Fixed build failures on a couple of boards - Added back the message and the error code when an environment is failing - Added some comments about the printf in environments - Added a build time check about the number of our locations array to see if we're overflowing the location variable - Fixed the drv->init return code being ignored - Added helpers to manage the init status - Changed the ENVO prefix for the operations to ENVOP - Added some comments and documentation Changes from the RFC: - Added more useful messages to see where we're loading / saving - Init all the environments no matter what, and the deal with whatever env we want to pick at load time - Added the various tags collected Maxime Ripard (15): cmd: nvedit: Get rid of the env lookup env: Rename env_driver_lookup_default and env_get_default_location env: Pass additional parameters to the env lookup function env: Make the env save message a bit more explicit env: Make it explicit where we're loading our environment from env: fat: Make the debug messages play a little nicer env: mmc: Make the debug messages play a little nicer env: common: Make the debug messages play a little nicer env: Support multiple environments env: Initialise all the environments env: mmc: depends on the MMC framework env: Allow to build multiple environments in Kconfig env: Mark env_get_location as weak sunxi: Transition from the MMC to a FAT-based environment env: sunxi: Enable FAT-based environment support by default board/sunxi/board.c | 16 ++- cmd/nvedit.c | 4 +- configs/MPC8313ERDB_NAND_33_defconfig | 1 +- configs/MPC8313ERDB_NAND_66_defconfig | 1 +- configs/cl-som-imx7_defconfig | 1 +- configs/microblaze-generic_defconfig | 1 +- env/Kconfig | 70 ++++---- env/common.c | 2 +- env/env.c | 251 +++++++++++++++++++-------- env/fat.c | 25 ++- env/mmc.c | 1 +- include/asm-generic/global_data.h | 1 +- include/environment.h | 15 +- 13 files changed, 266 insertions(+), 123 deletions(-) base-commit: f3dd87e0b98999a78e500e8c6d2b063ebadf535a