From patchwork Wed Oct 4 20:16:34 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rob Clark X-Patchwork-Id: 821470 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="TebUs7Uj"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3y6nHZ4Db4z9t39 for ; Thu, 5 Oct 2017 07:16:57 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 07EB5C21EA7; Wed, 4 Oct 2017 20:16:52 +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=FREEMAIL_FROM, 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 538E6C21DA6; Wed, 4 Oct 2017 20:16:50 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 0362AC21DA0; Wed, 4 Oct 2017 20:16:48 +0000 (UTC) Received: from mail-qt0-f195.google.com (mail-qt0-f195.google.com [209.85.216.195]) by lists.denx.de (Postfix) with ESMTPS id 81CD1C21DAB for ; Wed, 4 Oct 2017 20:16:48 +0000 (UTC) Received: by mail-qt0-f195.google.com with SMTP id d13so20893464qta.5 for ; Wed, 04 Oct 2017 13:16:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=vz453QFl8Mxqr051GRp2i1gCIOgX85Pv3emT0y1dFzg=; b=TebUs7Uj4KHsgDB2uDqOpNfLmF8n8xkBhX4PEqFmsbMvYHcuhjMIPRGijcUgQi8yd6 6/Nux3fYmvSMAeaX4oHHuM8sILc5/UH6+LV/OuQH0K4gWvfMRmXBB5hDWmOE3pZIX/Ok bRGlqKrLFoigppMu2byIUTFzS6BjCDAzaUqfrqhJBfmnQ/EGE7Lf5zsZuJMWj/YBRMee Uw6SwYF8IitbNBu4lqN+/ZeFhbsm8Woz8eAossN6Ss61Dpl32aJj6r4hMOFOWA4RTwOp njiGGQIxm5ARynKKYKkIvIj/Sgv/DQe2heo/KM/1gccMijLb3mHpg5McJkqqA80ZLok0 WN6w== 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; bh=vz453QFl8Mxqr051GRp2i1gCIOgX85Pv3emT0y1dFzg=; b=um4hIWEEwv2J2SwL+iBlcBmPpEdS00I6UCYx5Znfvo05w6P3T7x8WHd9+K0e2lJuc0 QXGZCVxcPVEQB5iqdcT6CSXaU8mNG49IcmgdMNATafDTPmRVx9c8x71kTyA0SkSKPzZP 9LSUYuAk/FbNqFQ15Uf3QDCOPUD/VHFxkkq4W7WTZjz2v9g3+lOot4CWK8HgF612wNfK 2Vs/jWTV/TydzwWsi6PRl9+git+jsn8YzOKuTrs2xsQRDp1jf3BFUxc3E6lXREAh1AfJ 78MVz/NboIbfC+twtT/KaQzEgpfHoVvFngcohXQWH5RD6LDiYhIXvaSzaZPrJFJCXAwf Z0QA== X-Gm-Message-State: AMCzsaUDy9ZYJWV9zYqe0fax8BG+dlIAiPsNXuliMPESdK1IE0xNc5hb +4epww/cWZbi0xKpBOjgSDbZK4mIgmk= X-Google-Smtp-Source: AOwi7QBifh0PjSOK1adYuatpkxLS7lOKFhQfxSXIa11SXqUo/aHcFFzjiM2E+lAR67NaVSt4ewUJQw== X-Received: by 10.237.38.65 with SMTP id z59mr7537591qtc.209.1507148206690; Wed, 04 Oct 2017 13:16:46 -0700 (PDT) Received: from localhost ([2601:184:4780:aac0:25f8:dd96:a084:785a]) by smtp.gmail.com with ESMTPSA id r22sm10747608qtj.94.2017.10.04.13.16.45 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 04 Oct 2017 13:16:45 -0700 (PDT) From: Rob Clark To: U-Boot Mailing List Date: Wed, 4 Oct 2017 16:16:34 -0400 Message-Id: <20171004201638.4591-1-robdclark@gmail.com> X-Mailer: git-send-email 2.13.5 Cc: Peter Jones Subject: [U-Boot] [PATCH] distro: load FDT from any partition on boot device 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" In the EFI_LOADER boot path, we were only checking the FAT partition containing the EFI payload for dtb files. But this is somewhat of a fiction. In reality there will be one small (V)FAT partition containing grub (or whatever the payload may be), and a second boot partition containing kernel/initrd/fdt (typically ext4). It is this second partition where we should be looking for a FDT to load. So instead scan all the partitions of the disk containing the EFI payload. This matches where grub looks for kernel/initrd (barring custom grub.cfg, in which case the user can use grub's 'devicetree' command to load the correct FDT). The other option is somehow passing the ${fdtfile} to grub so that it can load the FDT based on selected kernel version location (which grub knows) and SoC/board specific ${fdtfile} (which grub does not know). Signed-off-by: Rob Clark --- include/config_distro_bootcmd.h | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h index e232a62996..58b2fe3371 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -126,25 +126,37 @@ "fi\0" \ \ "load_efi_dtb=" \ - "load ${devtype} ${devnum}:${distro_bootpart} " \ - "${fdt_addr_r} ${prefix}${efi_fdtfile}\0" \ + "load ${devtype} ${devnum}:${dtb_devp} " \ + "${fdt_addr_r} ${prefix}${efi_fdtfile} && " \ + "run boot_efi_binary\0" \ \ "efi_dtb_prefixes=/ /dtb/ /dtb/current/\0" \ - "scan_dev_for_efi=" \ + "scan_dev_for_dtb=" \ "setenv efi_fdtfile ${fdtfile}; " \ BOOTENV_EFI_SET_FDTFILE_FALLBACK \ - "for prefix in ${efi_dtb_prefixes}; do " \ - "if test -e ${devtype} " \ - "${devnum}:${distro_bootpart} " \ - "${prefix}${efi_fdtfile}; then " \ - "run load_efi_dtb; " \ - "fi;" \ - "done;" \ + "part list ${devtype} ${devnum} dtb_devplist; " \ + "env exists dtb_devplist || setenv dtb_devplist " \ + "${distro_bootpart}; " \ + "for dtb_devp in ${dtb_devplist}; do " \ + "for prefix in ${efi_dtb_prefixes}; do " \ + "if test -e ${devtype} " \ + "${devnum}:${dtb_devp} " \ + "${prefix}${efi_fdtfile};"\ + " then " \ + "echo Found DTB ${devtype} " \ + "${devnum}:${dtb_devp} " \ + "${prefix}${efi_fdtfile};"\ + "run load_efi_dtb; " \ + "fi;" \ + "done; " \ + "done; " \ + "run boot_efi_binary\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"; " \ - "run boot_efi_binary; " \ + "run scan_dev_for_dtb; " \ "echo EFI LOAD FAILED: continuing...; " \ "fi; " \ "setenv efi_fdtfile\0"