From patchwork Wed Apr 4 12:42:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abhishek Sahu X-Patchwork-Id: 894966 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="PgWFMTu/"; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=codeaurora.org header.i=@codeaurora.org header.b="Ek/qcME5"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="MlvIrGN7"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40GQdk47nQz9ryG for ; Wed, 4 Apr 2018 22:44:42 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=63hR4E3Qu9VwJ8zG6GUsTFTS7TCCKgFNZc99oNG3D3Y=; b=PgWFMTu/hbOydG8yqrbg3AszR3 7/sJkwm8ou2J28Pz1KKVunR/rpeEjJUc6He4bGfEl19nWh3+zWjiqY3ruoAwC4gNB+DAFf7u0eRbo KL5904zvDbu9MonCNixegzU0p/MLTOSNU/EVkOU54Zs5FDcTQ884OVAo1G1sE84VD5YHaJ+TF169t B9kNel0BO9V/30I3Xnk0XgqaFCECruVYjlA2ArdGS81phbjD7V8GwIJVY6NEylbyaqzn62oB/HkNH 7Y3f1iDukbnIHaj8mTT7sMgsCaxXUVItxljW62wmJYbhkLZWvlG3/JJpFuSwNqwDm24wEmb4b++eW YyreoOMw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1f3hmF-0002iY-Id; Wed, 04 Apr 2018 12:44:35 +0000 Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1f3hkl-0001sf-Pp for linux-mtd@lists.infradead.org; Wed, 04 Apr 2018 12:43:06 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id D192A60F6D; Wed, 4 Apr 2018 12:42:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1522845779; bh=ACgRFF6QWKAoA1zRrrJQDD9PGF9Hn3Apee+BE0bwC/g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ek/qcME5o/+X7pjYfpLVVGoxIBleSx7RgbsbX++d9DSiAfsgUEzHch0Ie3lr4SQx+ Ak2Xgpm9uF8QLcqMp/AVBg8d9ehNS44HWzKxDxRq5wZuDR960TM4x20BpY2yirYkdr kdo99eJkqhZTK6FyHXVDTbdh54i1WIdlC4hM5Qn4= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED, T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0 Received: from absahu-linux.qualcomm.com (blr-c-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: absahu@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 6C89160C66; Wed, 4 Apr 2018 12:42:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1522845778; bh=ACgRFF6QWKAoA1zRrrJQDD9PGF9Hn3Apee+BE0bwC/g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MlvIrGN7DdoEOx2DhI++o0c9Ebk0nhCuPrpKo4+3qX8yP1HSmVuXafVEQ4+wCuDCy uhwo+a4mbaL6jaQc6IW116ziCe1wC2IPaLrW1uQBxTZpqnTGc6R6xh4qEBnoP4Qx9p PfcH00PpHG8z5ECCfgBsyiyTNNZC7r2uriguhs6c= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 6C89160C66 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=absahu@codeaurora.org From: Abhishek Sahu To: Boris Brezillon Subject: [PATCH 3/9] mtd: nand: qcom: erased page detection for uncorrectable errors only Date: Wed, 4 Apr 2018 18:12:19 +0530 Message-Id: <1522845745-6624-4-git-send-email-absahu@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1522845745-6624-1-git-send-email-absahu@codeaurora.org> References: <1522845745-6624-1-git-send-email-absahu@codeaurora.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180404_054303_907307_8160A7A7 X-CRM114-Status: GOOD ( 16.32 ) X-Spam-Score: -2.4 (--) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-2.4 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at http://www.dnswl.org/, medium trust [198.145.29.96 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Archit Taneja , Richard Weinberger , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Marek Vasut , Abhishek Sahu , linux-mtd@lists.infradead.org, Cyrille Pitchen , Andy Gross , Brian Norris , David Woodhouse MIME-Version: 1.0 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org The NAND flash controller generates ECC uncorrectable error first in case of completely erased page. Currently driver applies the erased page detection logic for other operation errors also so fix this and return EIO for other operational errors. Signed-off-by: Abhishek Sahu --- drivers/mtd/nand/qcom_nandc.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/nand/qcom_nandc.c b/drivers/mtd/nand/qcom_nandc.c index 17321fc..57c16a6 100644 --- a/drivers/mtd/nand/qcom_nandc.c +++ b/drivers/mtd/nand/qcom_nandc.c @@ -1578,6 +1578,7 @@ static int parse_read_errors(struct qcom_nand_host *host, u8 *data_buf, struct nand_ecc_ctrl *ecc = &chip->ecc; unsigned int max_bitflips = 0; struct read_stats *buf; + bool flash_op_err = false; int i; buf = (struct read_stats *)nandc->reg_read_buf; @@ -1599,7 +1600,7 @@ static int parse_read_errors(struct qcom_nand_host *host, u8 *data_buf, buffer = le32_to_cpu(buf->buffer); erased_cw = le32_to_cpu(buf->erased_cw); - if (flash & (FS_OP_ERR | FS_MPU_ERR)) { + if ((flash & FS_OP_ERR) && (buffer & BS_UNCORRECTABLE_BIT)) { bool erased; /* ignore erased codeword errors */ @@ -1641,6 +1642,8 @@ static int parse_read_errors(struct qcom_nand_host *host, u8 *data_buf, max_t(unsigned int, max_bitflips, ret); } } + } else if (flash & (FS_OP_ERR | FS_MPU_ERR)) { + flash_op_err = true; } else { unsigned int stat; @@ -1654,6 +1657,9 @@ static int parse_read_errors(struct qcom_nand_host *host, u8 *data_buf, oob_buf += oob_len + ecc->bytes; } + if (flash_op_err) + return -EIO; + return max_bitflips; }