From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1522EC25B10 for ; Mon, 13 May 2024 12:55:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=usRFf5aPqqZmK7K2XFtONtyZpOA6XbL91P8C0x290Sw=; b=xGLnTm7TxwRsXE lGJmhM26sOVO9VxcA4b1Wlw1poL7YX4hALwzBbNqmYf+IO1zzsVEzA8lHqfCMvHBj9Y+ePCiWVIdk Qz+sSarSpViqkC6cMnvKbPJRO1qzWgf/IRpwU2/zl1GlgXKT62f8rEZDBQEjOQJ/Lm+rTRHYTwge1 m6CErs+m3NSZsSMbvh3pVT8iM56TV/N06wUDMfx6XSecg07e4Dv2H79zDpIgEzIl0xxSpSOgAGiSr vuTo1L7TpPqiSuVwTvxSLRdh03ULu8VUmz6/q3oVS+RMfSr5gfdh29FvdTsi9ZZbPyKKgiTgVhTmz KDAfulYHYhvoSobBDqrA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s6VDU-0000000Ctma-41GE; Mon, 13 May 2024 12:55:44 +0000 Received: from relay7-d.mail.gandi.net ([217.70.183.200]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s6VDR-0000000Ctl8-3hfp for linux-mtd@lists.infradead.org; Mon, 13 May 2024 12:55:43 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 3EE4920008; Mon, 13 May 2024 12:55:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1715604938; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fXOKlipIeocUQzOfwGKn0MBsA79zn2u746LrpAvDZD0=; b=g1i1Da3kP+zjQ7HKZWHzUahbiO4ThpmVouTm7yztf8HeS5gcwIHXP7qo/inH9mWg9dtQYu a84Jou++bHYqc8cyKn44eltgjNfGbXS4gIFGVHjAIli/fAOqieQrOP2HC0/T/msLd8W62d fQFM3dr4k2RcXZOPfYFNxWohgnBSwALgGdQsvlsHriimS7UhROuN7tcqMfvIciPmgo3EUX Mg7Ijh3SNR1Zxk4i5v21p0PBHyfRwj3ID4wnOmhG2sRFSwkai/5ilRxHjRfC4st4Hmt7Wa G8Pmje9X5h5B9TZTjZ1EPj98zul9pTy+L8dK09WQ5D+3igRRnG49O2OpITV3FA== Date: Mon, 13 May 2024 14:55:36 +0200 From: Miquel Raynal To: Sascha Hauer Cc: Richard Weinberger , Vignesh Raghavendra , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 2/3] mtd: nand: mxc_nand: implement exec_op Message-ID: <20240513145536.71145b65@xps-13> In-Reply-To: References: <20240508-mtd-nand-mxc-nand-exec-op-v2-0-6b7366b7831f@pengutronix.de> <20240508-mtd-nand-mxc-nand-exec-op-v2-2-6b7366b7831f@pengutronix.de> <20240513091902.2c00d30a@xps-13> <20240513093256.363861d1@xps-13> Organization: Bootlin X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-GND-Sasl: miquel.raynal@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240513_055542_219025_C804A2ED X-CRM114-Status: GOOD ( 42.20 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgU2FzY2hhLAoKPiA+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBvcC0+bmluc3RyczsgaSsrKSB7 Cj4gPiA+ID4gKwkJaW5zdHIgPSAmb3AtPmluc3Ryc1tpXTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJ bmFuZF9vcF90cmFjZSgiICAiLCBpbnN0cik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCXN3aXRjaCAo aW5zdHItPnR5cGUpIHsKPiA+ID4gPiArCQljYXNlIE5BTkRfT1BfV0FJVFJEWV9JTlNUUjoKPiA+ ID4gPiArCQkJLyoKPiA+ID4gPiArCQkJICogTkZDIGhhbmRsZXMgUi9CIGludGVybmFsbHkuIFRo ZXJlZm9yZSwgdGhpcyBmdW5jdGlvbgo+ID4gPiA+ICsJCQkgKiBhbHdheXMgcmV0dXJucyBzdGF0 dXMgYXMgcmVhZHkuICAgIAo+ID4gPiAKPiA+ID4gVGhpcyBpcyBubyBsb25nZXIgYSBzdGFuZGFs b25lIGZ1bmN0aW9uLCBtYXliZToKPiA+ID4gCj4gPiA+ICJUaGUgY29udHJvbGxlciBoYW5kbGVz IHRoZSBSL0IgcGluIGludGVybmFsbHksIHRoZXJlZm9yZSB0aGVyZSBpcwo+ID4gPiBub3RoaW5n IHRvIGRvIGhlcmUuIiAgCj4gPiAKPiA+IEFuZCB0aGlzIGlzIGFjdHVhbGx5IHZlcnkgd3Jvbmcu Cj4gPiAKPiA+IFlvdSBzaG91bGQgY2FsbCB3YWl0X29wX2RvbmUoKSBpbnN0ZWFkLgo+ID4gICAK PiA+ID4gICAKPiA+ID4gPiArCQkJICovCj4gPiA+ID4gKwkJCWJyZWFrOwo+ID4gPiA+ICsJCWNh c2UgTkFORF9PUF9DTURfSU5TVFI6Cj4gPiA+ID4gKwkJCWlmIChpbnN0ci0+Y3R4LmNtZC5vcGNv ZGUgPT0gTkFORF9DTURfUEFHRVBST0cpCj4gPiA+ID4gKwkJCQlob3N0LT5kZXZ0eXBlX2RhdGEt PnNlbmRfcGFnZShtdGQsIE5GQ19JTlBVVCk7ICAKPiA+IAo+ID4gQWN0dWFsbHkgdGhpcyBpcyBu b3QgdGhlIHJpZ2h0IHBsYWNlLiBZb3Ugc2hvdWxkIHRyaWdnZXIgdGhlIHRyYW5zZmVyCj4gPiBm cm9tIGNvbnRyb2xsZXIgU1JBTSB0byBOQU5EIChhbmQgdGhlIG90aGVyIHdheSBhcm91bmQpIGlu IHRoZQo+ID4gTkFORF9PUF9EQVRBX09VVF9JTlNUUiBjYXNlLgo+ID4gCj4gPiBIZXJlIHlvdSBz aG91bGQganVzdCBjYWxsIC0+c2VuZF9jbWQuICAKPiAKPiBJIHRyaWVkIHRvIGdldCBhd2F5IGhl cmUgd2l0aCB1c2luZyB0aGUgc3RhbmRhcmQgbmFuZF93cml0ZV9wYWdlX3JhdygpCj4gZnVuY3Rp b24uIFRoaXMgZG9lcyBtdWx0aXBsZSBOQU5EX09QX0RBVEFfT1VUX0lOU1RSIG9wcyBiZWZvcmUg ZmluYWxseQo+IHNlbmRpbmcgYSBOQU5EX0NNRF9QQUdFUFJPRyBjb21tYW5kLiBXaXRoIHNvZnR3 YXJlIEJDSCBFQ0MgSSBjb2xsZWN0IGFsbAo+IGRhdGEgYmVpbmcgd3JpdHRlbiBpbiBtZW1vcnkg YW5kIGNvcHkgaXQgdG8gdGhlIGNvbnRyb2xsZXIgU1JBTSBlbiBibG9jLgo+IEkgaGF2ZSB0byBk byB0aGlzIGFmdGVyIHRoZSBmaW5hbCBOQU5EX09QX0RBVEFfT1VUX0lOU1RSIG9wLiBEdXJpbmcg YQo+IE5BTkRfT1BfREFUQV9PVVRfSU5TVFIgSSBkb24ndCBrbm93IGlmIHRoaXMgaXMgZ29pbmcg dG8gYmUgdGhlIGxhc3Qgb25lCj4gb3IgaWYgb3RoZXIgTkFORF9PUF9EQVRBX09VVF9JTlNUUiBv cHMgZm9sbG93LCBzbyBJIGRvIHRoZSBjb3B5IHRvIFNSQU0KPiByaWdodCBiZWZvcmUgYSBOQU5E X0NNRF9QQUdFUFJPRy4KCkkgZnVsbHkgdW5kZXJzdGFuZCB0aGUgbWluZHNldCwgYnV0IHdlIGhh ZCB0b28gbWFueSBpc3N1ZXMgd2l0aCB0aGlzCnRoaXMgdXNpbmcgLT5jbWRmdW5jKCkgYW5kIC0+ Y21kX2N0cmwoKSwgc28gd2UgaW50cm9kdWNlZCAtPmV4ZWNfb3AoKQpleGFjdGx5IGZvciB0aGlz IHB1cnBvc2U6IGNvbnRyb2xsZXIgZHJpdmVycyBzaGFsbCBub3QgdHJ5IHRvIGd1ZXNzCndoYXQg dGhlIGNvcmUgd2FudHMuIFRoZSBjb3JlIG5vdyBwcm92aWRlcyB0aGUgZnVsbCBvcGVyYXRpb24g YW5kIGFsc28gYQp3YXkgdG8gY2hlY2sgaWYgdGhlIG9wZXJhdGlvbiBpcyBzdXBwb3J0ZWQuCgpT byBpZiBzb21ldGhpbmcgaXMgdW5zdXBwb3J0ZWQsIGp1c3QgcmVwb3J0IGl0IGlzIHVuc3VwcG9y dGVkLgoKPiBJIGNvdWxkIG1vdmUgdGhlIC0+c2VuZF9wYWdlKCkgY2FsbCB0byBOQU5EX09QX0RB VEFfT1VUX0lOU1RSLCBidXQgdGhlbgo+IEkgaGF2ZSB0byBvdmVyd3JpdGUgdGhlIGVjYy0+d3Jp dGVfcGFnZV9yYXcoKSBob29rLgoKSSBndWVzcyB5b3VyIGlzc3VlIGlzIHRoZSBjb3JlIHRyeWlu ZyB0byB3cml0ZSB0aGUgaW4tYmFuZCBkYXRhCmFuZCBsYXRlciB0aGUgb29iIGRhdGEuIEkgdG90 YWxseSBnZXQgd2h5IHlvdSdyZSBkb2luZyB0aGF0IG5vdywgbWFrZXMKc2Vuc2UsIGJ1dCB0aGlz IGlzIG5vdCBob3cgLT5leGVjX29wKCkgc2hvdWxkIGJlIGltcGxlbWVudGVkLCBsZXQgbWUKZXhw bGFpbiAoYW5kIHByb3Bvc2UgYSBzb2x1dGlvbikuCgpJbiBnZW5lcmFsLCBpdCBpcyBwcmVmZXJy ZWQgdG8gaGF2ZSBhIGNsZWFuIC0+ZXhlY19vcCgpCmltcGxlbWVudGF0aW9uIChpbiBjYXNlIHdl IGxhdGVyIGV4dGVuZCB0aGUgY29yZSkgdGhhdCBpcyBjYXBhYmxlIG9mCmRvaW5nIHRoZSBvcHMg Y29ycmVjdGx5IGFuZCAqanVzdCogd2hhdCBoYXMgYmVlbiByZXF1ZXN0ZWQuIERyaXZlcnMKc2hv dWxkIHJlZnVzZSB0aGUgb3BlcmF0aW9ucyB0aGV5IGRvbid0IHN1cHBvcnQgaW5zdGVhZCBvZiB0 cnlpbmcKdG8gd29yay1hcm91ZGluZyB0aGVtLiBTbyBoZXJlIHRoZSBjb3JyZWN0IHdheSBpcyBw cm9iYWJseSB0byBwcm92aWRlIGEKLT53cml0ZV9wYWdlX3JhdygpIGhvb2sgdG8gc2ltcGx5IGF2 b2lkIHRoZSB1bnN1cHBvcnRlZCBvcHMuIEluIHlvdXIKY2FzZSB5b3UganVzdCBuZWVkIHRvIHJl ZmVyZW5jZSBuYW5kX21vbm9saXRoaWNfd3JpdGVfcGFnZV9yYXcoKSBhbmQKeW91J3JlIGRvbmUu CgpBbHNvIHBsZWFzZSBjaGVjayB0aGUgY2FzZXMgeW91IGRvbid0IHN1cHBvcnQgYW5kIHJlZnVz ZSB0aGVtIGluCi0+ZXhlY19vcCgpIChib3RoIGluIHRoZSBub3JtYWwgKmFuZCogaW4gdGhlIGNo ZWNrX29ubHkgcGF0aCkuIFRoaXMgaXMKYWxzbyBwYXJ0IG9mIC0+ZXhlY19vcCgpJ3MgZGVzaWdu IGFuZCBpcyB2ZXJ5IGltcG9ydGFudC4gSSBiZWxpZXZlIHlvdQpzaG91bGQgdGFrZSBpbnNwaXJh dGlvbiBmcm9tIHRoZSBwbDM1eC1uYW5kLWNvbnRyb2xsZXIuYyBkcml2ZXIgd2hpY2gKdHlwaWNh bGx5IGNvdmVycyBhbGwgdGhlIGtub3duLXRvLWJlLXdvcmtpbmcgY2FzZXMgd2l0aCBqdXN0IHRo cmVlCnBhdHRlcm5zIGZpbGxlZCBpbiBhIHBhcnNlciBzdHJ1Y3R1cmUgKHRydWUvZmFsc2UgbWVh bnMgdGhlIGluc3RydWN0aW9uCmlzIG1hbmRhdG9yeSBvciBjYW4gYmUgc2tpcHBlZCwgcGxlYXNl IGhhdmUgYSBsb29rIHRvCnBsMzV4X25hbmRjX29wX3BhcnNlcikuIFlvdSB3aWxsIG5vdGljZSBh bGwgY2FzZXMgaW4gdGhlIHBhcnNlcgpyZWZlcmVuY2UgdGhlIHNhbWUgZnVuY3Rpb24gaW4gdGhl IGVuZCAoeW91IGNhbiBkbyB0aGUgc2FtZSkuIFRoaXMgd2F5CnlvdSBrbm93IG9ubHkgc3VwcG9y dGVkIHBhdHRlcm5zIHdpbGwgYmUgdXNlZCBhbmQgdGhlIGNvcmUgY2FuIGVhc2lseQpjaGVjayB3 aGV0aGVyIHNvbWV0aGluZyAibmV3IiBpcyBzdXBwb3J0ZWQgb3Igbm90LiBSaWdodCBub3cgdGhl CmN1cnJlbnQgbXhjIC0+ZXhlY19vcCgpIGltcGxlbWVudGF0aW9uIHNheXMgaXQgc3VwcG9ydHMg YWxsCmluc3RydWN0aW9ucywgd2hpY2ggaXMgb2YgY291cnNlIGEgbGllLgoKU2lkZSBub3RlOiBD b3JlIGhlbHBlcnMgd2VyZSBpbml0aWFsbHkgd3JpdHRlbiB3aXRoIHRoZSBtb3JlIGZsZXhpYmxl CmFwcHJvYWNoLCBpZS4gc3BsaXR0aW5nIHRoZSBvcGVyYXRpb25zIGluIHNtYWxsZXIgcGllY2Vz LiBUaGlzCnR5cGljYWxseSBkb2VzIG5vdCB3b3JrIHdpdGggc29tZSBjb250cm9sbGVycyBzdWNo IGFzIHlvdXJzLiBXaGF0IEkKd2FudCBpcyB0aGUgZHJpdmVyIHRlbGxpbmcgdGhlIGNvcmUgaXQg c2hvdWxkIG5vdCB0cnkgdG8gc3BsaXQgdGhlIG9wcwppZiB0aGF0J3MgdGhlIGNhc2UuIEkga25v dyB0aGUgY29yZSBpcyBhIGJpdCBmbGFja3kgcmVnYXJkaW5nIHRoZXNlCmNoZWNrcy4gVGhlcmUg aXMgY3VycmVudGx5IG9ubHkgdGhlIGRhdGFfb25seV9yZWFkIHN1cHBvcnRlZF9vcCBjaGVjawp0 aGF0IGlzIHVzZWQgZm9yIGVhcmx5IGRpc2NvdmVyeSAoc2VlIG5hbmRfb25maV9kZXRlY3QoKSks IGJ1dCBpbiBjYXNlCnlvdSBoYXZlIGlzc3VlcyB3aXRoIHRoaXMgdHlwZSBvZiBzaXR1YXRpb24s IGxldCBtZSBrbm93LCB3ZSAoSSkgY2FuCmltcHJvdmUgdGhlIGNvcmUuCgo+IEFsc28gaXQgbXVz dCBiZQo+IGNsZWFyIHRoYXQgdGhlIE5BTkQgY29yZSB3aWxsIG5ldmVyIGRvIG11bHRpcGxlIE5B TkRfT1BfREFUQV9PVVRfSU5TVFIKPiB3aGVuIHByb2dyYW1taW5nIGEgcGFnZS4KClRoYXQncyB0 eXBpY2FsbHkgc29tZXRoaW5nIHRoYXQgY291bGQgaGFwcGVuIChpbiBwcmFjdGljZSBJIGRvbid0 IGhhdmUKYW55IHBsYW5zIGZvciB0aGF0LCB0aGlzIGlzIHRoZW9yZXRpY2FsbHkgc3BlYWtpbmcp LCBoZW5jZSB1c2luZyB0aGUKbmFuZF9vcF9wYXJzZXIgc3RydWN0dXJlIHdpbGwgZW5zdXJlIGlm IHdlIGV2ZXIgZXh0ZW5kIHRoZSBjb3JlLCB0aGUKZHJpdmVyIHdvbid0IGJyZWFrLgoKPiBTaWRl IG5vdGU6IEkgZGVjaWRlZCB0byBjb2xsZWN0IHRoZSBwYWdlIGRhdGEgaW4gYSBtZW1vcnkgYnVm ZmVyIHJhdGhlcgo+IHRoYW4gaW4gdGhlIGNvbnRyb2xsZXIgU1JBTSBkaXJlY3RseSBiZWNhdXNl IGl0IHNlZW1lZCB0b28gY29tcGxpY2F0ZWQKPiBhbmQgZXJyb3IgcHJvbmUgdG8gZmluZCB0aGUg Y29ycmVjdCBvZmZzZXQgaW4gU1JBTSBmb3IgcmFuZG9tIGNvbHVtbgo+IGFkZHJlc3Nlcy4gQWxz byB0aGUgU1JBTSBjYW4gb25seSBkbyB3b3JkIGFuZCBoYWxmd29yZCBhY2Nlc3Nlcywgc28gSQo+ IGFkZGl0aW9uYWxseSB3b3VsZCBoYXZlIHRvIGVtdWxhdGUgYnl0ZSBhY2Nlc3NlcyB3aXRoIHJl YWQtbW9kaWZ5LXdyaXRlCj4gaGFsZndvcmQgYWNjZXNzZXMuIFdoaWxlIGNlcnRhaW5seSBkb2Fi bGUgSSdkIGxpa2UgdG8gZGVmZXIgdGhpcyB0byBhCj4gZnV0dXJlIG9wdGltaXNhdGlvbiBleGVy Y2lzZS4KCk9oIHllYWgsIHRvdGFsbHkgYWdyZWVkLiBJIHNhdyB0aGUgaW1wbGVtZW50YXRpb24g YW5kIEkgYWdyZWUgd2Ugc2hvdWxkCmFpbSBmb3IgYSB3b3JraW5nIGRyaXZlci4gVGhlbiBpZiB5 b3Ugd2FudCB0byBpbXByb3ZlIGl0IGZvcgpwZXJmb3JtYW5jZSByZWFzb25zLCBjaGFuZ2VzIHdp bGwgYmUgd2VsY29tZS4KClRoYW5rcywKTWlxdcOobAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxp bmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LW10ZC8K From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [217.70.183.200]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8075A14F9CF for ; Mon, 13 May 2024 12:55:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.200 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715604943; cv=none; b=ZiDMJj7DX9LNJ1IYthEjjYblJzWDtpvk3K3vciyOp5uqbicGvaytz4g4y4FgcUWkMoLuEcw4Mi6Oq4jcrILOOabfIJ6HRszbs7cLDkSEzfN5CyQf5o5jdz+jf29SRfESynblU+82z+RvwTP96eSQpkDD57N+HMYsv5DnO1fFtiM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715604943; c=relaxed/simple; bh=WyQqmoRYC72bmnkeeCcCn8hrnX1D66V3SvpnjS2vG9U=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Cfxe7H4Tj2eGsani0TcCg83qt4fUvX0u7r/37m0CiqSik1zltMC9Fo26BsLCiX+W/qwG8/lmcrwHCuA62w4t0olSfTH1vtS+5poxFzVoalZ2eCOgRa+eHncSJ22PhwTLknGUI/WA61KYahVWtQKTyxrHtrGwkfk0E8r7teFwk9o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=g1i1Da3k; arc=none smtp.client-ip=217.70.183.200 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="g1i1Da3k" Received: by mail.gandi.net (Postfix) with ESMTPSA id 3EE4920008; Mon, 13 May 2024 12:55:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1715604938; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fXOKlipIeocUQzOfwGKn0MBsA79zn2u746LrpAvDZD0=; b=g1i1Da3kP+zjQ7HKZWHzUahbiO4ThpmVouTm7yztf8HeS5gcwIHXP7qo/inH9mWg9dtQYu a84Jou++bHYqc8cyKn44eltgjNfGbXS4gIFGVHjAIli/fAOqieQrOP2HC0/T/msLd8W62d fQFM3dr4k2RcXZOPfYFNxWohgnBSwALgGdQsvlsHriimS7UhROuN7tcqMfvIciPmgo3EUX Mg7Ijh3SNR1Zxk4i5v21p0PBHyfRwj3ID4wnOmhG2sRFSwkai/5ilRxHjRfC4st4Hmt7Wa G8Pmje9X5h5B9TZTjZ1EPj98zul9pTy+L8dK09WQ5D+3igRRnG49O2OpITV3FA== Date: Mon, 13 May 2024 14:55:36 +0200 From: Miquel Raynal To: Sascha Hauer Cc: Richard Weinberger , Vignesh Raghavendra , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 2/3] mtd: nand: mxc_nand: implement exec_op Message-ID: <20240513145536.71145b65@xps-13> In-Reply-To: References: <20240508-mtd-nand-mxc-nand-exec-op-v2-0-6b7366b7831f@pengutronix.de> <20240508-mtd-nand-mxc-nand-exec-op-v2-2-6b7366b7831f@pengutronix.de> <20240513091902.2c00d30a@xps-13> <20240513093256.363861d1@xps-13> Organization: Bootlin X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-pc-linux-gnu) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-GND-Sasl: miquel.raynal@bootlin.com Hi Sascha, > > > > + for (i =3D 0; i < op->ninstrs; i++) { > > > > + instr =3D &op->instrs[i]; > > > > + > > > > + nand_op_trace(" ", instr); > > > > + > > > > + switch (instr->type) { > > > > + case NAND_OP_WAITRDY_INSTR: > > > > + /* > > > > + * NFC handles R/B internally. Therefore, this function > > > > + * always returns status as ready. =20 > > >=20 > > > This is no longer a standalone function, maybe: > > >=20 > > > "The controller handles the R/B pin internally, therefore there is > > > nothing to do here." =20 > >=20 > > And this is actually very wrong. > >=20 > > You should call wait_op_done() instead. > > =20 > > > =20 > > > > + */ > > > > + break; > > > > + case NAND_OP_CMD_INSTR: > > > > + if (instr->ctx.cmd.opcode =3D=3D NAND_CMD_PAGEPROG) > > > > + host->devtype_data->send_page(mtd, NFC_INPUT); =20 > >=20 > > Actually this is not the right place. You should trigger the transfer > > from controller SRAM to NAND (and the other way around) in the > > NAND_OP_DATA_OUT_INSTR case. > >=20 > > Here you should just call ->send_cmd. =20 >=20 > I tried to get away here with using the standard nand_write_page_raw() > function. This does multiple NAND_OP_DATA_OUT_INSTR ops before finally > sending a NAND_CMD_PAGEPROG command. With software BCH ECC I collect all > data being written in memory and copy it to the controller SRAM en bloc. > I have to do this after the final NAND_OP_DATA_OUT_INSTR op. During a > NAND_OP_DATA_OUT_INSTR I don't know if this is going to be the last one > or if other NAND_OP_DATA_OUT_INSTR ops follow, so I do the copy to SRAM > right before a NAND_CMD_PAGEPROG. I fully understand the mindset, but we had too many issues with this this using ->cmdfunc() and ->cmd_ctrl(), so we introduced ->exec_op() exactly for this purpose: controller drivers shall not try to guess what the core wants. The core now provides the full operation and also a way to check if the operation is supported. So if something is unsupported, just report it is unsupported. > I could move the ->send_page() call to NAND_OP_DATA_OUT_INSTR, but then > I have to overwrite the ecc->write_page_raw() hook. I guess your issue is the core trying to write the in-band data and later the oob data. I totally get why you're doing that now, makes sense, but this is not how ->exec_op() should be implemented, let me explain (and propose a solution). In general, it is preferred to have a clean ->exec_op() implementation (in case we later extend the core) that is capable of doing the ops correctly and *just* what has been requested. Drivers should refuse the operations they don't support instead of trying to work-arouding them. So here the correct way is probably to provide a ->write_page_raw() hook to simply avoid the unsupported ops. In your case you just need to reference nand_monolithic_write_page_raw() and you're done. Also please check the cases you don't support and refuse them in ->exec_op() (both in the normal *and* in the check_only path). This is also part of ->exec_op()'s design and is very important. I believe you should take inspiration from the pl35x-nand-controller.c driver which typically covers all the known-to-be-working cases with just three patterns filled in a parser structure (true/false means the instruction is mandatory or can be skipped, please have a look to pl35x_nandc_op_parser). You will notice all cases in the parser reference the same function in the end (you can do the same). This way you know only supported patterns will be used and the core can easily check whether something "new" is supported or not. Right now the current mxc ->exec_op() implementation says it supports all instructions, which is of course a lie. Side note: Core helpers were initially written with the more flexible approach, ie. splitting the operations in smaller pieces. This typically does not work with some controllers such as yours. What I want is the driver telling the core it should not try to split the ops if that's the case. I know the core is a bit flacky regarding these checks. There is currently only the data_only_read supported_op check that is used for early discovery (see nand_onfi_detect()), but in case you have issues with this type of situation, let me know, we (I) can improve the core. > Also it must be > clear that the NAND core will never do multiple NAND_OP_DATA_OUT_INSTR > when programming a page. That's typically something that could happen (in practice I don't have any plans for that, this is theoretically speaking), hence using the nand_op_parser structure will ensure if we ever extend the core, the driver won't break. > Side note: I decided to collect the page data in a memory buffer rather > than in the controller SRAM directly because it seemed too complicated > and error prone to find the correct offset in SRAM for random column > addresses. Also the SRAM can only do word and halfword accesses, so I > additionally would have to emulate byte accesses with read-modify-write > halfword accesses. While certainly doable I'd like to defer this to a > future optimisation exercise. Oh yeah, totally agreed. I saw the implementation and I agree we should aim for a working driver. Then if you want to improve it for performance reasons, changes will be welcome. Thanks, Miqu=C3=A8l