From patchwork Sat May 2 16:34:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boris Brezillon X-Patchwork-Id: 1281709 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=collabora.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=qxUJI0uw; 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 49Dvq76vXlz9sSk for ; Sun, 3 May 2020 02:34:59 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version: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:In-Reply-To:References: List-Owner; bh=7VgFZXriqLC/5NfQI6VSgXp3LQ2+hE66KEGZ8j8cIys=; b=qxUJI0uwhyl+EU c/B1yRQqF3tnwSoWvuCJc2rcofvfoXkO5nsvdhC17cVUNwtkrmH5pID0qYUCwx3qro3lJglYhUJ/Q B5J8OnQeQsaE+O+z1wyiN9MWqw5W0od+ObsewjWXI8FT3KFt6J54eJh7NZG/gmOJr3XJ4ZEfedXfJ yIHzqGYLJ3dC+2aFHML4I/o69zomJtI2r2/L6UM+o2QnUhf/o71wqSt8Y7XDzTQOMQcYTAY7hP7mQ oPi7SbhFl1dke3IQHafHTV3k3j7ymtVRiveDu55p3d9Jdh3wo0oT+K6Ov3rc2qGvzGWtySMB8Hy95 8V1cyWLbNhZAGSPVXaHQ==; 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 1jUv6D-0000nR-Rh; Sat, 02 May 2020 16:34:45 +0000 Received: from bhuna.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e3e3]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jUv67-0000kN-SZ; Sat, 02 May 2020 16:34:41 +0000 Received: from localhost.localdomain (unknown [IPv6:2a01:e0a:2c:6930:5cf4:84a1:2763:fe0d]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: bbrezillon) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 35F9E263955; Sat, 2 May 2020 17:34:36 +0100 (BST) From: Boris Brezillon To: Kamal Dasu , Miquel Raynal , linux-mtd@lists.infradead.org Subject: [PATCH 0/3] mtd: rawnand: brcmnand: Convert to exec_op() Date: Sat, 2 May 2020 18:34:29 +0200 Message-Id: <20200502163432.1543243-1-boris.brezillon@collabora.com> X-Mailer: git-send-email 2.25.3 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200502_093440_051019_12C6C182 X-CRM114-Status: GOOD ( 17.11 ) X-Spam-Score: -0.0 (/) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 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: Stefan Wahren , Florian Fainelli , Vignesh Raghavendra , Scott Branden , Tudor Ambarus , Ray Jui , Lee Jones , Eric Anholt , Boris Brezillon , bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, Richard Weinberger Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Hello, A bit of context to explain the motivation behind those conversions I've been sending for the last couple of weeks. The raw NAND subsystem carries a lot of history which makes any rework not only painful, but also subject to regressions which we only detect when someone dares to update its kernel on one of those ancient HW (I'm not saying brcmnand is one of those ancient hardware BTW, but others in the NAND directory are pretty old). While carrying drivers for old HW is not a problem per se, carrying ancient and unmaintained drivers that are not converted to new APIs is a maintenance burden (again, that does not really apply to brcmnand, as Kamal as always prompt to reply to patches targeting this driver), hence this massive conversion attempt I'm conducting here. So here is a series converting the brcmnand NAND controller driver to exec_op(). It's worth noting that I took the simplest path for this implementation, using low-level operations for everything that's passed to exec_op(). There are 2 reasons to that, the first one is that I don't have the hardware to test and also don't know how this series will be received so, I decided to take the quickest approach. But even if we put that aside, I'm not sure the extra complexity implied by the specialized operation handlers would be worth it, given that the read/write page paths (those where performance really matters) are already optimized (see the {read,write}_page[_raw]() implementations). That leaves us with things that are only executed at boot time (ID, PARAM_PAGE reads), or things that are simple enough (STATUS read, ERASE) to not generate to much overhead if we don't use the dedicated hardware functions. I'm of course open to reworking that part if someone can validate my changes and come up with numbers showing that the dedicated functions approach improves perfs. Regards, Boris Boris Brezillon (3): mtd: rawnand: Add the concept of destructive operation mtd: rawnand: bcrmnand: Add exec_op() support mtd: rawnand: brcmnand: Get rid of the legacy interface implementation drivers/mtd/nand/raw/brcmnand/brcmnand.c | 248 +++++------------------ include/linux/mtd/rawnand.h | 11 + 2 files changed, 66 insertions(+), 193 deletions(-)