From patchwork Tue Dec 18 05:02:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AKASHI Takahiro X-Patchwork-Id: 154059 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp3279908ljp; Mon, 17 Dec 2018 21:04:23 -0800 (PST) X-Google-Smtp-Source: AFSGD/Xm6C4K6U19SSUI934AyQHqhM6vlbI17WI0scan6ceX9jQcOOSYII01GDZ6EBbxKcd/+LVb X-Received: by 2002:a50:97f3:: with SMTP id f48mr14913732edb.271.1545109463584; Mon, 17 Dec 2018 21:04:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545109463; cv=none; d=google.com; s=arc-20160816; b=dijEZ7vs4ZWJ3rPgkfyw5Gk92s/q9Jp47DurBmHyMGnwuRcqNFS1O5aNEFxSDLTI5M 1hz4VhYqGX4cG8J/SDP0JP0/murkoA3JHV+yS0a/tv44q0gfmeoRii9WgqUmoi7xfC8b 8c0qWJsKSbbxAU09l604rG4q9cT3K4keWzTAuvQvYS+UpxaUhQT3ra7Ns7QbVjhEMXwx GBD/BHgfCJ/mNXZXPTB+vkGtgPBMRcEmB97Q2g1KXUeEZ4rDT9rI8YQCMlL9b5R//nDf COSnDKwJVyA3UAuCPkTv+/zfxMTYRMj+IdKPcbN2bm4UkqCGzsQQ/HOOXAMrp5xOSBa1 o+sw== 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=KFCbuS/bOLBYdhZ1ZmOFp63SUpScCm86pduG++cZ6G8=; b=JUvG5GSPF+Ifrsh9dxEMkvnv82Wos+vsOfKY67btQPR7zx9b17GwrJ1tzWh6SrBv2t KhwtCQoA1QrTdGotJFICOzLSihgq6A2/7BWI3K0jVkoM3C4tv+BhNcGWB4TIMjczLg1P eqnIVhfWIh2kS45SJ8ZAQeZMaj3ydIDP3jQMEeaVKFX5NM/Rqrq2aLShdEdIq54+ZPq2 DpCeT/m4lHEhB63kEvf4rYnDzHmdcVfr/FQNUzuI1NWr4sNsN2vvXLyPTzgjm7ncOp8I +TdL6nFtO3HTf0PEmYKUD/IsnyzpVcnhuUxcGXLINTReXOUnCSm/w1FKBHwpCJlqvcDH y7gw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=FdEOPF+r; 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 u22-v6si2432997ejb.233.2018.12.17.21.04.23; Mon, 17 Dec 2018 21:04:23 -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; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=FdEOPF+r; 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 2C666C22074; Tue, 18 Dec 2018 05:01: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=RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, 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 6699AC22090; Tue, 18 Dec 2018 05:00:11 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id A19EAC2204E; Tue, 18 Dec 2018 04:59:46 +0000 (UTC) Received: from mail-yb1-f194.google.com (mail-yb1-f194.google.com [209.85.219.194]) by lists.denx.de (Postfix) with ESMTPS id 6C09BC2206B for ; Tue, 18 Dec 2018 04:59:42 +0000 (UTC) Received: by mail-yb1-f194.google.com with SMTP id r11so5998920ybp.12 for ; Mon, 17 Dec 2018 20:59:42 -0800 (PST) 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=wN/J4dhVCAUCNnMUqguKi19oitOOcid/1TmJNC3Iw9o=; b=FdEOPF+rHqI7EkDvN/cz+KPApZrWnNpWa7ksqG0UC4cpKq3ieeu38dpoD+k/+33XvI eqr062QDuqx+bkVVbVF2lZkB37QsdeJMtf0qESpCHahMPAuUhRQbwOeG4oLc30Y6freP x/XTnkbuR2iV8PQEIlu3L3lZprW9XW7pOY9gE= 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=wN/J4dhVCAUCNnMUqguKi19oitOOcid/1TmJNC3Iw9o=; b=bvnarTSj4c2cibarnN9H02jkOLIVOfzEdSx1XrYS7dtPSLfV9Jqz5DZBlOlnBh2wJ/ K9LqmKoK/eSXZ42xO7n2BqxLSTtuAgBqHVIOkbOv/DdiO6qGd72QtMmsZmUdrfaKNzAq N2slx3d8EzcApfoySBpXgMVVcXssEbbtzGNJil0/ux17RiJFLXDDIg8NWDfG9hHTDoBK PtkcaHt9RN4H4s+n3YF8whU8V8TaCYLNquNYAvDWd0JV9uLDjruWjl3a3dTyjONrpgTP AM648uFfAjz/sIfMQqqD/O0mTu90u/KaOdlQ0ZUlBgWCLwxd8/oY4GDgX9goyjm7IqDs HaCA== X-Gm-Message-State: AA+aEWbxdomhkOXiABVNH+g8xNxl/0fHVZG8l0DdUwNIud7/Pn2tDA1/ 6cUcA5Ez/6UICeRcxU1LSS1bXQ== X-Received: by 2002:a25:52c1:: with SMTP id g184mr15953632ybb.289.1545109181383; Mon, 17 Dec 2018 20:59:41 -0800 (PST) Received: from linaro.org ([121.95.100.191]) by smtp.googlemail.com with ESMTPSA id d204sm4468129ywa.68.2018.12.17.20.59.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Dec 2018 20:59:40 -0800 (PST) From: AKASHI Takahiro To: trini@konsulko.com, agraf@suse.de, xypron.glpk@gmx.de Date: Tue, 18 Dec 2018 14:02:55 +0900 Message-Id: <20181218050257.20142-4-takahiro.akashi@linaro.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181218050257.20142-1-takahiro.akashi@linaro.org> References: <20181218050257.20142-1-takahiro.akashi@linaro.org> MIME-Version: 1.0 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH 3/5] cmd: bootefi: carve out fdt parameter handling 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 way how command parameters, particularly "fdt addr," are handled makes it a bit complicated to add a subcommand-specific parameter. So just refactor the code and extract efi_handle_fdt(). This commit is a preparatory change for enhancing bootmgr sub-command. Signed-off-by: AKASHI Takahiro Revert "fixup! fixup! cmd: bootefi: carve out fdt parameter handling" This reverts commit abc315426e37bdfb96a48d23c1fc96399b68baa5. --- cmd/bootefi.c | 49 +++++++++++++++++++++++++++++++++---------------- cmd/bootefi.h | 3 +++ 2 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 cmd/bootefi.h diff --git a/cmd/bootefi.c b/cmd/bootefi.c index 3ebae1cdad08..796ca6ee69ec 100644 --- a/cmd/bootefi.c +++ b/cmd/bootefi.c @@ -279,6 +279,31 @@ static void bootefi_run_finish(struct efi_loaded_image_obj *image_obj, efi_delete_handle(&image_obj->header); } +int efi_handle_fdt(char *fdt_opt) +{ + unsigned long fdt_addr; + efi_status_t r; + + if (fdt_opt) { + fdt_addr = simple_strtoul(fdt_opt, NULL, 16); + if (!fdt_addr && *fdt_opt != '0') + return CMD_RET_USAGE; + + /* Install device tree */ + r = efi_install_fdt(fdt_addr); + if (r != EFI_SUCCESS) { + printf("ERROR: failed to install device tree\n"); + return CMD_RET_FAILURE; + } + } else { + /* Remove device tree. EFI_NOT_FOUND can be ignored here */ + efi_install_configuration_table(&efi_guid_fdt, NULL); + printf("WARNING: booting without device tree\n"); + } + + return CMD_RET_SUCCESS; +} + /** * do_bootefi_exec() - execute EFI binary * @@ -473,7 +498,6 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) unsigned long addr; char *saddr; efi_status_t r; - unsigned long fdt_addr; /* Allow unaligned memory access */ allow_unaligned(); @@ -489,21 +513,6 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (argc < 2) return CMD_RET_USAGE; - if (argc > 2) { - fdt_addr = simple_strtoul(argv[2], NULL, 16); - if (!fdt_addr && *argv[2] != '0') - return CMD_RET_USAGE; - /* Install device tree */ - r = efi_install_fdt(fdt_addr); - if (r != EFI_SUCCESS) { - printf("ERROR: failed to install device tree\n"); - return CMD_RET_FAILURE; - } - } else { - /* Remove device tree. EFI_NOT_FOUND can be ignored here */ - efi_install_configuration_table(&efi_guid_fdt, NULL); - printf("WARNING: booting without device tree\n"); - } #ifdef CONFIG_CMD_BOOTEFI_HELLO if (!strcmp(argv[1], "hello")) { ulong size = __efi_helloworld_end - __efi_helloworld_begin; @@ -521,6 +530,9 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) struct efi_loaded_image_obj *image_obj; struct efi_loaded_image *loaded_image_info; + if (efi_handle_fdt(argc > 2 ? argv[2] : NULL)) + return CMD_RET_FAILURE; + if (bootefi_test_prepare(&image_obj, &loaded_image_info, "\\selftest", (uintptr_t)&efi_selftest, "efi_selftest")) @@ -533,6 +545,9 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } else #endif if (!strcmp(argv[1], "bootmgr")) { + if (efi_handle_fdt(argc > 2 ? argv[2] : NULL)) + return CMD_RET_FAILURE; + return do_bootefi_bootmgr_exec(); } else { saddr = argv[1]; @@ -542,6 +557,8 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (!addr && *saddr != '0') return CMD_RET_USAGE; + if (efi_handle_fdt(argc > 2 ? argv[2] : NULL)) + return CMD_RET_FAILURE; } printf("## Starting EFI application at %08lx ...\n", addr); diff --git a/cmd/bootefi.h b/cmd/bootefi.h new file mode 100644 index 000000000000..4e11ab1211cb --- /dev/null +++ b/cmd/bootefi.h @@ -0,0 +1,3 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ + +int efi_handle_fdt(char *fdt_opt);