Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp12222imm; Thu, 10 May 2018 14:31:03 -0700 (PDT) X-Google-Smtp-Source: AB8JxZo/FFbrhXy137yT883dPn70MpgNBXGRHGJkerOzahYgHapGhAEDu7iUGGwaYHBtU1YkFW2s X-Received: by 2002:a17:902:b492:: with SMTP id y18-v6mr2871019plr.2.1525987862983; Thu, 10 May 2018 14:31:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525987862; cv=none; d=google.com; s=arc-20160816; b=nz0othqpwt5tcabw817KPBB7rb5h4ARBiEA6f05dfM85XSrXvepl1JvLYyVYGTlLTS VGG6dfOF9sYNjx+P4YuR7IaIp0GUREWZ09MOgfdnMqI8N98XdkbF7Au0hdpGq9Eh7Fzb X4mGXy5NxHwvwNX647s0dfYOSfXQRx1wgd2pbAPLgbZ/l4KIk98CjSAuB/RJMEFDgDsz a5CoxkZ2hVp7c+eT1UMtz2h36ZpH2M6St3CHyS8VMqLNVPlJgUNdVC3jrsswYFGJoBBj PDzoBhn1PVNHd8qG1eSicjVJv0fzIxSrAokyx7C1soHHmRlnj3NWk7q+6Sc1/0tf9phY +BdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:message-id:date:subject:cc:to :from:dkim-signature:arc-authentication-results; bh=TuUWQzfS25BIpEnAJ9Ran7v1Es5HdNdVW0aiAXGfIeU=; b=0+ZMMH7RDSJWX2UB+0OV8SUg4z6IFLmq+T9tzQjRFJQVISjzt3GkjU3Sm9kTETLgG9 VCbU7Mw4pkrh9G8KS61w2R1RBGl1il/2mF6KGDuOCOdbaEqd7KVLJR7bezjT8xwzI2ow vlX95pQNdHfEw6qikY+teHVb294ekBfa3s5flg8Tj0yXR0HS1uzk1sQsoD8umaZydmp8 ud2EmRx0vgr7F5/uUf8GOBJrmD4mHkNzXvFhbxxlX544nZa9D+7wR4tD13Ewv/75cpTq yyMp/71gJ/VDpbkeCa7Iox12JizaQNT26khE4+YofdU4XsXhzG6ApW0jL6CEhzXnNxfg CcmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nokia.onmicrosoft.com header.s=selector1-nokia-com header.b=pPMR8ank; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nokia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m15-v6si1326402pgu.352.2018.05.10.14.30.48; Thu, 10 May 2018 14:31:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nokia.onmicrosoft.com header.s=selector1-nokia-com header.b=pPMR8ank; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nokia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752637AbeEJV3D (ORCPT + 99 others); Thu, 10 May 2018 17:29:03 -0400 Received: from mail-he1eur01on0131.outbound.protection.outlook.com ([104.47.0.131]:36644 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752416AbeEJV3B (ORCPT ); Thu, 10 May 2018 17:29:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia.onmicrosoft.com; s=selector1-nokia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=TuUWQzfS25BIpEnAJ9Ran7v1Es5HdNdVW0aiAXGfIeU=; b=pPMR8ankVx1T8jXcB+PcW8x0Gy88tPKNxNN10Nu3uM4DbNNSOhGcVWJmzHFSivFv+BSyxI/wFYsAj2Me63ZHkK48S2t+f0IezFS9E4vbPdiDkH0eerF0b+G+CgC5QE5tk8MjMt1hbVstjPtitYkHZ0L+TCBQalbLHJ9PFbn06wg= Received: from cobuntu-jwan.gainspeed.nsn-rdnet.net (131.228.32.160) by AM4PR07MB1601.eurprd07.prod.outlook.com (2603:10a6:200:25::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.755.13; Thu, 10 May 2018 21:28:53 +0000 From: Jane Wan To: Boris.Brezillon@bootlin.com, miquel.raynal@bootlin.com, dwmw2@infradead.org, computersforpeace@gmail.com, richard@nod.at, marek.vasut@gmail.com, yamada.masahiro@socionext.com, prabhakar.kushwaha@nxp.com, shawnguo@kernel.org, jagdish.gediya@nxp.com, shreeya.patel23498@gmail.com Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, ties.bos@nokia.com, Jane Wan Subject: [PATCH v6] mtd: rawnand: use bit-wise majority to recover the contents of ONFI parameter Date: Thu, 10 May 2018 14:28:37 -0700 Message-Id: <1525987717-31675-1-git-send-email-Jane.Wan@nokia.com> X-Mailer: git-send-email 1.7.9.5 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [131.228.32.160] X-ClientProxiedBy: HE1PR0802CA0023.eurprd08.prod.outlook.com (2603:10a6:3:bd::33) To AM4PR07MB1601.eurprd07.prod.outlook.com (2603:10a6:200:25::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:(109105607167333);BCL:0;PCL:0;RULEID:(7020095)(4652020)(8989080)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(8990040)(2017052603328)(7193020);SRVR:AM4PR07MB1601; X-Microsoft-Exchange-Diagnostics: 1;AM4PR07MB1601;3:+rQirc/sjs7UbTthQSu7/G4M09bMwQNwIVDcM/mNcgbNiFBYOunv4vILAB2XE29S5a9dTIJdRrQ4CYXFBA1hZOBYYsVzzVWNLBde3EprkKHXThh2W/ZVduBgZU/gLrF6Z7pQBUrfenjWuWfPSohpRDCRug1NFd7QBQyNsRk4I68iWrxJQfs4F3j4799ckopheV6V06ELBIAD+VhzQUbEj1hDpZNkfOY9oceICqY9Eo1Km8jg0bRaub0oC8ND1PxocGCjRdwQZUFKGgl8eRoRTSMknP614wltccLKWl8kWaA=;25:hZCXJ8Wn5/nUTThdbhMkW2Ejol6oePVJk2n6q5O3dU/psQIxOVrA5Z58oHDoGDqdmM8EEk4NGckshYXDI3GiwEB0HIHfHupVufLSRHxbQyiHXAX3xge793c9qDnV7SAVHZvtFJ2CdhZ0jkOmsy/qb/A7fq0nSHc36E9R1PD9plgKyjwoqTnrjGJCT5GNaBOpNqPOXea0hAazsMhdVE/7uuc5VUvOJvYxc/edMbaL/g86GPiRs9jRq1FPLLQb5NJykCdRV+rXV3jVpx7Z1vgCD3sTLLCyA7sLmWWfiyCaOKuUMaDb+DCXYvX46y+zhoANyCP3jYThNcj7F13AcAC15g==;31:cFSmjQLld832Nk9zaXzrR9JpgJYbOOe7tJJuXLKExDMoCxUnxjYaLroNq3g23qvwppM9lzcnnGNHra4YsKMN+C45XDK8GjUteSLYqXluMODPoaa/0wuV9YFTcEi+13m/4gM8PjtdIZ1tQHObw5KycXiDRaLWWdtjRqpshuI4tJa5sYkZvwjk6FidMsBbwK4zw8CwPZNVFsOTt8SjsoGgnfCFUPDQ5HaaCiyvreBVmgU= X-MS-TrafficTypeDiagnostic: AM4PR07MB1601: X-Microsoft-Exchange-Diagnostics: 1;AM4PR07MB1601;20:bpzaDQrfbSbMBnr+j9tNC/HiAieDBpDXYHXWa319GUIXBGRlL6iDR52LqWXssMg9SCpZ6R1g3u9XyeuUPdfPgsWjIbfFkB4GjCMYKzE466xRf0aoeMTgDH94pj43K1hVoReCSb8OhmTPYyOsWCw9ApshqdzqSDnq3m3ztwB0Ckgvk/ZfPzxp1f2+JM144DlrGmDb7WJWyikvIUpQEzDNWAyHFGiGkR6XC0a2QZXEzi7XsJ0YpmlSWLLj8W+eeuomhog5ZnpYhp4z8AavzlJu5TMoSJVHTq0Ee6G1+V9OzEi9UTvFmkuv14SAUhurq3sDHJLEJmSKAtsT61snR17iZ6bXaCA+NpvRSss1pg3G+75GWHLeS9rsrNWyCCBMTmtwtdTObpcxQt8SJY4SRJJZFU3T6a0Sm+g68mXWV8pmFU59kocMwKbs64LBMB+9Dt/pJriBM0ciWPXlvHTI9cuwISaAPDGoZbLNoPveDfyYvVxnE7eRfPhyjwZXiWStNDD9;4:G3kvOaRNdV8jsaTpWbmLf0acJqERfe1ksw4wdkZ+L5bpus7ka6PDbjjrQvSNFRgNRhFHXsbu3qXTnG9TeqjZuNddSfNQThlBq8vQ2cpSuIGIwrLWT4gJnXMKZBHVaYeGJOWah91zhL3NVlICNIMyhynQJLUy0MI0OWeKHYKtlV6KAJCBunN9b2yIQJurEXjLSPvmVHiT305O+Bgkkfomq9wqZwnyQXXHcWrvIRd/l0WRTKZwCAZgmQ0/uBdIzbvopO5LmGNpdBFHY6blO2SSW+UthGPcKGhjSXFBkQXZhj3UkCPUMYuXrepQccKShVk+1nTpcIdbilhyzt63FqT/dN8R1tMGCj/Xu4MeyigkAtk= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(82608151540597)(109105607167333); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(3231254)(11241501184)(806099)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123562045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:AM4PR07MB1601;BCL:0;PCL:0;RULEID:;SRVR:AM4PR07MB1601; X-Forefront-PRVS: 066898046A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(376002)(39860400002)(39380400002)(366004)(346002)(396003)(189003)(199004)(105586002)(86362001)(47776003)(386003)(66066001)(26005)(51416003)(6506007)(48376002)(305945005)(7416002)(2906002)(50466002)(3846002)(52116002)(106356001)(8656006)(486006)(59450400001)(6346003)(316002)(68736007)(6116002)(7736002)(956004)(97736004)(81166006)(107886003)(4326008)(53936002)(39060400002)(8676002)(6512007)(8936002)(25786009)(50226002)(478600001)(4720700003)(5660300001)(36756003)(16526019)(81156014)(186003)(16586007)(476003)(2616005)(6666003)(6486002)(921003)(1121003);DIR:OUT;SFP:1102;SCL:1;SRVR:AM4PR07MB1601;H:cobuntu-jwan.gainspeed.nsn-rdnet.net;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; Received-SPF: None (protection.outlook.com: nokia.com does not designate permitted sender hosts) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=jane.wan@nokia.com; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM4PR07MB1601;23:w8Q1/kD1pIUxyOuYmM52zkLudeOlkJ78e6OxkF7CU?= =?us-ascii?Q?1M3ePDsBdaPyyExueNT48El/AZYKJvFcbTAj6mdOb+X4rJ5RHfT5UiLYcCBo?= =?us-ascii?Q?gm5SguMtFhWDsvnTLsP85wcKd8TOgs9CnNorp0POPlLupel/M7hfkGv4foWn?= =?us-ascii?Q?cNnGQ3KKkqu63xDS4RUIrTkMzIcuSqLIl0492ui14lcPA3Xk/3fPWSLGxDtC?= =?us-ascii?Q?3UIYdPlLpVJ4TmYEsfCBvcAhs7NnITJMJaRb92plxkuz5uFuiBNLwx0g8a/X?= =?us-ascii?Q?tgrTRVwOptS251jLAYWKfAbyrBIlFkcOlveUfczsAKkQzBmWwKspxvx+PJnP?= =?us-ascii?Q?oZ51oSe6IzOaXGhLjLSJIKIp3x8DJeOk0q72vA51lIhlkZYE9pGNi4g6tMeH?= =?us-ascii?Q?6Km43462wjzD+vLwDnC9v7QtHqjq7pg30km1f52C8ggjRlEfe58rGwfA4uz1?= =?us-ascii?Q?A6LL8vLxEfYMC5BYtBu/abI7cR2TXg4ou/NqsW23mfXr9g9mh5GEhkE5SnKj?= =?us-ascii?Q?RpR/zo0eQv72g0GWfzU3hYGJX1MYqB60g4Fmw3iuWmOMxcm1RXhszssRISgc?= =?us-ascii?Q?gYQyK9qgj/jc0sEXjzaaURSqexXI8jCHxfe7+/FPiZ3P9dbmtD7k1UApL+Wy?= =?us-ascii?Q?0x0n88+oG6jlIp9ApGwHEG1OYHeeoOYqDm/ATfujQovbj0P3GC3i0lkh70NE?= =?us-ascii?Q?2jGEGY2L/vfmqj/nNNjUPV49USS/rJXZz15illDW5QFW2AwoTHhOZ5iP2mFM?= =?us-ascii?Q?864UVTmnCfl2adfoAmmbjgBB1fl4w4D8dXo4rg3Nk0zIxe8uz18pIB0u0td7?= =?us-ascii?Q?9tor/zy22xqn8jv5/tKxpXd2ewPUb3X/yIdio6hxOuMXw9d1+RPHZQalxlZe?= =?us-ascii?Q?BmfZU0Hha737VI2zz7mAZfoF9hojyQffbgif+he3oqNM0WhWQSqgqH9dRQbP?= =?us-ascii?Q?kl9QcWkpLK6202wStCX327ybZSpU1257Gp/6svwoUsrFbHna/jHnvLb5s9Be?= =?us-ascii?Q?WrLxj6JtblIag0eZXjaxMtBmkETu34uX6HWWEjzTa+F6esdSOd554F6Yc8k5?= =?us-ascii?Q?L/O7VtI+Jd/izAMHiOYJmZOPHQsdURg3UfQiP5FCqjum3Dh7S62PgPzkSqps?= =?us-ascii?Q?q/JZnHzwfTmue5u1v1WjWGmw1+ccsJXbILSswLjSSXt1zdGNloE6h4eoFgoJ?= =?us-ascii?Q?nUIaz83C8RbIapp++Byc/gk00p+JMdT10vQ2SCT+rxgPEkAngr+p8pxRv3Mi?= =?us-ascii?Q?NkrYZzEXMMlizR/UewmsJWZk8Woayc6todh61DWhSbRMTewBP7ZOojooV/g2?= =?us-ascii?B?QT09?= X-Microsoft-Antispam-Message-Info: 7F/I7flatsz370JOKNcgYNEO4wk3fB9H7yqRAGEJA/DefZJu5vD32ce7spXPpIB2cKrUlU33DGnBL6a/ZLhkHpY50SbjRMhAPrurTwYyEWtoAVF5+LNJrzj/HxDTVGwSQj6lIfJ90q8Qud3P+CT6IWuNxzgXM+SS6HSYzDrIpLs1v0Vos9pvjMEUU/pxgF8uFRrXSq+E7ZFD7yYB0IIoWL496cIl0TumFAK2Bqw2Hf8= X-Microsoft-Exchange-Diagnostics: 1;AM4PR07MB1601;6:0A5izozw7T3v7o+e16xqFLe82Z2/yE3ytR65cuN4k3WkDY5H27SUrQhxtzojZThC1bzGpHi7bfeNcc4dE+PZ5Es/lPUap6ig1bW6Tl8Fb7XwRD0GB3O6nDFb57h20DksEd32ud1Jfm82uLDjtPWLPgY2t9cnFpXeuYn+a3FFGRdFFqVHmEPZiGCCuW9LIm4iZPmeWmLGs92Vcpymo8w4I07hZmq2SyuUJimx1Bl+9nBTrozLpK4sGRMiocamS/GlkiYTAIksARuBpHIpOlGvG6/VgIS/sx1KvD5PD7rPfuzcx1YC5x2D9BnCgYqx/1YQz7UYIf8BxcCEvwnqJNhNlS5XBGJziWzoyOKSAmL7pN6SbGsOFMOA+eeX2mmtWCIQAGIUg3lZsTBJBmn5lizVQYJ7VIJtgYwgZ5nWIfkcykqWCmtYxW85LuKt0vUG37Q29cKTi87lk3zCLIB2wUc2ZA==;5:xu2PsQ84VRWMLjJzIqn5VEMZ9gi+mXJYr+GZ9ZlK1VtHPbV+iLnK//L4Zp/Vms9yIdUFqyMcuVmDIkd0num4vqRcWxFVCHeYH+VwL6eWu5X4/1GOS/3YYBr2u+KQXP65b+mxIp45I+UyW9s+sz8jb/rmankasSsvOOavz3aIClM=;24:Dy63Ojc6l5nZwfMPIbse2iJnR7ddg0y97CY6bUSKXDjMJYyzGTJMI9eY74Ri/1LOui3EAORZg5qbY2FwMasFPaPb2AX4sqE06GTgWmp3aOw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM4PR07MB1601;7:P3JeT3F+PZSdeO5FwcpGl73Hrq49V8H5Dpbzg76Gnx/DSr8+H9eCvFwn4B5MufBI9LQ8nWzCX7vCUF847+Mv56ju0rbtr9q8PJBwD1vCbdYjKPlXv14QH7MZo1j2VDCDw/qSXlptLvjyqT4dv4yOMlaY8rS1dad/Znctwcc9IISTKA80y5kA4m0fyOtdtYeml2nlx3oNOoDVBQuRky/t1F9bF7oy/EckIkX8wkwsDOsejxQT51HLP+CiOBy2lEIn X-MS-Office365-Filtering-Correlation-Id: 1df9c17d-83a3-453b-7e52-08d5b6bd09f2 X-OriginatorOrg: nokia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2018 21:28:53.6943 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1df9c17d-83a3-453b-7e52-08d5b6bd09f2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR07MB1601 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Per ONFI specification (Rev. 4.0), if all parameter pages have invalid CRC values, the bit-wise majority may be used to recover the contents of the parameter pages from the parameter page copies present. Signed-off-by: Jane Wan --- v6: support the cases that srcbufs are not contiguous v5: make the bit-wise majority functon generic v4: move the bit-wise majority code in a separate function v3: fix warning message detected by kbuild test robot v2: rebase the changes on top of v4.17-rc1 drivers/mtd/nand/raw/nand_base.c | 52 ++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c index 72f3a89..acf905c 100644 --- a/drivers/mtd/nand/raw/nand_base.c +++ b/drivers/mtd/nand/raw/nand_base.c @@ -5087,6 +5087,35 @@ static int nand_flash_detect_ext_param_page(struct nand_chip *chip, } /* + * Recover data with bit-wise majority + */ +static void nand_bit_wise_majority(const void **srcbufs, + unsigned int nsrcbufs, + void *dstbuf, + unsigned int bufsize) +{ + int i, j, k; + + for (i = 0; i < bufsize; i++) { + u8 cnt, val; + + val = 0; + for (j = 0; j < 8; j++) { + cnt = 0; + for (k = 0; k < nsrcbufs; k++) { + const u8 *srcbuf = srcbufs[k]; + + if (srcbuf[i] & BIT(j)) + cnt++; + } + if (cnt > nsrcbufs / 2) + val |= BIT(j); + } + ((u8 *)dstbuf)[i] = val; + } +} + +/* * Check if the NAND chip is ONFI compliant, returns 1 if it is, 0 otherwise. */ static int nand_flash_detect_onfi(struct nand_chip *chip) @@ -5102,7 +5131,7 @@ static int nand_flash_detect_onfi(struct nand_chip *chip) return 0; /* ONFI chip: allocate a buffer to hold its parameter page */ - p = kzalloc(sizeof(*p), GFP_KERNEL); + p = kzalloc((sizeof(*p) * 3), GFP_KERNEL); if (!p) return -ENOMEM; @@ -5113,21 +5142,34 @@ static int nand_flash_detect_onfi(struct nand_chip *chip) } for (i = 0; i < 3; i++) { - ret = nand_read_data_op(chip, p, sizeof(*p), true); + ret = nand_read_data_op(chip, &p[i], sizeof(*p), true); if (ret) { ret = 0; goto free_onfi_param_page; } - if (onfi_crc16(ONFI_CRC_BASE, (uint8_t *)p, 254) == + if (onfi_crc16(ONFI_CRC_BASE, (u8 *)&p[i], 254) == le16_to_cpu(p->crc)) { + if (i) + memcpy(p, &p[i], sizeof(*p)); break; } } if (i == 3) { - pr_err("Could not find valid ONFI parameter page; aborting\n"); - goto free_onfi_param_page; + const void *srcbufs[3] = {p, p + 1, p + 2}; + + pr_err("Could not find valid ONFI parameter page\n"); + pr_info("Recover ONFI params with bit-wise majority\n"); + + nand_bit_wise_majority(srcbufs, ARRAY_SIZE(srcbufs), p, + sizeof(*p)); + + if (onfi_crc16(ONFI_CRC_BASE, (u8 *)p, 254) != + le16_to_cpu(p->crc)) { + pr_err("ONFI parameter recovery failed, aborting\n"); + goto free_onfi_param_page; + } } /* Check version */ -- 1.7.9.5