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 4DD8EC3ABAA for ; Mon, 5 May 2025 17:03:18 +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:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=wQQmRrL+pYJT9Y0OdjGCJweTgFcXKWko0v0VxVFIZPU=; b=ZMjVTrBIxEXSga Qq9+2Xdqq2DBSPOeujCzZJApC3rrO5g8fO9xo6xCpPFOovIYaKs/ZMuZjeeRiyaEYh4kiXJxaWWDe fD4y3yh094AP37QZ/Ldyay/Kny6zGGIsYWid4U60/8gP13/r2+BiOJSFwe3Aa1+xhghc1FNSbEWYR ccq/17PpM6L9N0aL07x4EOYCtHqXqaUBno0WRaj4QE6UjDlJ5f+Z5lgAQuTf1NxYO54OgCe57qduu oBiHGBnTbbiP+au7dP+B4fO85ajUdTogORNNtKvk1CXxg83MPUtezIadolSiabQKQPdj/CMy2P1Wv VkGaluWWahRDElnVmlhQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uBzDi-000000085V7-2rci; Mon, 05 May 2025 17:03:10 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uByqz-000000081kJ-0wI1 for linux-mtd@lists.infradead.org; Mon, 05 May 2025 16:39:44 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 989D04A1FC; Mon, 5 May 2025 16:39:37 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 94891C4CEE4; Mon, 5 May 2025 16:39:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746463180; bh=5TkvbWijlJPTKwJLH5IndsreaI2ziH2edXKHQRQsc18=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=b8ptWYaK8Uil7cckLaOfHjIBJEFkX/UV75ynNY/C3dnjoWsdOsme27SlAqqBAoWmA O73zqHNHQgqd894EOIY9omcxDZGLBzo+ZBIlHM7RLJg1ddXta0M1hBssPoOYVF/MRj ukgKWiZ1YFvMTt4r3BryWYk0WVWYQRHUkmhGJn4FeRb/+4JCVgkmvXWXeMr3R2wnfA bs1GQlRu37Y+c2RQPgCPTU7CMtVHL4wNyVYNHWKxN4/vQtmG+2zkqqpo9KEziCW6YD Y69FLFe1xaSvj/gVjXeT0CAx0pxTVpfzcYSs57QGFvChUistmMe4r6yt7SaqyKBmP2 KMMzswmjz4Lxw== From: Pratyush Yadav To: liwei song Cc: Miquel Raynal , RichardWeinberger , VigneshRaghavendra , TudorAmbarus , PratyushYadav , MichaelWalle , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Mark Brown , linux-spi@vger.kernel.org Subject: Re: [PATCH v2] mtd: core: add sync between read/write and unbind device In-Reply-To: References: <20250325133954.3699535-1-liwei.song.lsong@gmail.com> <20250331161542.3040005-1-liwei.song.lsong@gmail.com> <87jz73v1th.fsf@bootlin.com> Date: Mon, 05 May 2025 16:39:37 +0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250505_093941_307777_5A990C13 X-CRM114-Status: GOOD ( 33.67 ) 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 K0NjIE1hcmsgYW5kIGxpbnV4LXNwaUAKCk9uIFdlZCwgQXByIDMwIDIwMjUsIGxpd2VpIHNvbmcg d3JvdGU6Cgo+IEhpIE1pcXXDqGwsCj4KPiBPbiBUdWUsIEFwciAyOSwgMjAyNSBhdCAzOjU14oCv UE0gTWlxdWVsIFJheW5hbCA8bWlxdWVsLnJheW5hbEBib290bGluLmNvbT4gd3JvdGU6Cj4+Cj4+ IEhlbGxvIExpd2VpLAo+Pgo+PiBPbiAwMS8wNC8yMDI1IGF0IDAwOjE1OjIwICswOCwgTGl3ZWkg U29uZyA8bGl3ZWkuc29uZy5sc29uZ0BnbWFpbC5jb20+IHdyb3RlOgo+Pgo+PiA+IFdoZW4gdW5i aW5kIG10ZCBkZXZpY2Ugb3IgcXNwaSBjb250cm9sbGVyIHdpdGggYSBoaWdoIGZyZXF1ZW5jeQo+ PiA+IHJlYWRpbmcgdG8gL2Rldi9tdGQwIGRldmljZSwgdGhlcmUgd2lsbCBiZSBDYWxsdHJhY2Ug YXMgYmVsb3c6Cj4+ID4KPj4gPiAkIHdoaWxlIHRydWU7IGRvIGNhdCAvZGV2L210ZDAgPi9kZXYv bnVsbDsgZG9uZSAmCj4+ID4gJCBlY2hvIGZmOGQyMDAwLnNwaSAgPiAvc3lzL2J1cy9wbGF0Zm9y bS9kcml2ZXJzL2NhZGVuY2UtcXNwaS91bmJpbmQKPj4gPgo+PiA+IEludGVybmFsIGVycm9yOiBz eW5jaHJvbm91cyBleHRlcm5hbCBhYm9ydDogMDAwMDAwMDA5NjAwMDIxMCBbIzFdIFBSRUVNUFQg U01QCj4+ID4gTW9kdWxlcyBsaW5rZWQgaW46Cj4+ID4gQ1BVOiAzIFVJRDogMCBQSUQ6IDQ2NiBD b21tOiBjYXQgTm90IHRhaW50ZWQgNi4xNC4wLXJjNy15b2N0by1zdGFuZGFyZCsgIzEKPj4gPiBI YXJkd2FyZSBuYW1lOiBTb0NGUEdBIFN0cmF0aXggMTAgU29DREsgKERUKQo+PiA+IHBjIDogY3Fz cGlfaW5kaXJlY3RfcmVhZF9leGVjdXRlLmlzcmEuMCsweDE4OC8weDMzMAo+PiA+IGxyIDogY3Fz cGlfaW5kaXJlY3RfcmVhZF9leGVjdXRlLmlzcmEuMCsweDIxYy8weDMzMAo+PiA+IENhbGwgdHJh Y2U6Cj4+ID4gIGNxc3BpX2luZGlyZWN0X3JlYWRfZXhlY3V0ZS5pc3JhLjArMHgxODgvMHgzMzAg KFApCj4+ID4gIGNxc3BpX2V4ZWNfbWVtX29wKzB4OGJjLzB4ZTQwCj4+ID4gIHNwaV9tZW1fZXhl Y19vcCsweDNlMC8weDQ3OAo+PiA+ICBzcGlfbWVtX25vX2Rpcm1hcF9yZWFkKzB4YTgvMHhjOAo+ PiA+ICBzcGlfbWVtX2Rpcm1hcF9yZWFkKzB4ZGMvMHgxNTAKPj4gPiAgc3BpX25vcl9yZWFkX2Rh dGErMHgxMjAvMHgxOTgKPj4gPiAgc3BpX25vcl9yZWFkKzB4ZjAvMHgyODAKPj4gPiAgbXRkX3Jl YWRfb29iX3N0ZCsweDgwLzB4OTgKPj4gPiAgbXRkX3JlYWRfb29iKzB4OWMvMHgxNjgKPj4gPiAg bXRkX3JlYWQrMHg2Yy8weGQ4Cj4+ID4gIG10ZGNoYXJfcmVhZCsweGRjLzB4Mjg4Cj4+ID4gIHZm c19yZWFkKzB4YzgvMHgyZjgKPj4gPiAga3N5c19yZWFkKzB4NzAvMHgxMTAKPj4gPiAgX19hcm02 NF9zeXNfcmVhZCsweDI0LzB4MzgKPj4gPiAgaW52b2tlX3N5c2NhbGwrMHg1Yy8weDEzMAo+PiA+ ICBlbDBfc3ZjX2NvbW1vbi5jb25zdHByb3AuMCsweDQ4LzB4ZjgKPj4gPiAgZG9fZWwwX3N2Yysw eDI4LzB4NDAKPj4gPiAgZWwwX3N2YysweDMwLzB4ZDAKPj4gPiAgZWwwdF82NF9zeW5jX2hhbmRs ZXIrMHgxNDQvMHgxNjgKPj4gPiAgZWwwdF82NF9zeW5jKzB4MTk4LzB4MWEwCj4+ID4gQ29kZTog OTI3ZTc0NDIgYWExYTAzZTAgOGIwMjAzNDIgZDUwMzIwMWYgKGI5NDAwMzIxKQo+PiA+IC0tLVsg ZW5kIHRyYWNlIDAwMDAwMDAwMDAwMDAwMDAgXS0tLQo+PiA+Cj4+ID4gT3I6Cj4+ID4gJCB3aGls ZSB0cnVlOyBkbyBjYXQgL2Rldi9tdGQwID4vZGV2L251bGw7IGRvbmUgJgo+PiA+ICQgZWNobyBz cGkwLjAgPiAvc3lzL2NsYXNzL210ZC9tdGQwL2RldmljZS9kcml2ZXIvdW5iaW5kCj4+ID4KPj4g PiBVbmFibGUgdG8gaGFuZGxlIGtlcm5lbCBwYWdpbmcgcmVxdWVzdCBhdCB2aXJ0dWFsIGFkZHJl c3MgMDAwMDAwMDAwMDAwMTJlOAo+PiA+IEludGVybmFsIGVycm9yOiBPb3BzOiAwMDAwMDAwMDk2 MDAwMDA0IFsjMV0gUFJFRU1QVCBTTVAKPj4gPiBNb2R1bGVzIGxpbmtlZCBpbjoKPj4gPiBDUFU6 IDIgVUlEOiAwIFBJRDogNDU5IENvbW06IGNhdCBOb3QgdGFpbnRlZCA2LjE0LjAtcmM3LXlvY3Rv LXN0YW5kYXJkKyAjMQo+PiA+IEhhcmR3YXJlIG5hbWU6IFNvQ0ZQR0EgU3RyYXRpeCAxMCBTb0NE SyAoRFQpCj4+ID4gcHN0YXRlOiA2MDAwMDAwNSAoblpDdiBkYWlmIC1QQU4gLVVBTyAtVENPIC1E SVQgLVNTQlMgQlRZUEU9LS0pCj4+ID4gcGMgOiBzcGlfbWVtX2V4ZWNfb3ArMHgzZTgvMHg0NzgK Pj4gPiBsciA6IHNwaV9tZW1fZXhlY19vcCsweDNlMC8weDQ3OAo+PiA+IENhbGwgdHJhY2U6Cj4+ ID4gIHNwaV9tZW1fZXhlY19vcCsweDNlOC8weDQ3OCAoUCkKPj4gPiAgc3BpX21lbV9ub19kaXJt YXBfcmVhZCsweGE4LzB4YzgKPj4gPiAgc3BpX21lbV9kaXJtYXBfcmVhZCsweGRjLzB4MTUwCj4+ ID4gIHNwaV9ub3JfcmVhZF9kYXRhKzB4MTIwLzB4MTk4Cj4+ID4gIHNwaV9ub3JfcmVhZCsweGYw LzB4MjgwCj4+ID4gIG10ZF9yZWFkX29vYl9zdGQrMHg4MC8weDk4Cj4+ID4gIG10ZF9yZWFkX29v YisweDljLzB4MTY4Cj4+ID4gIG10ZF9yZWFkKzB4NmMvMHhkOAo+PiA+ICBtdGRjaGFyX3JlYWQr MHhkYy8weDI4OAo+PiA+ICB2ZnNfcmVhZCsweGM4LzB4MmY4Cj4+ID4gIGtzeXNfcmVhZCsweDcw LzB4MTEwCj4+ID4gIF9fYXJtNjRfc3lzX3JlYWQrMHgyNC8weDM4Cj4+ID4gIGludm9rZV9zeXNj YWxsKzB4NWMvMHgxMzAKPj4gPiAgZWwwX3N2Y19jb21tb24uY29uc3Rwcm9wLjArMHg0OC8weGY4 Cj4+ID4gIGRvX2VsMF9zdmMrMHgyOC8weDQwCj4+ID4gIGVsMF9zdmMrMHgzMC8weGQwCj4+ID4g IGVsMHRfNjRfc3luY19oYW5kbGVyKzB4MTQ0LzB4MTY4Cj4+ID4gIGVsMHRfNjRfc3luYysweDE5 OC8weDFhMAo+PiA+IENvZGU6IGY5NDAwODQyIGQ2M2YwMDQwIDJhMDAwM2Y0IGY5NDAwMmExIChm OTQxNzQzNykKPj4gPiAtLS1bIGVuZCB0cmFjZSAwMDAwMDAwMDAwMDAwMDAwIF0tLS0KPj4gPgo+ PiA+IHdoZW4gdW5iaW5kIGlzIHJ1bm5pbmcsIHRoZSBtZW1vcnkgYWxsb2NhdGVkIHRvIHFzcGkg Y29udHJvbGxlciBhbmQKPj4gPiBtdGQgZGV2aWNlIGlzIGZyZWVkIGR1cmluZyB1bmJpbmRpbmcs IGJ1dCBvcGVuL2Nsb3NlIGFuZCByZWFkaW5nIGRldmljZQo+PiA+IGFyZSBzdGlsbCBydW5uaW5n LCBpZiB0aGUgcmVhZGluZyBwcm9jZXNzIGdldCByZWFkIGxvY2sgYW5kIHN0YXJ0Cj4+ID4gZXhj dXRpbmcsIHRoZXJlIHdpbGwgYmUgYWJvdmUgaWxsZWdhbCBtZW1vcnkgYWNjZXNzLiBUaGlzIGlz c3VlIGFsc28KPj4gPiBjYW4gYmUgcmVwcnVkdWNlZCBvbiBtYW55IG90aGVyIHBsYXRmb3JtcyBs aWtlIGxzMTA0NiBhbmQgbnhwaW14OCB3aGljaAo+PiA+IGhhdmUgcXNwaSBmbGFzaC4KPj4gPgo+ PiA+IEluIHRoaXMgcGF0Y2gsIHJlZ2lzdGVyIGEgc3BpIGJ1cyBub3RpZmllciB3aGljaCB3aWxs IGJlIGNhbGxlZCBiZWZvcmUKPj4gPiB1bmJpbmQgcHJvY2VzcyBmcmVlaW5nIGRldmljZSBtZW1v cnksIGFkZCBhIG5ldyBtZW1iZXIgbXRkX2V2ZW50X3JlbW92ZQo+PiA+IHRvIGJsb2NrIG10ZCBv cGVuL3JlYWQsIHRoZW4gd2FpdGluZyBmb3IgdGhlIHJ1bm5pbmcgdGFzayB0byBiZSBmaW5pc2hl ZCwKPj4gPiBhZnRlciB0aGF0LCBtZW1vcnkgaXMgc2FmZSB0byBiZSBmcmVlLgo+PiA+Cj4+ID4g U2lnbmVkLW9mZi1ieTogTGl3ZWkgU29uZyA8bGl3ZWkuc29uZy5sc29uZ0BnbWFpbC5jb20+Cj4+ ID4gLS0tCj4+ID4KPj4gPiBIaSBNYWludGFpbmVyLAo+PiA+Cj4+ID4gVGhpcyBpcyBhbiBpbXBy b3ZlZCBwYXRjaCBjb21wYXJlZCB3aXRoIHRoZSBvcmlnaW5hbCBvbmU6Cj4+ID4gKGh0dHBzOi8v cGF0Y2h3b3JrLm96bGFicy5vcmcvcHJvamVjdC9saW51eC1tdGQvcGF0Y2gvMjAyNTAzMjUxMzM5 NTQuMzY5OTUzNS0xLWxpd2VpLnNvbmcubHNvbmdAZ21haWwuY29tLyksCj4+ID4gVGhpcyB2MiBw YXRjaCBtb3ZlIG5vdGlmaWVyIHRvIHNwaS1ub3IgdG8gYXZvaWQgY3Jhc2ggb3RoZXIgdHlwZXMg b2YgZmxhc2guCj4+ID4gbm93IHRoaXMgcGF0Y2ggb25seSBhaW0gYXQgZml4aW5nIG5vci1mbGFz aCAiYmluZC91bmJpbmQgd2hpbGUgcmVhZGluZyIgY2FsbHRyYWNlLAo+PiA+IGJ1dCBmb3Igb3Ro ZXIgdHlwZXMgb2YgZmxhc2ggbGlrZSBuYW5kIGFsc28gaGF2ZSB0aGlzIGlzc3VlLgo+Pgo+PiBX aGlsZSBJIGFncmVlIHdpdGggdGhlIG9ic2VydmF0aW9uIGFuZCBhbHNvIHRoZSBjb25jbHVzaW9u IG9mIGFkZGluZwo+PiBzb21lIGtpbmQgb2Ygbm90aWZpZXIsIEknZCBsaWtlIHRvIHVuZGVyc3Rh bmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQKPj4gY2hvb3NpbmcgdG8gZml4IG9ubHkgc3BpLW5vciBp biB2Mj8gSWYgYW55IHNwaSBtZW1vcnkgcmVnaXN0ZXJlZCBpbiB0aGUKWy4uLl0KPj4gPiArc3Rh dGljIGludCBzcGlfbm9yX3JlbW92ZV9ub3RpZmllcl9jYWxsKHN0cnVjdCBub3RpZmllcl9ibG9j ayAqbmIsCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZXZlbnQsIHZvaWQgKmRhdGEpCj4+ID4gK3sKPj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlICpk ZXYgPSBkYXRhOwo+PiA+ICsgICAgIHN0cnVjdCBzcGlfZGV2aWNlICpzcGk7Cj4+ID4gKyAgICAg c3RydWN0IHNwaV9tZW0gKm1lbTsKPj4gPiArICAgICBzdHJ1Y3Qgc3BpX25vciAqbm9yOwo+PiA+ ICsKPj4gPiArICAgICBpZiAoIW9mX21hdGNoX2RldmljZShzcGlfbm9yX29mX3RhYmxlLCBkZXYp KQo+PiA+ICsgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ID4gKwo+PiA+ICsgICAgIHN3aXRjaCAo ZXZlbnQpIHsKPj4gPiArICAgICBjYXNlIEJVU19OT1RJRllfREVMX0RFVklDRToKPj4gPiArICAg ICBjYXNlIEJVU19OT1RJRllfVU5CSU5EX0RSSVZFUjoKPj4gPiArICAgICAgICAgICAgIHNwaSA9 IHRvX3NwaV9kZXZpY2UoZGV2KTsKPj4gPiArICAgICAgICAgICAgIG1lbSA9IHNwaV9nZXRfZHJ2 ZGF0YShzcGkpOwo+PiA+ICsgICAgICAgICAgICAgaWYgKCFtZW0pCj4+ID4gKyAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBOT1RJRllfRE9ORTsKPj4gPiArICAgICAgICAgICAgIG5vciA9IHNw aV9tZW1fZ2V0X2RydmRhdGEobWVtKTsKPj4gPiArCj4+ID4gKyAgICAgICAgICAgICBtdXRleF9s b2NrKCZub3ItPmxvY2spOwo+PiA+ICsgICAgICAgICAgICAgbm9yLT5tdGQubXRkX2V2ZW50X3Jl bW92ZSA9IHRydWU7Cj4+ID4gKyAgICAgICAgICAgICBtdXRleF91bmxvY2soJm5vci0+bG9jayk7 Cj4+ID4gKyAgICAgICAgICAgICBtc2xlZXAoMzAwKTsKPj4KPj4gV2hhdCBpcyB0aGlzIHNsZWVw IGZvcj8KPgo+IFRoZSBzbGVlcCBpcyB0byB3YWl0IHRoZSBwcm9jZXNzIHdoaWNoIGFscmVhZHkg Z290IHRoZSBsb2NrIGFuZAo+IHJ1bm5pbmcgaW4gcmVhZGluZwo+IHJvdXRpbmUgY2FuIGJlIGZp bmlzaGVkIGJlZm9yZSBtZW1vcnkgaXMgcmVsZWFzZWQsIHNob3cgaW4gYmVsb3cgc2NlbmFyaW86 Cj4KPiB3aXRob3V0IHNsZWVwOgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gbXRkLm10ZF9ldmVudF9yZW1vdmUg PSBmYWxzZTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZWFkaW5nIHN0YXJ0Owo+IG10ZC5tdGRfZXZlbnRfcmVtb3ZlID0gdHJ1 ZTsKPiByZWxlYXNlIG1lbW9yeQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRpbmcgZW5kOwo+IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4KPiB3 aXRoIHNsZWVwOgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBtdGQubXRkX2V2ZW50X3JlbW92ZSA9IGZhbHNlOwo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVhZGluZyBzdGFydDsKPiBtdGQubXRkX2V2ZW50X3JlbW92ZSA9IHRydWU7Cj4gc2xlZXAo KSBzdGFydAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVhZGluZyBlbmQ7Cj4gc2xlZXAoKSBlbmQKPiByZWxlYXNlIG1lbW9yeQo+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KClRoaXMgaXMgbm90IGhvdyB3ZSBzaG91bGQgbWFuYWdlIGxpZmV0aW1lcy4g QWRkaW5nIGFyYml0cmFyeSBzbGVlcHMgdG8KaG9wZSByYWNlcyBnbyBhd2F5IGlzIGZsYWt5IGFu ZCB3aWxsIGJyZWFrIGluIHN0cmFuZ2Ugd2F5cyB0aGF0IHdvdWxkIGJlCmltcG9zc2libGUgdG8g ZGVidWcuIEZvciBleGFtcGxlLCB3aGF0IGlmIGEgcmVhZCBoYXBwZW5zIHRvIHRha2UgbG9uZ2Vy CnRoYW4gMzAwbXM/IEluc3RlYWQsIHdlIHNob3VsZCBoYXZlIGEgd2F5IHRvIHByb3Blcmx5IG1h bmFnZSB0aGUKbGlmZXRpbWVzIGFuZCBzZXF1ZW5jZSBvcGVyYXRpb25zLgoKSSBhbHdheXMgdGhv dWdodCB0aGF0IGJ5IHRoZSB0aW1lIHNwaV91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoKSByZXR1cm5z LAp0aGVyZSBhcmUgbm8gbG9uZ2VyIGFueSBpbi1mbGlnaHQgb3BlcmF0aW9ucyBzbyBmcmVlaW5n IHN0dWZmIGFmdGVyIGl0CndvdWxkIGJlIHNhZmUuIFNlZW1zIG5vdCB0byBiZSB0aGUgY2FzZS4K CkFmdGVyIGEgcXVpY2sgbG9vaywgc2VlbXMgbGlrZSBhbGwgU1BJIE1FTSBkZXZpY2VzIGFyZSBk b2luZyBzaW1pbGFyCnRoaW5ncyBpbiB0aGVpciByZW1vdmUgY2FsbGJhY2tzLCBzbyBJIHRoaW5r IHRoZXkgYXJlIGFmZmVjdGVkIGJ5IHRoZQpzYW1lIHJhY2UuIEZvciBleGFtcGxlLCBueHBfZnNw aV9yZW1vdmUoKSB1bm1hcHMgaXRzIEFIQiBhcmVhLCBzbyBpbgpmbGlnaHQgU1BJIE1FTSBvcGVy YXRpb25zIHdvdWxkIGZhaWwuIFNpbWlsYXJseSwgc3BpLXN0bTMyIHdpbGwgcmVsZWFzZQppdHMg RE1BIGNoYW5uZWxzLCBhbmQgc28gb24gd2l0aCBvdGhlcnMuCgpJIHN1c3BlY3QgdGhhdCB0aGlz IG5vdGlmaWVyIHRoaW5nIGlzIG5vdCB0aGUgcHJvcGVyIHdheSB0byBtYW5hZ2UgdGhlCmxpZmV0 aW1lcyBoZXJlIGFuZCB0aGVyZSBzaG91bGQgYmUgc29tZXRoaW5nIGJldHRlci4gV2UgbmVlZCBh IHdheSBmb3IKdGhlIGRyaXZlciB0byBtYWtlIHN1cmUgdGhlIHVuZGVybHlpbmcgTVREIGRldmlj ZSBpcyBubyBsb25nZXIgYWN0aXZlCmJlZm9yZSBpdCBmcmVlcyBpdHMgbWVtb3J5LgoKTWFyay9T UEkgZm9sa3MsIHdoYXQgZG8geW91IHRoaW5rIGlzIHRoZSBwcm9wZXIgd2F5IG9mIGRvaW5nIHRo aXM/CgpbLi4uXQoKLS0gClJlZ2FyZHMsClByYXR5dXNoIFlhZGF2CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Np b24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtbXRkLwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 B996C13AF2; Mon, 5 May 2025 16:39:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746463180; cv=none; b=hTyvoTAYL3aihW6bvotrTYJFCWbC+4XI5m7I7HC/tNhfN1lprwtrxsdybJrJMA85XV8ej4FMFbWeD+RzDDBJ+zB7Qm1/a1muE/2OcdQEXQjle198W7sDAfAHNRdspZV7w55r9iPNB13kwmwpjuEi9TC90FD6t/an6uy6F2afSm4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746463180; c=relaxed/simple; bh=5TkvbWijlJPTKwJLH5IndsreaI2ziH2edXKHQRQsc18=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type; b=L5f7GHWNk/7n71OGKQh8xJW5eYDNI60TmGwQI5TJSLNJ7IKh6dgT3helZT7XMzEBfiNmbHyCMNAL/tLkfNvYKCAAJlu8JlbW+vqlYUhXPLVc2lb2VD8QitCyFqMZb1zcTGUT0vCMZ/+rIVu06AUvw/55LhS8ikG+oo66I0R5PLU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=b8ptWYaK; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="b8ptWYaK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 94891C4CEE4; Mon, 5 May 2025 16:39:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746463180; bh=5TkvbWijlJPTKwJLH5IndsreaI2ziH2edXKHQRQsc18=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=b8ptWYaK8Uil7cckLaOfHjIBJEFkX/UV75ynNY/C3dnjoWsdOsme27SlAqqBAoWmA O73zqHNHQgqd894EOIY9omcxDZGLBzo+ZBIlHM7RLJg1ddXta0M1hBssPoOYVF/MRj ukgKWiZ1YFvMTt4r3BryWYk0WVWYQRHUkmhGJn4FeRb/+4JCVgkmvXWXeMr3R2wnfA bs1GQlRu37Y+c2RQPgCPTU7CMtVHL4wNyVYNHWKxN4/vQtmG+2zkqqpo9KEziCW6YD Y69FLFe1xaSvj/gVjXeT0CAx0pxTVpfzcYSs57QGFvChUistmMe4r6yt7SaqyKBmP2 KMMzswmjz4Lxw== From: Pratyush Yadav To: liwei song Cc: Miquel Raynal , RichardWeinberger , VigneshRaghavendra , TudorAmbarus , PratyushYadav , MichaelWalle , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Mark Brown , linux-spi@vger.kernel.org Subject: Re: [PATCH v2] mtd: core: add sync between read/write and unbind device In-Reply-To: References: <20250325133954.3699535-1-liwei.song.lsong@gmail.com> <20250331161542.3040005-1-liwei.song.lsong@gmail.com> <87jz73v1th.fsf@bootlin.com> Date: Mon, 05 May 2025 16:39:37 +0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Precedence: bulk X-Mailing-List: linux-spi@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 +Cc Mark and linux-spi@ On Wed, Apr 30 2025, liwei song wrote: > Hi Miqu=C3=A8l, > > On Tue, Apr 29, 2025 at 3:55=E2=80=AFPM Miquel Raynal wrote: >> >> Hello Liwei, >> >> On 01/04/2025 at 00:15:20 +08, Liwei Song w= rote: >> >> > When unbind mtd device or qspi controller with a high frequency >> > reading to /dev/mtd0 device, there will be Calltrace as below: >> > >> > $ while true; do cat /dev/mtd0 >/dev/null; done & >> > $ echo ff8d2000.spi > /sys/bus/platform/drivers/cadence-qspi/unbind >> > >> > Internal error: synchronous external abort: 0000000096000210 [#1] PREE= MPT SMP >> > Modules linked in: >> > CPU: 3 UID: 0 PID: 466 Comm: cat Not tainted 6.14.0-rc7-yocto-standard= + #1 >> > Hardware name: SoCFPGA Stratix 10 SoCDK (DT) >> > pc : cqspi_indirect_read_execute.isra.0+0x188/0x330 >> > lr : cqspi_indirect_read_execute.isra.0+0x21c/0x330 >> > Call trace: >> > cqspi_indirect_read_execute.isra.0+0x188/0x330 (P) >> > cqspi_exec_mem_op+0x8bc/0xe40 >> > spi_mem_exec_op+0x3e0/0x478 >> > spi_mem_no_dirmap_read+0xa8/0xc8 >> > spi_mem_dirmap_read+0xdc/0x150 >> > spi_nor_read_data+0x120/0x198 >> > spi_nor_read+0xf0/0x280 >> > mtd_read_oob_std+0x80/0x98 >> > mtd_read_oob+0x9c/0x168 >> > mtd_read+0x6c/0xd8 >> > mtdchar_read+0xdc/0x288 >> > vfs_read+0xc8/0x2f8 >> > ksys_read+0x70/0x110 >> > __arm64_sys_read+0x24/0x38 >> > invoke_syscall+0x5c/0x130 >> > el0_svc_common.constprop.0+0x48/0xf8 >> > do_el0_svc+0x28/0x40 >> > el0_svc+0x30/0xd0 >> > el0t_64_sync_handler+0x144/0x168 >> > el0t_64_sync+0x198/0x1a0 >> > Code: 927e7442 aa1a03e0 8b020342 d503201f (b9400321) >> > ---[ end trace 0000000000000000 ]--- >> > >> > Or: >> > $ while true; do cat /dev/mtd0 >/dev/null; done & >> > $ echo spi0.0 > /sys/class/mtd/mtd0/device/driver/unbind >> > >> > Unable to handle kernel paging request at virtual address 000000000000= 12e8 >> > Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP >> > Modules linked in: >> > CPU: 2 UID: 0 PID: 459 Comm: cat Not tainted 6.14.0-rc7-yocto-standard= + #1 >> > Hardware name: SoCFPGA Stratix 10 SoCDK (DT) >> > pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=3D--) >> > pc : spi_mem_exec_op+0x3e8/0x478 >> > lr : spi_mem_exec_op+0x3e0/0x478 >> > Call trace: >> > spi_mem_exec_op+0x3e8/0x478 (P) >> > spi_mem_no_dirmap_read+0xa8/0xc8 >> > spi_mem_dirmap_read+0xdc/0x150 >> > spi_nor_read_data+0x120/0x198 >> > spi_nor_read+0xf0/0x280 >> > mtd_read_oob_std+0x80/0x98 >> > mtd_read_oob+0x9c/0x168 >> > mtd_read+0x6c/0xd8 >> > mtdchar_read+0xdc/0x288 >> > vfs_read+0xc8/0x2f8 >> > ksys_read+0x70/0x110 >> > __arm64_sys_read+0x24/0x38 >> > invoke_syscall+0x5c/0x130 >> > el0_svc_common.constprop.0+0x48/0xf8 >> > do_el0_svc+0x28/0x40 >> > el0_svc+0x30/0xd0 >> > el0t_64_sync_handler+0x144/0x168 >> > el0t_64_sync+0x198/0x1a0 >> > Code: f9400842 d63f0040 2a0003f4 f94002a1 (f9417437) >> > ---[ end trace 0000000000000000 ]--- >> > >> > when unbind is running, the memory allocated to qspi controller and >> > mtd device is freed during unbinding, but open/close and reading device >> > are still running, if the reading process get read lock and start >> > excuting, there will be above illegal memory access. This issue also >> > can be repruduced on many other platforms like ls1046 and nxpimx8 which >> > have qspi flash. >> > >> > In this patch, register a spi bus notifier which will be called before >> > unbind process freeing device memory, add a new member mtd_event_remove >> > to block mtd open/read, then waiting for the running task to be finish= ed, >> > after that, memory is safe to be free. >> > >> > Signed-off-by: Liwei Song >> > --- >> > >> > Hi Maintainer, >> > >> > This is an improved patch compared with the original one: >> > (https://patchwork.ozlabs.org/project/linux-mtd/patch/20250325133954.3= 699535-1-liwei.song.lsong@gmail.com/), >> > This v2 patch move notifier to spi-nor to avoid crash other types of f= lash. >> > now this patch only aim at fixing nor-flash "bind/unbind while reading= " calltrace, >> > but for other types of flash like nand also have this issue. >> >> While I agree with the observation and also the conclusion of adding >> some kind of notifier, I'd like to understand the rationale behind >> choosing to fix only spi-nor in v2? If any spi memory registered in the [...] >> > +static int spi_nor_remove_notifier_call(struct notifier_block *nb, >> > + unsigned long event, void *data) >> > +{ >> > + struct device *dev =3D data; >> > + struct spi_device *spi; >> > + struct spi_mem *mem; >> > + struct spi_nor *nor; >> > + >> > + if (!of_match_device(spi_nor_of_table, dev)) >> > + return 0; >> > + >> > + switch (event) { >> > + case BUS_NOTIFY_DEL_DEVICE: >> > + case BUS_NOTIFY_UNBIND_DRIVER: >> > + spi =3D to_spi_device(dev); >> > + mem =3D spi_get_drvdata(spi); >> > + if (!mem) >> > + return NOTIFY_DONE; >> > + nor =3D spi_mem_get_drvdata(mem); >> > + >> > + mutex_lock(&nor->lock); >> > + nor->mtd.mtd_event_remove =3D true; >> > + mutex_unlock(&nor->lock); >> > + msleep(300); >> >> What is this sleep for? > > The sleep is to wait the process which already got the lock and > running in reading > routine can be finished before memory is released, show in below scenario: > > without sleep: > -------------------------------------------------------------------- > mtd.mtd_event_remove =3D false; > reading start; > mtd.mtd_event_remove =3D true; > release memory > reading end; > -------------------------------------------------------------------- > > with sleep: > ------------------------------------------------------------------- > mtd.mtd_event_remove =3D false; > reading start; > mtd.mtd_event_remove =3D true; > sleep() start > reading end; > sleep() end > release memory > ------------------------------------------------------------------- This is not how we should manage lifetimes. Adding arbitrary sleeps to hope races go away is flaky and will break in strange ways that would be impossible to debug. For example, what if a read happens to take longer than 300ms? Instead, we should have a way to properly manage the lifetimes and sequence operations. I always thought that by the time spi_unregister_controller() returns, there are no longer any in-flight operations so freeing stuff after it would be safe. Seems not to be the case. After a quick look, seems like all SPI MEM devices are doing similar things in their remove callbacks, so I think they are affected by the same race. For example, nxp_fspi_remove() unmaps its AHB area, so in flight SPI MEM operations would fail. Similarly, spi-stm32 will release its DMA channels, and so on with others. I suspect that this notifier thing is not the proper way to manage the lifetimes here and there should be something better. We need a way for the driver to make sure the underlying MTD device is no longer active before it frees its memory. Mark/SPI folks, what do you think is the proper way of doing this? [...] --=20 Regards, Pratyush Yadav