{"id":2197199,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2197199/?format=json","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/1.0/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20260217112156.272154-4-a-dutta@ti.com>","date":"2026-02-17T11:21:52","name":"[3/7] spl: mtd: Add bad block handling for SPL image loading","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"40716c163c6963708f650907be5e6bb22bf36d73","submitter":{"id":89567,"url":"http://patchwork.ozlabs.org/api/1.0/people/89567/?format=json","name":"Anurag Dutta","email":"a-dutta@ti.com"},"delegate":{"id":127735,"url":"http://patchwork.ozlabs.org/api/1.0/users/127735/?format=json","username":"passgat","first_name":"Dario","last_name":"Binacchi","email":"dario.binacchi@amarulasolutions.com"},"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/20260217112156.272154-4-a-dutta@ti.com/mbox/","series":[{"id":492411,"url":"http://patchwork.ozlabs.org/api/1.0/series/492411/?format=json","date":"2026-02-17T11:21:49","name":"OSPI NAND MTD load and boot support","version":1,"mbox":"http://patchwork.ozlabs.org/series/492411/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2197199/checks/","tags":{},"headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=ti.com header.i=@ti.com header.a=rsa-sha256\n header.s=selector1 header.b=l9A8mjPb;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=85.214.62.61; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=ti.com","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=ti.com header.i=@ti.com header.b=\"l9A8mjPb\";\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=ti.com","phobos.denx.de; spf=pass smtp.mailfrom=a-dutta@ti.com"],"Received":["from phobos.denx.de (phobos.denx.de [85.214.62.61])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fFcgr2L22z1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 22:22:48 +1100 (AEDT)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id EE90C80325;\n\tTue, 17 Feb 2026 12:22:19 +0100 (CET)","by phobos.denx.de (Postfix, from userid 109)\n id 3E05080325; Tue, 17 Feb 2026 12:22:18 +0100 (CET)","from CH5PR02CU005.outbound.protection.outlook.com\n (mail-northcentralusazlp170120005.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c105::5])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 5783483D17\n for <u-boot@lists.denx.de>; Tue, 17 Feb 2026 12:22:15 +0100 (CET)","from DM6PR07CA0065.namprd07.prod.outlook.com (2603:10b6:5:74::42) by\n BN0PR10MB5190.namprd10.prod.outlook.com (2603:10b6:408:12b::15) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.13; Tue, 17 Feb\n 2026 11:22:13 +0000","from DS1PEPF0001708F.namprd03.prod.outlook.com\n (2603:10b6:5:74:cafe::d8) by DM6PR07CA0065.outlook.office365.com\n (2603:10b6:5:74::42) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.13 via Frontend Transport; Tue,\n 17 Feb 2026 11:22:12 +0000","from flwvzet201.ext.ti.com (198.47.21.195) by\n DS1PEPF0001708F.mail.protection.outlook.com (10.167.17.139) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9632.12 via Frontend Transport; Tue, 17 Feb 2026 11:22:11 +0000","from DFLE201.ent.ti.com (10.64.6.59) by flwvzet201.ext.ti.com\n (10.248.192.32) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 17 Feb\n 2026 05:22:10 -0600","from DFLE203.ent.ti.com (10.64.6.61) by DFLE201.ent.ti.com\n (10.64.6.59) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 17 Feb\n 2026 05:22:10 -0600","from lelvem-mr05.itg.ti.com (10.180.75.9) by DFLE203.ent.ti.com\n (10.64.6.61) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend\n Transport; Tue, 17 Feb 2026 05:22:10 -0600","from a-dutta.dhcp.ti.com (a-dutta.dhcp.ti.com [10.24.51.206] (may be\n forged))\n by lelvem-mr05.itg.ti.com (8.18.1/8.18.1) with ESMTP id 61HBLutP3263329;\n Tue, 17 Feb 2026 05:22:07 -0600"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-1.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,T_SPF_PERMERROR autolearn=no\n autolearn_force=no version=3.4.2","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=vYYnBvRjPjVy3Vm3UsASnGjaZEla4Q/FrRYfe2E51KW8UFwsVaOzrd/oWk2qcVbzDngy6baznRM+xB2I1RET7+r37/+JFT2dJFkrw9M7A5zBASsfDLsINEOWj/gO/B6YCCdsk/B8oXlcW/Fi7S43NQmlv1i8mE42IVFhXSWTqhN/M6Zh1fxQD0Zf4ILI7oEjVnrZcEFnPkYcTPyIQZh6IPay/lCAR2hE8kdbPwH9ZbE71ek5236o3tv2hqgF4CNFDf6d8JFi+oG6EBXS1C8hS7GvY41VWxgJg6bfY7V57f0JZUHtN+KtBRuTBR4tNZN/6DmxsfjeHRk7Kz5pU4kA8Q==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=J9urJW97ivqwiVol805kqZxd+IGpirmzaprwwmrvwyE=;\n b=xQoKx1yHbDoQrHWIa2zLrEVR/SHSEE6nSGPGmSTLdOhP+MjHFa3bjb3Z6YrM2XHIs/KUlR7qYFfg1oxf+SUCGV+uI0I84dfkU/gk1+fJtiZJq5VnTIhPxaeFOA8iS6PmHQUTJNGOnqiYzXa+o2xPm1oPi1m1GTHYDNbGVgtQRmiRRgJTCmd0XE99ZMkO8u7YVRcXacnhe/k9g2z+U4S2X+i7SVUqo2jsa0gIldxZ5rLbm/5t2B4BjKy3pGkDvldECczVe33V2+BIUgi94krSdSj6+KYlwysacPXjurSletUWKhRNVQvaM7SGpHMWka03b4RE1Lt0/ryLZUkxpclqMA==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 198.47.21.195) smtp.rcpttodomain=lists.denx.de smtp.mailfrom=ti.com;\n dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=ti.com;\n dkim=none (message not signed); arc=none (0)","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=J9urJW97ivqwiVol805kqZxd+IGpirmzaprwwmrvwyE=;\n b=l9A8mjPbyZ281vMuB4XCHBWw9b9DGpOlXE9M6MrOBNUiNJRfVw51QUx19PtYvxRq8iaRNAmOpyCgYMRAp74BX/V+xurDCymh10eaUZZRCX9+iSd6adrqquK6j3MdRiXcQYQpIYEsU8OlKSf5h9VjGPzrTp/hdPdykq9Lc/aJ0Lk=","X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 198.47.21.195)\n smtp.mailfrom=ti.com; dkim=none (message not signed) header.d=none;\n dmarc=pass\n action=none header.from=ti.com;","Received-SPF":"Pass (protection.outlook.com: domain of ti.com designates\n 198.47.21.195 as permitted sender) receiver=protection.outlook.com;\n client-ip=198.47.21.195; helo=flwvzet201.ext.ti.com; pr=C","From":"Anurag Dutta <a-dutta@ti.com>","To":"<jagan@amarulasolutions.com>, <trini@konsulko.com>","CC":"<michal.simek@amd.com>, <venkatesh.abbarapu@amd.com>,\n <boon.khai.ng@altera.com>, <a-dutta@ti.com>, <s-k6@ti.com>,\n <gehariprasath@ti.com>, <vigneshr@ti.com>, <u-kumar1@ti.com>,\n <u-boot@lists.denx.de>","Subject":"[PATCH 3/7] spl: mtd: Add bad block handling for SPL image loading","Date":"Tue, 17 Feb 2026 16:51:52 +0530","Message-ID":"<20260217112156.272154-4-a-dutta@ti.com>","X-Mailer":"git-send-email 2.34.1","In-Reply-To":"<20260217112156.272154-1-a-dutta@ti.com>","References":"<20260217112156.272154-1-a-dutta@ti.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-C2ProcessedOrg":"333ef613-75bf-4e12-a4b1-8e3623f5dcea","X-EOPAttributedMessage":"0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"DS1PEPF0001708F:EE_|BN0PR10MB5190:EE_","X-MS-Office365-Filtering-Correlation-Id":"839cd944-e4aa-481d-4779-08de6e16cb9b","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|82310400026|376014|36860700013|1800799024;","X-Microsoft-Antispam-Message-Info":"\n MAdhvrQ40x88VmekuzAwNFj0sWoDMs+leKaMLFqd0xKUnet557l5MTxxGT9qhXWr/cMNDOwc9lStuLO+ZAQKehe+qZJk3bnbt/qG9WP8BmOzOPvXUvM667fdWGGN5a5baNKNWl7cqsj9t/7/28GqtjMggY2JNtwrrSkKslFvCZpgfgHlC1dX8PwHaHRzwEXQ6BZyvewc4dULstisFVIjQpqu082vVwwF/0PQUHeVZJ9w57YLNzic/PPCWDqZ1vJd3nChHGBYgYWf8ykCCo0PJYZThgubo1ZtDLIIYmLBqX26GOek8U7YSXQHnf2uj4iN250XKCuRq4DgizKD5WrF/cLX77PRtSmBRYZRlC5yzlXmgL97Mk0F4Lo4l8ujbpde1mZhBZn/5pOJgI3pmZvzvn0/PNnAu5hiJ07xzqVBddLYtAeXQ7ZciRpWfM7fTO7McDzW3rzk+Ew31VouSNs2YG2RgQOhfp7FQkZ2QzxZv2iwjiF9Xw/G8aLV0IXfTEOXmqevAPjoPqzkwy++WkEqra8ZmgSl9JtGrJInKcgMTMJjR7xLkLwOI3GRddYXZFQpim/YkULk54nFRq8kM0zks6k1obxkK9MweFgW0aMZLLgpTiI0j4COGgACo5JL2VeicR0tHlO81gPXleb4nafNHJ7csA3zZ2CUrS6CQAyudBLvugG9wAtGx4MdGokUq3+t6/x8yJYfWIJkL4OAosmNk6tDpkgFFWYFIfCGKQrQ9CDkg6tNRY4Pj+5P0lPAgyfxntC0JJ4WDelgoRUPMUWxIpI83S56WQgDZMyoyDrQYIyY9qKJk9ENesRRWmIb0w5ohnXfEanfFFODv7Gr2L3L8SPa620uAXNuvvYLMQH75oiJ8YHfxkOwhd2mbSV0J6Wcg1Cdw4q/nmmPlyqnjrzbhkVSeZFJ0ofTE53+b03grgIjaFb79DJMHjZJwBo+dZK02fp290qVuGo9iDzZA0SrwaAhWkvAP0MConUYREWJIyVIJwZ0dhzeB9FIDa4vVjx5twMYC5cYyIL9z8iOvT4Bn+65Kk+RHHTNftZiWxrky809DT3lDv/V3mFqfKY2lrc/+eSp8UJQd+kS3rUIb1Kv8FJRj0mfkxQ8N0xZoGLXauLEZWW1fdAbg8eO0L2R1DvwVECXP17rvchrsr8RGPxQKHGNu51P+CW8YtbN7uA3cidwgNP3uEd56QOLWij0G7fcSsodrH1ErjcKLdIaEIHJCmeAA8xbRJaBKYpH/Xfssfeyrc6OfG0mI75PEHRoA8R49KhNuqNYzumqbaqtlDkPKlvkJKW4FGgUypbz7/RPLjw+j10KUWXzF2PmQDjhNwTpM7Lc61lqu0ezC6eLVRanYyJpaOlEtYdddyAPtVDhpJQOm6byCDBoao13OhqVks0PbNKaUTJSDlRpJpRznp5uBG0ILSXvVEEdYb3AhHmMz7Aeyu7ceTzDdVjllvqWhGc2EkNcpnrVhyAd+gOmecNu2ik6llvRbckQ4yc/jqrgUfmHyGAjwfhspw7+MbNN32johrrV4nPo9EyfrGtItmxomtGUgbFIbqWRRcuS6HhGGSpe8TfAJN3biDyxwNPQ/2wyeeuDfJtgRn2lExImwzpmNV3zYOB5MJvMLIHQikgVfV6Zu5i+sIyEzQHPceksqKS3","X-Forefront-Antispam-Report":"CIP:198.47.21.195; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:flwvzet201.ext.ti.com; PTR:ErrorRetry; CAT:NONE;\n SFS:(13230040)(82310400026)(376014)(36860700013)(1800799024); DIR:OUT;\n SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n sOT6EKFIgbdu9/xQKDyY4nsuUb+nG2dsdCZ5FL7LjrOBZBugdJB//MlwKQonepH5S8Q722QMYdCaBZowABuLf4lX2x56O3DVp9ApSwd1bPuClcIvmlfJkqis/LhweGZoSMjYxa70NRppP9K5sQZGQgao698SC8N4gkFUsUueJUO4HdYWZps0qeUIaDUGZrVqe2+n9/FEB0YI8taflNkTEpLFTSegQWDNUM4i+VR8o8CDBlwDxwcI785HNbu1fBoSjnUlIzxjRc+VsXjjE81cZF3O+JSEubeMPhvMx8RJzMggpL6w2j+b5ym57NFlm5XTfADXQinUiXtf52Ys3UpFRKnhZXsiAE38L7DTn8K5VzPrGej10EsVxKBevLyTI98eSlkDDmOZJTLufZWTFMR7SMXihGHtrcYbMsoKSGh7HqOGmsYXLSQ/FuFzzX2jxuCI","X-OriginatorOrg":"ti.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"17 Feb 2026 11:22:11.6507 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 839cd944-e4aa-481d-4779-08de6e16cb9b","X-MS-Exchange-CrossTenant-Id":"e5b49634-450b-4709-8abb-1e2b19b982b7","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=e5b49634-450b-4709-8abb-1e2b19b982b7; Ip=[198.47.21.195];\n Helo=[flwvzet201.ext.ti.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n DS1PEPF0001708F.namprd03.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"BN0PR10MB5190","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"},"content":"From: Santhosh Kumar K <s-k6@ti.com>\n\nImplement bad block skipping functionality in SPL MTD loader to ensure\nreliable boot from flash devices with bad blocks. Without this, the\nSPL would fail to load images if bad blocks were encountered.\n\nSigned-off-by: Santhosh Kumar K <s-k6@ti.com>\nSigned-off-by: Anurag Dutta <a-dutta@ti.com>\n---\n common/spl/spl_mtd.c | 78 ++++++++++++++++++++++++++++++++++++++------\n 1 file changed, 68 insertions(+), 10 deletions(-)","diff":"diff --git a/common/spl/spl_mtd.c b/common/spl/spl_mtd.c\nindex 95c0c8ce8cd..d635aa2b476 100644\n--- a/common/spl/spl_mtd.c\n+++ b/common/spl/spl_mtd.c\n@@ -17,15 +17,64 @@ uint32_t __weak spl_mtd_get_uboot_offs(void)\n \treturn CONFIG_SYS_MTD_U_BOOT_OFFS;\n }\n \n+static ulong spl_mtd_read_skip_bad(struct mtd_info *mtd, loff_t offs,\n+\t\t\t\t   size_t size, void *dst)\n+{\n+\tsize_t remaining = size;\n+\tsize_t ret_len;\n+\tloff_t current_offs = offs;\n+\tloff_t block_aligned_offs, next_block;\n+\tu_char *buf = (u_char *)dst;\n+\tint err;\n+\n+\twhile (remaining > 0) {\n+\t\tsize_t read_size;\n+\t\tsize_t block_remaining;\n+\n+\t\tblock_aligned_offs = current_offs & ~(mtd->erasesize - 1);\n+\n+\t\tif (mtd_block_isbad(mtd, block_aligned_offs)) {\n+\t\t\tdebug(\"SPL: Skipping bad block at 0x%llx, jumping to 0x%llx\\n\",\n+\t\t\t      block_aligned_offs, next_block);\n+\n+\t\t\tnext_block = block_aligned_offs + mtd->erasesize;\n+\t\t\tcurrent_offs = next_block;\n+\t\t\tcontinue;\n+\t\t}\n+\n+\t\tblock_remaining = mtd->erasesize -\n+\t\t\t\t  (current_offs & (mtd->erasesize - 1));\n+\t\tread_size = remaining < block_remaining ? remaining : block_remaining;\n+\n+\t\terr = mtd_read(mtd, current_offs, read_size, &ret_len, buf);\n+\t\tif (err) {\n+\t\t\tprintf(\"SPL: Read error at offset 0x%llx: %d\\n\",\n+\t\t\t       current_offs, err);\n+\t\t\treturn size - remaining;\n+\t\t}\n+\n+\t\tbuf += ret_len;\n+\t\tcurrent_offs += ret_len;\n+\t\tremaining -= ret_len;\n+\n+\t\tif (current_offs >= mtd->size) {\n+\t\t\tprintf(\"SPL: Reached end of device, read %zu/%zu bytes\\n\",\n+\t\t\t       size - remaining, size);\n+\t\t\tbreak;\n+\t\t}\n+\t}\n+\n+\treturn size - remaining;\n+}\n+\n static ulong spl_mtd_fit_read(struct spl_load_info *load, ulong offs,\n \t\t\t      ulong size, void *dst)\n {\n \tstruct mtd_info *mtd = load->priv;\n-\tint err;\n \tsize_t ret_len;\n \n-\terr = mtd_read(mtd, offs, size, &ret_len, dst);\n-\tif (!err)\n+\tret_len = spl_mtd_read_skip_bad(mtd, offs, size, dst);\n+\tif (ret_len > 0)\n \t\treturn ret_len;\n \n \treturn 0;\n@@ -52,17 +101,19 @@ struct mtd_info *spl_prepare_mtd(uint boot_device)\n int spl_mtd_load(struct spl_image_info *spl_image,\n \t\t struct mtd_info *mtd, struct spl_boot_device *bootdev)\n {\n-\tint err;\n+\tint err = 0;\n \tstruct legacy_img_hdr *header;\n \t__maybe_unused struct spl_load_info load;\n \tsize_t ret_len;\n \n \theader = spl_get_load_buffer(0, sizeof(*header));\n-\n-\terr = mtd_read(mtd, spl_mtd_get_uboot_offs(), sizeof(*header),\n-\t\t       &ret_len, (void *)header);\n-\tif (err)\n+\tret_len = spl_mtd_read_skip_bad(mtd, spl_mtd_get_uboot_offs(),\n+\t\t\t\t\tsizeof(*header), (void *)header);\n+\tif (ret_len != sizeof(*header)) {\n+\t\tprintf(\"SPL: Failed to read image header\\n\");\n+\t\terr = -EIO;\n \t\tgoto out_err;\n+\t}\n \n \tif (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&\n \t    image_get_magic(header) == FDT_MAGIC) {\n@@ -82,8 +133,15 @@ int spl_mtd_load(struct spl_image_info *spl_image,\n \t\terr = spl_parse_image_header(spl_image, bootdev, header);\n \t\tif (err)\n \t\t\tgoto out_err;\n-\t\terr = mtd_read(mtd, spl_mtd_get_uboot_offs(), spl_image->size,\n-\t\t\t       &ret_len, (void *)(ulong)spl_image->load_addr);\n+\n+\t\tret_len = spl_mtd_read_skip_bad(mtd, spl_mtd_get_uboot_offs(),\n+\t\t\t\t\t\tspl_image->size,\n+\t\t\t\t\t\t(void *)(ulong)spl_image->load_addr);\n+\t\tif (ret_len != spl_image->size) {\n+\t\t\tprintf(\"SPL: Failed to read full image: %zu/%u bytes\\n\",\n+\t\t\t       ret_len, spl_image->size);\n+\t\t\terr = -EIO;\n+\t\t}\n \t}\n \n out_err:\n","prefixes":["3/7"]}