From patchwork Tue Jul 4 21:15:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 784314 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3x2GyK2PSZz9sBR for ; Wed, 5 Jul 2017 07:16:09 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 073C5C21EFE; Tue, 4 Jul 2017 21:16:00 +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_DNSWL_NONE, RCVD_IN_MSPIKE_H2 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 BF1FEC21E6B; Tue, 4 Jul 2017 21:15:41 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id DF915C21C44; Tue, 4 Jul 2017 21:15:39 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lists.denx.de (Postfix) with ESMTPS id 89154C21E4F for ; Tue, 4 Jul 2017 21:15:39 +0000 (UTC) Received: from workstation4.fritz.box ([88.152.145.149]) by mail.gmx.com (mrgmx102 [212.227.17.174]) with ESMTPSA (Nemesis) id 0Lv8hi-1dth1M0Fdq-010NCf; Tue, 04 Jul 2017 23:15:38 +0200 From: Heinrich Schuchardt To: Alexander Graf Date: Tue, 4 Jul 2017 23:15:23 +0200 Message-Id: <20170704211523.5135-4-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170704211523.5135-1-xypron.glpk@gmx.de> References: <20170704211523.5135-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:Ge/dz2a8NrtOCvmhZSyqEGySV2eWUdMW5NaZrBOXMI1TDqe+50H AN4bWwWfT9GgmcmpuIxxJ/3234FvZtK4sVW4/xro2yToknCmBuIAQebbcTMws1qeJK8M4Ch 0azmPF0SjwMRexf8NI16A2n67VoYqnHIkMJHnsm3rFeloZo6LxpjiIfD/e7GwL+yiRwvv89 rMJVW5NrRLMnvaPGb1LwA== X-UI-Out-Filterresults: notjunk:1; V01:K0:HxSXMpC4teQ=:MPVUOpcACf1eR8VhmC3Kol H4zvnzlUg9Wt3aKdXTRMkCtG9y1/BSBmismj1ufwDZ5R4d9tigQ+R2a7sleRW7+p4bgf8JAtZ 7GrW5R+wPNlPevP4FhfOETZXj3HhNo+eQRcC39IhR2yK5REhstCUd/BIJNCqfw4zKSB1BKBIa Bzs1lup/T7dRrBtR8o6X4asXwm8VhnUP+GHdUXljP6liWenggkqwSvbsPLU3yj4wwc21DjFq7 FgT98VDcOVPVEoNdUM/EFG1vBBfxJXGVAqsvuNO6evrQYtRNXIBcB2sXlyKSc1bthBJObteXM oMq8bH0/CpabxXJ/v0jQLMcUph5Y3sbbxiZB8oi+NT8ZwD0Bh1gE2dwqbGKeFvw5f6+NfjQqz LOu79L++a3iomgVEykkTBAX9q3w8nH8hKTJfQY71T4BJvQy49Ke3U3zNJhMbKYZRPw80Lr1qD 6usVNcVP0GNV8oI2tQm0mOgUDA0Fblxk/+ez12WuTHdc8Au8L9Cd2647cbYtKPQ8OS+02NCfM BOpGA0h/QlJXhvDHHoj85YIJ241/Bmz8EfCxsoWEtKLSnL5DuFfSoiKf/SRNsQJZ+ZpQt2Zjx 1QYCzIxjT0ySfOPY05wIk5MSsZGZEOMddZD8x9J3Ay5F5VogtUtHUgSYHA0MrvtyRliS6jWeO Tp0506hhh60IQDMHAJpMiJ5MW5iyalBQfg3491mRkInQbznxL7ykxctLHC1vRfpT8Kz5ljAp1 hnviDGjOV9cfMaLdHU4ir/y2y6+IE+OptiEQBUVPUHZLvjWs2v46r0F5ZfU= Cc: u-boot@lists.denx.de, Heinrich Schuchardt Subject: [U-Boot] [PATCH v3 3/3] efi_loader: provide meaningful status code 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" Currenty any EFI status other than EFI_SUCCESS is reported as Application terminated, r = -22 With the patch the status code returned by the EFI application is printed. Cc: Alexander Graf Signed-off-by: Heinrich Schuchardt --- v3: Use constant EFI_ERROR_MASK to convert status code to remove hight bit. v2: Do not output status code mnemonic. Alexander suggested this to reduce code size. We may add a CONFIG option for mnemonic output later. --- cmd/bootefi.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/bootefi.c b/cmd/bootefi.c index 4df468307c..802b5f245f 100644 --- a/cmd/bootefi.c +++ b/cmd/bootefi.c @@ -252,8 +252,7 @@ static unsigned long do_bootefi_exec(void *efi, void *fdt) debug("%s:%d Jumping to 0x%lx\n", __func__, __LINE__, (long)entry); if (setjmp(&loaded_image_info.exit_jmp)) { - efi_status_t status = loaded_image_info.exit_status; - return status == EFI_SUCCESS ? 0 : -EINVAL; + return loaded_image_info.exit_status; } #ifdef CONFIG_ARM64 @@ -281,7 +280,7 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *saddr, *sfdt; unsigned long addr, fdt_addr = 0; - int r = 0; + unsigned long r; if (argc < 2) return CMD_RET_USAGE; @@ -306,12 +305,13 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) printf("## Starting EFI application at %08lx ...\n", addr); r = do_bootefi_exec((void *)addr, (void*)fdt_addr); - printf("## Application terminated, r = %d\n", r); + printf("## Application terminated, r = %lu\n", + r & ~EFI_ERROR_MASK); - if (r != 0) - r = 1; - - return r; + if (r != EFI_SUCCESS) + return 1; + else + return 0; } #ifdef CONFIG_SYS_LONGHELP