From patchwork Mon Oct 22 04:40:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AKASHI Takahiro X-Patchwork-Id: 149365 Delivered-To: patch@linaro.org Received: by 2002:a2e:8595:0:0:0:0:0 with SMTP id b21-v6csp2187503lji; Sun, 21 Oct 2018 21:38:50 -0700 (PDT) X-Google-Smtp-Source: ACcGV62YEXf6z4Vg8ohh3FWl9nkasJZIzPHj9KcwLPwe8zxXFD0MkVD7kHzPA/uw6V02JPTQS2At X-Received: by 2002:a50:9747:: with SMTP id d7-v6mr11803463edb.244.1540183129963; Sun, 21 Oct 2018 21:38:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540183129; cv=none; d=google.com; s=arc-20160816; b=bnyxrA1CJHBQUaahXkKe7xFQ/rJjilRvxV+5Fi8W7Er/Ocbd2sPQPEk0szEkjzeHs7 ZnDu0kjQJpYtg+gXR/E1EWtWYSUGxLJT3OKQF4VffWPeIpfhM/fK/QVnKC6d1VAZjzOc VSOx9Nlp0dDmxowBE6QxR09JqikmBxHpnk1Fl/AnQ4XMEVxdouOeWCkN3xtWyxUzn4qi xqVpyQqh7MwfBjOhnJ1wnJTNoMhA6lsDmmhWvaSAD4lf4jWUeb9pBAdU+fxfpPX2/5qi vptn3CX8klGoIaVrqtfdt8IGKtkzXn+fk8+CF7PSFp7hIPJHJJCg0gZL7sDkaKIrphwk RINg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence:subject :cc:mime-version:references:in-reply-to:message-id:date:to:from :dkim-signature; bh=bsN44CaXnUH0CDNcfWtgm5SBCohrIsQybxzzV+i8DJ0=; b=yPuk9GPps6vIzlL3/Blnm6opRDuVRnsWIluThan6RfmuEwt4RM17j5D/pyFbZDvbYh 7y06R+CODmUxU3VH+i8PaNaBQaWJ6hqUY2aQTJv0PfiJAS9sFARgjLRjOE7jMOFbEswK 7KyegRf/SSRGKVMLsk5OktM4Ev6l8tF8F4k7NJbjBYiizMDfED73kr4pvXq5A6wkYvdQ 9xeU3oCDnjCnhT6Dx0EoaZgzLaWyCAGKtAHAmbChmFN0XTiJRjLt/azIAuqPGtYqpaT+ QS6ZEMkdMC01Glc53aVCL1EeaOpRsA6jIPn8aU1NjXb7XBJhLSFmnyHXBaBQuqREgkV3 rpYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=k0NpoTc4; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.denx.de (dione.denx.de. [81.169.180.215]) by mx.google.com with ESMTP id b23-v6si12129332ejp.122.2018.10.21.21.38.49; Sun, 21 Oct 2018 21:38:49 -0700 (PDT) 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; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=k0NpoTc4; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: by lists.denx.de (Postfix, from userid 105) id 8F363C21C6A; Mon, 22 Oct 2018 04:38:35 +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=RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID 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 CD180C21E02; Mon, 22 Oct 2018 04:38:33 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 7112EC21DF8; Mon, 22 Oct 2018 04:38:21 +0000 (UTC) Received: from mail-yw1-f68.google.com (mail-yw1-f68.google.com [209.85.161.68]) by lists.denx.de (Postfix) with ESMTPS id 791B7C21D8A for ; Mon, 22 Oct 2018 04:38:17 +0000 (UTC) Received: by mail-yw1-f68.google.com with SMTP id j202-v6so15475438ywa.13 for ; Sun, 21 Oct 2018 21:38:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WMZO7zyoABYSqJmj9yF8s2sEKgPBeORMLLFmZUZbrIo=; b=k0NpoTc4WCPu5g/2ktFO1TO4NhYIQKw/P/kqYTrVj3pmfK8Jhx3ZdtsLxsOyv1CBLe OQ+DzqcXd9rRaGgWs9clVYYvHD/hLSvi75UyuFrU1StUOY6YpZOaHuM6sFKcTP52jA4c 1s1Otgh+K66JGryozGNuZE53DCy8HT+ZD1ko0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WMZO7zyoABYSqJmj9yF8s2sEKgPBeORMLLFmZUZbrIo=; b=oYphkJUWsBKWZXCFqlu4fw40xMCck7LsEObmiz0jTIGvcg/hjwiJiwztXaoymIWZW7 J+KzJf8XjHm6FqZXTUEhvxFDDAoSq3+zWk7PnXR3PdXh1af4l+gb8cFhjBaV3HBdNdS7 SgUBWE/0fxrRKxjcnL9VcR4hdy9ua6gHNhowNDMEZ2/y9Lpt1oBzzbX+O85PXHKRBwJ3 Bb2h71EVQcqwaHegovMRgJ5squ7W+0AT4Oqy9M5YFX4ziN7uUQGNjjfWCXxzp1c5QYKw w6VBarrvcPSxY/kWhWHVkleJATEvOTCgiAwxIuPlC5ZW4wJ3fgyCpJNCN3g4aig2btRe fttw== X-Gm-Message-State: ABuFfojJp7cqLQ2s3rQHzTiOBg8+4r0uPI9N9fmfXUnTryAwQJ0G2hsu aeODgV0iYnDJvBBqmVy1EDSypw== X-Received: by 2002:a0d:d382:: with SMTP id v124-v6mr30816450ywd.406.1540183096354; Sun, 21 Oct 2018 21:38:16 -0700 (PDT) Received: from linaro.org ([121.95.100.191]) by smtp.googlemail.com with ESMTPSA id i63-v6sm8545530ywa.74.2018.10.21.21.38.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 21 Oct 2018 21:38:16 -0700 (PDT) From: AKASHI Takahiro To: trini@konsulko.com, agraf@suse.de, tuomas.tynkkynen@iki.fi Date: Mon, 22 Oct 2018 13:40:05 +0900 Message-Id: <20181022044007.11796-2-takahiro.akashi@linaro.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181022044007.11796-1-takahiro.akashi@linaro.org> References: <20181022044007.11796-1-takahiro.akashi@linaro.org> MIME-Version: 1.0 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH v2 1/3] efi_loader: rework fdt handling in distro boot script 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: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" The current scenario for default UEFI booting, scan_dev_for_efi, has several issues: * load dtb dynamically even if its loacation (device) is not the same as BOOTEFI_NAME binary's, (reported by Alex) * invoke 'bootmgr' only if BOOTEFI_NAME binary does exit even though 'bootmgr' can and should work independently whether or not the binary exist, * in addition, invoke 'bootmgr' with dynamically-loaded dtb. This behavior is not expected. (reported by Alex) * always assume that a 'fdtfile' variable is defined, ("test -e ${devtype} ${devnum}:${distro_bootpart} "${prefix}${efi_fdtfile}" always returns true even if fdtfile is NULL with prefix=="/".) * redundantly check for 'fdt_addr_r' in boot_efi_binary In this patch, all the issues above are sorted out. Please note that the default behavior can be customized with: fdtfile: a dtb file name efi_dtb_prefixes: a list of paths for searching for a dtb file (this feature does work even without this patch.) Signed-off-by: AKASHI Takahiro --- include/config_distro_bootcmd.h | 38 +++++++++++++++++---------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h index 373fee78a999..256698309eb9 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -115,7 +115,7 @@ */ #define BOOTENV_EFI_SET_FDTFILE_FALLBACK \ "if test -z \"${fdtfile}\" -a -n \"${soc}\"; then " \ - "setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; " \ + "efi_fdtfile=${soc}-${board}${boardver}.dtb; " \ "fi; " #else #define BOOTENV_EFI_SET_FDTFILE_FALLBACK @@ -124,26 +124,20 @@ #define BOOTENV_SHARED_EFI \ "boot_efi_binary=" \ - "if fdt addr ${fdt_addr_r}; then " \ - "bootefi bootmgr ${fdt_addr_r};" \ - "else " \ - "bootefi bootmgr ${fdtcontroladdr};" \ - "fi;" \ "load ${devtype} ${devnum}:${distro_bootpart} " \ "${kernel_addr_r} efi/boot/"BOOTEFI_NAME"; " \ - "if fdt addr ${fdt_addr_r}; then " \ - "bootefi ${kernel_addr_r} ${fdt_addr_r};" \ - "else " \ - "bootefi ${kernel_addr_r} ${fdtcontroladdr};" \ - "fi\0" \ + "bootefi ${kernel_addr_r} ${efi_fdt_addr};\0" \ \ "load_efi_dtb=" \ - "load ${devtype} ${devnum}:${distro_bootpart} " \ - "${fdt_addr_r} ${prefix}${efi_fdtfile}\0" \ + "load ${devtype} ${devnum}:${distro_bootpart} " \ + "${fdt_addr_r} ${prefix}${efi_fdtfile}; " \ + "if fdt addr ${fdt_addr_r}; then " \ + "efi_fdt_addr=${fdt_addr_r}; " \ + "fi;\0" \ \ "efi_dtb_prefixes=/ /dtb/ /dtb/current/\0" \ - "scan_dev_for_efi=" \ - "setenv efi_fdtfile ${fdtfile}; " \ + "set_efi_fdt_addr=" \ + "efi_fdtfile=${fdtfile}; " \ BOOTENV_EFI_SET_FDTFILE_FALLBACK \ "for prefix in ${efi_dtb_prefixes}; do " \ "if test -e ${devtype} " \ @@ -151,19 +145,26 @@ "${prefix}${efi_fdtfile}; then " \ "run load_efi_dtb; " \ "fi;" \ - "done;" \ + "done;\0" \ + \ + "scan_dev_for_efi=" \ "if test -e ${devtype} ${devnum}:${distro_bootpart} " \ "efi/boot/"BOOTEFI_NAME"; then " \ "echo Found EFI removable media binary " \ "efi/boot/"BOOTEFI_NAME"; " \ + "efi_fdt_addr=${fdtcontroladdr}; " \ + "if test -n \"${fdtfile}\"; then " \ + "run set_efi_fdt_addr; " \ + "fi; " \ "run boot_efi_binary; " \ "echo EFI LOAD FAILED: continuing...; " \ - "fi; " \ - "setenv efi_fdtfile\0" + "fi;\0" #define SCAN_DEV_FOR_EFI "run scan_dev_for_efi;" +#define BOOT_EFI_BOOT_MANAGER "bootefi bootmgr;" #else #define BOOTENV_SHARED_EFI #define SCAN_DEV_FOR_EFI +#define BOOT_EFI_BOOT_MANAGER #endif #ifdef CONFIG_SATA @@ -409,6 +410,7 @@ BOOT_TARGET_DEVICES(BOOTENV_DEV) \ \ "distro_bootcmd=" BOOTENV_SET_SCSI_NEED_INIT \ + BOOT_EFI_BOOT_MANAGER \ "for target in ${boot_targets}; do " \ "run bootcmd_${target}; " \ "done\0"