From patchwork Thu May 5 20:16:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1627250 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=MX02yQZM; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KvQ4t3Qj3z9sBF for ; Fri, 6 May 2022 06:18:38 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id C1F758408F; Thu, 5 May 2022 22:17:36 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="MX02yQZM"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A0A6F840C4; Thu, 5 May 2022 22:17:28 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.2 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on0607.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0c::607]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 201D4840AD for ; Thu, 5 May 2022 22:17:18 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fXaJMG9XECndx78EhKyhj6PsJSgEvnDPKQSEx8cqhUq+Uu/ujokLW0nCw+d4hmuoAyPztsLWnUkvs+aZ2p9H06XvS4xvgpqlO+EO7PZXBBNXchRFpxHoZdIdB+QgG/W6JnRWgfrQZ5UxRevaUeMhfdA4EWUeFKZhJYrHUeyQ0JJKOfuDgZ7q+mVSt97+ppv7Krfbntpl8oleAa4fpYxCpM2ThhUG4CYuPWH2g1Pd7dtECJd2J1p/YFltUMPL25kWpz/EreEe5xCzMkuxcxSMdeuYVekU9nn2HNT+oZScoOPyGwterHrAy4xB4eXjSuYscQSuMGFvfKWlNkQc5SE2pQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=t+Opr1i2snuGhamgsJiJwjh9TJ4FHhm/MZogQ1HxbEg=; b=Je/T0SY8/nZfMeBih302WujGAZzROv0bReEStuEXfQT5qwyZxAdA0BO+nq7Znp1+Ts4WLXb0w1gtJKb+k3DvKXvcDDWQVYQh/C2XSvZyIJWG0j62cKtgq/hMweqwNiA1G9S5mluow0Ii7dBCALoq1XYmobac/LxPP8ThTLAbMgGuc/JFetNaLGFPiKY2GBzRzEDaqWf5DPWCHOSC+HPxxMm++DFXODjDputJE17dEsCenux/gx+cOc9Jbcc2EGgJ7ycK1OKnKsZEUJ5fsOldXOVLVdB5KEb/303z4Ljg+Nx36iIX7kejnJhjBXVUjbyOwZ0ayKkFgpJL9OPSU74myw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=t+Opr1i2snuGhamgsJiJwjh9TJ4FHhm/MZogQ1HxbEg=; b=MX02yQZMYvQXEFZrjZKfN6y1wcl/phT5MnoUeUksUmcvLIzI6L58A78xyCrxTNJU2++6G8RfxpOQT3s6fPbFKdA/OFLp35KG73oV9NZA+p+olqMhm2V0Gz8DnzM8pTrHbSgB6qJXkOIl59xfi3KeHR2EbI2RLZJS0K0znCzPtfbhQyMIJJzMRpcbx7r5AL1JvzyMLo+QAaYgrbV6nRMXol3OWbncdWxQ/FyqEFmqFAGL1VcDO89mbzn47gbxAiDt/tfSext+Vq/JuJg+UVAt8KcxjoSBcFWrRZqnQQ5oL64OES4uZE4Xcm/dnHx+vOEnY8TxBVAs73wW9WQb08SxeQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by DB8PR03MB5676.eurprd03.prod.outlook.com (2603:10a6:10:10b::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.25; Thu, 5 May 2022 20:17:17 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::a9d3:8abd:3f5e:a0c]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::a9d3:8abd:3f5e:a0c%5]) with mapi id 15.20.5206.027; Thu, 5 May 2022 20:17:17 +0000 From: Sean Anderson To: Tom Rini , u-boot@lists.denx.de Cc: Stefan Roese , Marek Vasut , Simon Glass , =?utf-8?q?Pali_Roh=C3=A1r?= , =?utf-8?q?Marek_Beh=C3=BAn?= , Sean Anderson Subject: [PATCH v3 7/9] spl: Convert semihosting to spl_load Date: Thu, 5 May 2022 16:16:53 -0400 Message-Id: <20220505201655.645692-8-sean.anderson@seco.com> X-Mailer: git-send-email 2.35.1.1320.gc452695387.dirty In-Reply-To: <20220505201655.645692-1-sean.anderson@seco.com> References: <20220505201655.645692-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0047.namprd20.prod.outlook.com (2603:10b6:208:235::16) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 92f9e0d7-2afe-4381-3a41-08da2ed43ffb X-MS-TrafficTypeDiagnostic: DB8PR03MB5676:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: abzKDsPwsJyjCWsyWcvnFCLATGmVXdHxz1d8TyWf9cfo0Q1bTsXzAcxf7oaA8R8R5yHvKWWjYZXjEbYzztWttoe5zWoxQtxy6AwcDh0eEo/hDIqrhNVfxMmDlZzA8D6EnVao1TZY5QSu4KGb9NsI6huC4vOP89Hz3jcJzFV+NNo55F4uLostzowzO8vs6UL1vpoaNShhjOmZwhZ5lko07ddUkiVKJp+TMZBHHOhsAKwUBkIMw2M3rL9uLlY7nAMg0ZCmSc5/E3iOXySe6tse9nmNGWL6vmGNQ+U2ZlKn3newHd8c97/FbFNj9ZAsGeRPtRfrTDJzYnasUz8fvMTsOdpFqsN4O9YUxsdJp0bC7reUuiYaTdp3JAY3QnalCk+cowLJ44o3gkKvrVyBs+ykIaVrzpRyUNdpIJoWrQ8ELVX59/j7dSmHk0rU6YbGDJaNwas+E12+mmY6yz/nRU2gUp+tOedLPdnt1oEaTrVIQtPb/9lDtGUpaoQqJEYsoRa6ZEdCDY4IgrqunyVbFxqKbo0h39TAcQpAnHOpIGR2RVaGtF3/Dd/kCGkjxn2Xyyf4ZeCzXulnNzRDY8KIxV6MQ4QZtwsNJ5URiRldo1GPgis1lT976yZvRE0CJGjzCOSi3DlnA/Ncdez5oGJcMPncW/8nT5R1ovmdp+6byzvejzvwf4yqM00hYfzNUebCmCXb9P4uWSeaCEe7nVcd3A3CVA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(86362001)(1076003)(4326008)(6512007)(54906003)(26005)(186003)(2616005)(44832011)(8676002)(83380400001)(66946007)(107886003)(66556008)(66476007)(316002)(5660300002)(38350700002)(36756003)(6486002)(38100700002)(6506007)(8936002)(508600001)(2906002)(52116002)(6666004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: esku7odXLqBiVgT1Oyl8ykcuNafOuQo0XvHjTxeFXtj9Nl84eLTE5Td5Mohx/PBsrdKL55f5Q4GuPmeSKtH9Fi/f7LUvyRShSn7b1QyXLb1ugkKHjo2iEVUsRXOj9jJyqbfSuWTvb+aKrFB8TjVrK3LN3P0lqdFkOATyN7h1/z0QceSLXqCd1aaNdyKAv8J7/+81u3kKuxrzAUj10YghSQwRjTZ8PJvYQgyQXV6zoFHRJEzTclOwd25/VIi38DFMsvfDsT85ElSlX9erM68KU6js2M0Z9/rQlFOgzpQ1xmEJRg1WsPTczjdtCp1yM1RI09TmqdSUCtrRXqbwKvd4YFKQULjtLJJLxwf2GnKQiq6k3TmneaB9yMY+YMT49eNhqVqm/QlVQVVi1MIitFZdOiPFcRbqmFdUaxn8espEtU6qhy/99iekNuv6rdTpv5uIRtyj4laxHnd9WmGUXdFrbJxvF8YFAJYqcsT72mvFiqTv5O0Pzos1AIOua0iGUSEaMHcCgSVwnOY+ooReR1a8uDp3f2k0rcmsd2HZygjGd4omQSVD0mup4oYp63jlXxcRB+uOXnkgq8/jtGlS0pBYXQjcwr33v/WSDoIurnaAjHxpLsatoLXJtaXGUbCy3MoIbQYbZ0Tx/cu4bYv2ObtQcUCjVdMVnHL1Uc7H/vYqVHEHpv3PuW/E1ph0U0sdFf12sflkpmzQF0E//DEkNn13wjOopgHXbLmdDU/7a5C9vWbOqsqsmW6gA1SVHmL6/zr8drGfCUpcKzjl4eJpncTf5fVYp+7+NkcpsxroGmBvLxr2HQ2o7qe7JTys1UenP9XCNYAkkmnz7Tity2RvPz9zXGV5HYQYqZ4MjaD+KOBOKNnklRZi0v+hc777E3HSqnQJw00Nqc2UfLhdVunULViyTKQPbJ5YAfLGcK93RO+BeMrLroKowtnsISSsJseZxvtN0QHhzA7rnr6I/huK4ldCe6sfebxL9FoajwOFO4ria+yfJizAymo+eY4gidS6dkg1VW4sAFWzxiqFFSx37eCwyXN5x7sLNpgUDSrAi4WkYtHAbTkKE0/nxgRN1rtFz7JGzoqLLqI2lo1cPoE3lnttpkkYSQB/ncQeJCJHvdzsAehH+6bFjvPfzYYJeZWaMa4eb4mYAEVUO4Zz3LNj+3redQ7jpkndZQ4Mrnf35mU9tU4mWVvk8G9idX0no/ud5FfT9ekzHxN1Oj9RrBMflVS4lNFny8tUY9n5q7fIhq4oSMwVV3yCVGpSwiwPbA9/dmpAzR7iyrJl4DYM2zeAvazWnYeb15hFOVuDYACuF+vKPAMV+meTWUUrinv91lI2IWnHAOOONNwa0ueeUcudiTfyc7/jMz7e+hKGdi1Q2SzAJceWGxEz3WjtqTO/9vEu5GfJyBCW7sMg/YoZ7imho5XnEZbf63vzmXUMmJitysZW1z2fbP22OaqX6henWlUsh4BNi//T3iDBaOk8aNDO6U5CWmiLgId1PjVWBweIYQnZizuqfULAJ0jecX+x+5XgHToSWj8yeRYZCANAK03UYXegE8JLcMEBqZ1T/5v5kpcpkeQCA+s/YKyPGkMVuRkBj5CpHOWo9gufSXhR3pzAq0jwffMEYpKv0rZbNpUl8IYuGFRNZ2J+9+7R6hCkTqXdrbw+md46XevLSab3Xq20RukqXF2icdnPUORFt7wfpHS44NU/7XTBT8mzeN2Wjc5isFKmm16XCTLkc2CBG709XrHs4Lnhfeut+2bwh0tcavKxJTE= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 92f9e0d7-2afe-4381-3a41-08da2ed43ffb X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2022 20:17:16.9438 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: nxAkSt5vwYDWloEzigsHQd7B51Ll+ymhS6rHVLjfP8TiqXnPQOy/I+ylmo0oxLdQ9MWFA5SNHhyKoMOP9UsocA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR03MB5676 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean This converts the semihosting load method to use spl_load. As a result, it also adds support for LOAD_FIT_FULL and IMX images. Signed-off-by: Sean Anderson --- (no changes since v2) Changes in v2: - New common/spl/spl_semihosting.c | 39 +++++++++++++++--------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/common/spl/spl_semihosting.c b/common/spl/spl_semihosting.c index df6aeb2951..35fbc2ee5e 100644 --- a/common/spl/spl_semihosting.c +++ b/common/spl/spl_semihosting.c @@ -9,16 +9,16 @@ #include #include -static int smh_read_full(long fd, void *memp, size_t len) +static ulong spl_smh_fit_read(struct spl_load_info *load, ulong sector, + ulong count, void *buf) { - long read; + int ret, fd = *(int *)load->priv; - read = smh_read(fd, memp, len); - if (read < 0) - return read; - if (read != len) - return -EIO; - return 0; + if (smh_seek(fd, sector)) + return 0; + + ret = smh_read(fd, buf, count); + return ret < 0 ? 0 : ret; } static int spl_smh_load_image(struct spl_image_info *spl_image, @@ -29,12 +29,17 @@ static int spl_smh_load_image(struct spl_image_info *spl_image, long fd, len; struct image_header *header = spl_get_load_buffer(-sizeof(*header), sizeof(*header)); + struct spl_load_info load = { + .bl_len = 1, + .read = spl_smh_fit_read, + }; fd = smh_open(filename, MODE_READ | MODE_BINARY); if (fd < 0) { log_debug("could not open %s: %ld\n", filename, fd); return fd; } + load.priv = &fd; ret = smh_flen(fd); if (ret < 0) { @@ -43,25 +48,13 @@ static int spl_smh_load_image(struct spl_image_info *spl_image, } len = ret; - ret = smh_read_full(fd, header, sizeof(struct image_header)); - if (ret) { + ret = smh_read(fd, header, sizeof(struct image_header)); + if (ret != sizeof(struct image_header)) { log_debug("could not read image header: %d\n", ret); goto out; } - ret = spl_parse_image_header(spl_image, bootdev, header); - if (ret) { - log_debug("failed to parse image header: %d\n", ret); - goto out; - } - - ret = smh_seek(fd, 0); - if (ret) { - log_debug("could not seek to start of image: %d\n", ret); - goto out; - } - - ret = smh_read_full(fd, (void *)spl_image->load_addr, len); + ret = spl_load(spl_image, bootdev, &load, header, len, 0); if (ret) log_debug("could not read %s: %d\n", filename, ret); out: