From patchwork Fri Jun 12 21:29:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kamal Dasu X-Patchwork-Id: 1308528 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) 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=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=RYu+meLb; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=sgiE7Yxv; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49kDQR1rb9z9sR4 for ; Sat, 13 Jun 2020 07:29:51 +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=5Aaejqu2+V5ThGOoYcatJkMgtUdoONlyJwvNSocunxw=; b=RYu+meLbkC/OHGd2SrpdCPAy5g uFLFkB1CuxxjIs4WB4BCYy1wLFOEvnAWnypeXig432VBjLrcOb3HlW9C9KW1m34QUTJNZGbk/C6rU jRWw9T9hfyFLnwfJ0ZDv0udvyCvTqo089mlp+BqqP1XqFy8CIoXbfOaBZsyILZza1VW9b/lah2350 /BiWu305jZID2kXDvwlFlZwbG48Fn7bKUhZshp5g1GBIM5EYY+D/pHKfg6XD4Ic/602un7EmCTzxC ETyi65HsWYiqFVlqWNptwlgH9z9SUgIqzH6O7AOonvy+tBj+diJM8mu+irVMU2LltlhTtLUopEKwb rXvOg7yg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jjrEx-00064F-2e; Fri, 12 Jun 2020 21:29:31 +0000 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jjrEr-0005vb-Dq for linux-mtd@lists.infradead.org; Fri, 12 Jun 2020 21:29:26 +0000 Received: by mail-wr1-x443.google.com with SMTP id j10so11381569wrw.8 for ; Fri, 12 Jun 2020 14:29:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=CMSRdAMjqQ0hUIKg7+9PjXGS1txRLKEo1w8Yv1LWP4U=; b=sgiE7Yxvxl9Y4Ht4Q2v4oPYkEK0Fz7gmbTbu2x+0VwWkT/K/4p2dxYX7VhNh8hUVBA Oz/l6pMJiXtm4wbmZgJnDpBgP0urRmoMv3VUdADKZZGhBnGnh8i3yOSXXZSmtYpicVeX yCKhHihBQAua3m8VhYbr+dpuccfVP3MSR9axQu9Z2RigKYwKhYxB5FjO3nfuHrD4vvgz aIyHvaJEr2pc2bS+Rivuo7A0E0mYiqlxFUsMw0Yw6yNa9O/K7xr7l4R/s8iYlP0QeYtY kLnAG6JqtsTt2lX/JhBwTBepzmeWIxblqFc8hp8QmLfXnWi7U4QmpWKTSzgdoAx3VBui KlOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=CMSRdAMjqQ0hUIKg7+9PjXGS1txRLKEo1w8Yv1LWP4U=; b=V3kVoDikuPDLOnyTztiieWxSaLsuBhUM3uqhb+KB8UrgoLj6RqJ3vpBe/ZNHHSXLzM 6mloBBQISGSY5IxcBe6Cy9YbtVYYJjusYVCqCGehgXLj++dvfHHXkYDOjZSLKnOp4iPT +TzzkVRyj+RB50H24qenKYYdVNoyUecnTt2+MSrDJpVn95ntI6LdB8OyKZppCKbvoH63 Q5+GUKhrnFo6/gAoGc47ZvSWQAMIdXvjbHJwy7T1l/pkvOciqekHqIYPJuiZVnOVbh8y oW3gXDKtHAytQHRFS8ZLgRNBdeTF7cJuE1EtOHuXF6GN9HbDnwClKLlXHQoBkni0nDWO 9kZQ== X-Gm-Message-State: AOAM5338p2r5s8ocVRYS7rcsLTVdm0rB+DrtvI4UD9kBXSG3aj1w8F/Z kdsABohX3FXZzS42a5DnIaU= X-Google-Smtp-Source: ABdhPJyv5GIgPQ9eO6QSupsEk8hcs6qEXOwQe2ngWetm4fbiOaRcihoSEmG/ke54phMF/9AmFY5C4g== X-Received: by 2002:adf:a34d:: with SMTP id d13mr16218472wrb.270.1591997363791; Fri, 12 Jun 2020 14:29:23 -0700 (PDT) Received: from mail.broadcom.com ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id n189sm10442048wmb.43.2020.06.12.14.29.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jun 2020 14:29:23 -0700 (PDT) From: Kamal Dasu To: computersforpeace@gmail.com, kdasu.kdev@gmail.com, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com Subject: [PATCH v2 1/2] mtd: rawnand: brcmnand: Don't default to edu transfer Date: Fri, 12 Jun 2020 17:29:01 -0400 Message-Id: <20200612212902.21347-2-kdasu.kdev@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200612212902.21347-1-kdasu.kdev@gmail.com> References: <20200612212902.21347-1-kdasu.kdev@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200612_142925_469647_C50D1977 X-CRM114-Status: GOOD ( 11.02 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:443 listed in] [list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [kdasu.kdev[at]gmail.com] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from 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.29 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: bcm-kernel-feedback-list@broadcom.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org MIME-Version: 1.0 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org When flash-dma is absent do not default to using flash-edu. Make sure flash-edu is enabled before setting EDU transfer function. Fixes: a5d53ad26a8b ("mtd: rawnand: brcmnand: Add support for flash-edu for dma transfers") Signed-off-by: Kamal Dasu --- drivers/mtd/nand/raw/brcmnand/brcmnand.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c index 8f9ffb46a09f..0c1d6e543586 100644 --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c @@ -2953,8 +2953,9 @@ int brcmnand_probe(struct platform_device *pdev, struct brcmnand_soc *soc) if (ret < 0) goto err; - /* set edu transfer function to call */ - ctrl->dma_trans = brcmnand_edu_trans; + if (has_edu(ctrl)) + /* set edu transfer function to call */ + ctrl->dma_trans = brcmnand_edu_trans; } /* Disable automatic device ID config, direct addressing */ From patchwork Fri Jun 12 21:29:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kamal Dasu X-Patchwork-Id: 1308530 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) 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=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=gUWsX8Zm; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=OplEkeIl; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49kDQY3j1hz9sR4 for ; Sat, 13 Jun 2020 07:29:57 +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=yJGQwfrs18iv/73n0dMUz1VGF65jSS8Chyy2ul+9p0U=; b=gUWsX8Zm1x9TeQ17/466bnlWz+ jkTah6+GQiLlIo7QIjHP1jpTYpMjeYzuW89ZG7zBzlwJ6kM74RGlmFV1o7zqJQA5CH+JuNFfZBWef Bae6kCtzmcvRbkETYkUBbrUsjraGQyKEr186N3678OgOGONGQMg4h7PQ5cWxDfHvrzhoAb7Oqerul TdPmrizIhZuXkCBDULI2Ko0dYCuDzA8mZm3GKF3nXPvAcMYwAzyW0o2r/bylDopRif143Hnbflx6x jk0ZoMtBuuWhMqldLYy7LfXlS2GSiPjiK2eopi2pBYbkyXAjxbkTpbCMf6pfGPp+O4qbHV73cQCR3 QuItHYZQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jjrFC-0006Kx-DV; Fri, 12 Jun 2020 21:29:46 +0000 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jjrEu-00060F-VX for linux-mtd@lists.infradead.org; Fri, 12 Jun 2020 21:29:30 +0000 Received: by mail-wm1-x342.google.com with SMTP id l17so9182449wmj.0 for ; Fri, 12 Jun 2020 14:29:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=t7sh6l2f+5trgFJapdjMKhKvmvODdJp1FD96Ciw8Ol4=; b=OplEkeIlZyuHSfz2NDZ2KGM+1Nyb99WWYVd73hiBSL3+vJD2Xn0C4WVNTyq+WNQh93 QaHCI8OjUpCWhWDQyDAhbtZwAsjgjHgEzGaZn+sOlbFmkoZ6BXZwxt9N/sbpmCD8beZh CqhwVAK5KPdFJYP7t4eodQ18Dt3MqlnWcBg41BQFTLD+isWboFGXWhIh8WANF5SBB1Vf AgdodhXDa52etvebHhYCOLB9Y0d03kNpdVdeUMZgKFppNgH0RzY25moaK0lhHkruBNTR z8pTvAOt0twBNGtm7Q972mQULM/U/eQH+/gb/FA8d1AQN4YiMK33RLueAmgILSXzI7ob ezEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=t7sh6l2f+5trgFJapdjMKhKvmvODdJp1FD96Ciw8Ol4=; b=qp8MUqoJrqVrZ/2g3yGPak40vFQo7gTzIDQk4GXfkjd4rmaLK25tTxPKWbAGJdwPla S1sWnJjc6W5RfyO8u7doPNT1xYZMYlW1tx4O8da0HLSLpsaUskm1OTcnqK4BxjSrH2og ohRXHPtoPd2dyHbfTLFYwp8YV3rumE/1uKWn0fM8vXgRjknosGye0ZQRnICq14Z86e4B KKqfErz59P7OsGErM0kiu3+/gkM/t0Dl92svMsLoMhqgzFr/iwdeX550kR1GKsbG+TEZ 2Ux8o/E9mtkcRxJ8Wn0u9TBKksU28kP+7Exrh19jgT74YyEvbsAhOC/kBfHSHqVrC8MD P3VA== X-Gm-Message-State: AOAM532V1fvOLWIsTg4kxh/OgWX7JN2RxCCYVGmmBYixKzAAOTGc17Xz xqeK49ou8dakvIUWjGk0ZDE= X-Google-Smtp-Source: ABdhPJxQFwOtTuY9hFOELCASEz96m4UJNODfbkMBPykqB/GhLTej/gj4XR9KJ1Dmlglwp8YOjAfjCQ== X-Received: by 2002:a1c:bd86:: with SMTP id n128mr895811wmf.5.1591997367305; Fri, 12 Jun 2020 14:29:27 -0700 (PDT) Received: from mail.broadcom.com ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id n189sm10442048wmb.43.2020.06.12.14.29.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jun 2020 14:29:26 -0700 (PDT) From: Kamal Dasu To: computersforpeace@gmail.com, kdasu.kdev@gmail.com, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com Subject: [PATCH v2 2/2] mtd: rawnand: brcmnand: ECC error handling on EDU transfers Date: Fri, 12 Jun 2020 17:29:02 -0400 Message-Id: <20200612212902.21347-3-kdasu.kdev@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200612212902.21347-1-kdasu.kdev@gmail.com> References: <20200612212902.21347-1-kdasu.kdev@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200612_142929_023890_20AA53F1 X-CRM114-Status: GOOD ( 12.94 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:342 listed in] [list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [kdasu.kdev[at]gmail.com] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from 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.29 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: bcm-kernel-feedback-list@broadcom.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org MIME-Version: 1.0 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Implement ECC correctable and uncorrectable error handling for EDU reads. If ECC correctable bitflips are encountered on EDU transfer, read page again using PIO. This is needed due to a NAND controller limitation where corrected data is not transferred to the DMA buffer on ECC error. This applies to ECC correctable errors that are reported by the controller hardware based on set number of bitflips threshold in the controller threshold register, bitflips below the threshold are corrected silently and are not reported by the controller hardware. Fixes: a5d53ad26a8b ("mtd: rawnand: brcmnand: Add support for flash-edu for dma transfers") Signed-off-by: Kamal Dasu --- drivers/mtd/nand/raw/brcmnand/brcmnand.c | 26 ++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c index 0c1d6e543586..131d5d6e2626 100644 --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c @@ -1855,6 +1855,22 @@ static int brcmnand_edu_trans(struct brcmnand_host *host, u64 addr, u32 *buf, edu_writel(ctrl, EDU_STOP, 0); /* force stop */ edu_readl(ctrl, EDU_STOP); + if (!ret && edu_cmd == EDU_CMD_READ) { + u64 err_addr = 0; + + /* + * check for ECC errors here, subpage ECC errors are + * retained in ECC error address register + */ + err_addr = brcmnand_get_uncorrecc_addr(ctrl); + if (!err_addr) { + err_addr = brcmnand_get_correcc_addr(ctrl); + if (err_addr) + ret = -EUCLEAN; + } else + ret = -EBADMSG; + } + return ret; } @@ -2058,6 +2074,7 @@ static int brcmnand_read(struct mtd_info *mtd, struct nand_chip *chip, u64 err_addr = 0; int err; bool retry = true; + bool edu_err = false; dev_dbg(ctrl->dev, "read %llx -> %p\n", (unsigned long long)addr, buf); @@ -2075,6 +2092,10 @@ static int brcmnand_read(struct mtd_info *mtd, struct nand_chip *chip, else return -EIO; } + + if (has_edu(ctrl) && err_addr) + edu_err = true; + } else { if (oob) memset(oob, 0x99, mtd->oobsize); @@ -2122,6 +2143,11 @@ static int brcmnand_read(struct mtd_info *mtd, struct nand_chip *chip, if (mtd_is_bitflip(err)) { unsigned int corrected = brcmnand_count_corrected(ctrl); + /* in case of EDU correctable error we read again using PIO */ + if (edu_err) + err = brcmnand_read_by_pio(mtd, chip, addr, trans, buf, + oob, &err_addr); + dev_dbg(ctrl->dev, "corrected error at 0x%llx\n", (unsigned long long)err_addr); mtd->ecc_stats.corrected += corrected;