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 016DAC369CB for ; Tue, 29 Apr 2025 07:56:07 +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=H2yxAAEG7pMcu7EH/SyysIWaxhwBEiYnB1Jp0VeMiL0=; b=HQAn5EBg7IeDHA 0uT7RT4NnTeXO3XSuAj37l1NZeLOvRFvvBbK27Fxwf+68efcqu1Ohwu6WrjsddPtfPWDz4RTJ2dV0 LEscI8izvz6Ae2LbCZyDDcxsNMGPpN5jSdNyyAlWqAxTlrCMWXokDtWDNqUpSp7GXOg9P6HJgP5a5 +SvJMrBLPCK33/HDgyHSz64pn5fl9DxbmBZjzfrVWaQZuoP5AxEaZidByJczHpjRjrWx1m5oH+PCt LO8tXYeaIZ4XVe+9MVbv6LIIoHMhIoSQ938a5vP9xvp6+UAdCSjj9tpAkmvxYS3STmcPY7LaDKybt AOmxF8cwQ9yuxCHLKypA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u9fox-00000008pna-1aUi; Tue, 29 Apr 2025 07:56:03 +0000 Received: from relay2-d.mail.gandi.net ([2001:4b98:dc4:8::222]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u9fot-00000008pmJ-1ZQu for linux-mtd@lists.infradead.org; Tue, 29 Apr 2025 07:56:01 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 7DAD3438F7; Tue, 29 Apr 2025 07:55:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1745913356; 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=27NxqpJ//UrTOnLV5YKEgQaaGgpip1mmwz0DgoghWTs=; b=CY7BnI4tDfZHmbuuMwS7DRva2cpb/mYX0Oyy5iwehrfX7RulrSJyRa51cwLe5u36fmoAKf tEdbEg3J/v1gKfINeo67a+o5OK1IsOpgBHV5O70UmiBQDBei9O4z0YENlDdaeJNXwE3055 2i6cPVtbtQnrK5h4Vmut6T1e2fLiDtkpIsNaCyc05Urfeld3D8IJDERImw1rBLKhBhWnqE w2ZxCZIVxdiq2xRbYogxejJEiZ5HBFZlCr5LRscMCG960JW1ebMAJqTj5BCIAPlpdnW0hv LR7Y/bVxpdXJWBEHqLsrK+vwMfFQcHB1bDSrNL46XHxrwtyfEtfX6PWZ85BQrQ== From: Miquel Raynal To: Liwei Song Cc: RichardWeinberger , VigneshRaghavendra , TudorAmbarus , PratyushYadav , MichaelWalle , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] mtd: core: add sync between read/write and unbind device In-Reply-To: <20250331161542.3040005-1-liwei.song.lsong@gmail.com> (Liwei Song's message of "Tue, 1 Apr 2025 00:15:20 +0800") References: <20250325133954.3699535-1-liwei.song.lsong@gmail.com> <20250331161542.3040005-1-liwei.song.lsong@gmail.com> User-Agent: mu4e 1.12.7; emacs 29.4 Date: Tue, 29 Apr 2025 09:55:54 +0200 Message-ID: <87jz73v1th.fsf@bootlin.com> MIME-Version: 1.0 X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddvieefvdekucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefhvfevufgjfhgffffkgggtgfesthhqredttderjeenucfhrhhomhepofhiqhhuvghlucftrgihnhgrlhcuoehmihhquhgvlhdrrhgrhihnrghlsegsohhothhlihhnrdgtohhmqeenucggtffrrghtthgvrhhnpeeffeduhfefvdekheejueeivddvteehleffjeejhefghedtffeuffefkeduieegffenucffohhmrghinhepohiilhgrsghsrdhorhhgnecukfhppeelvddrudekgedruddtkedrvdehheenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeelvddrudekgedruddtkedrvdehhedphhgvlhhopehlohgtrghlhhhoshhtpdhmrghilhhfrhhomhepmhhiqhhuvghlrdhrrgihnhgrlhessghoohhtlhhinhdrtghomhdpnhgspghrtghpthhtohepkedprhgtphhtthhopehlihifvghirdhsohhnghdrlhhsohhnghesghhmrghilhdrtghomhdprhgtphhtthhopehrihgthhgrrhgusehnohgurdgrthdprhgtphhtthhopehvihhgnhgvshhhrhesthhirdgtohhmpdhrtghpthhtohepthhuughorhdrrghmsggrrhhusheslhhinhgrrhhordhorhhgpdhrtghpthhtohepphhrrghthihushhhsehkv ghrnhgvlhdrohhrghdprhgtphhtthhopehmfigrlhhlvgeskhgvrhhnvghlrdhorhhgpdhrtghpthhtoheplhhinhhugidqmhhtugeslhhishhtshdrihhnfhhrrgguvggrugdrohhrghdprhgtphhtthhopehlihhnuhigqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrgh X-GND-Sasl: miquel.raynal@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250429_005559_890103_9D9B06A1 X-CRM114-Status: GOOD ( 29.84 ) 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 SGVsbG8gTGl3ZWksCgpPbiAwMS8wNC8yMDI1IGF0IDAwOjE1OjIwICswOCwgTGl3ZWkgU29uZyA8 bGl3ZWkuc29uZy5sc29uZ0BnbWFpbC5jb20+IHdyb3RlOgoKPiBXaGVuIHVuYmluZCBtdGQgZGV2 aWNlIG9yIHFzcGkgY29udHJvbGxlciB3aXRoIGEgaGlnaCBmcmVxdWVuY3kKPiByZWFkaW5nIHRv IC9kZXYvbXRkMCBkZXZpY2UsIHRoZXJlIHdpbGwgYmUgQ2FsbHRyYWNlIGFzIGJlbG93Ogo+Cj4g JCB3aGlsZSB0cnVlOyBkbyBjYXQgL2Rldi9tdGQwID4vZGV2L251bGw7IGRvbmUgJgo+ICQgZWNo byBmZjhkMjAwMC5zcGkgID4gL3N5cy9idXMvcGxhdGZvcm0vZHJpdmVycy9jYWRlbmNlLXFzcGkv dW5iaW5kCj4KPiBJbnRlcm5hbCBlcnJvcjogc3luY2hyb25vdXMgZXh0ZXJuYWwgYWJvcnQ6IDAw MDAwMDAwOTYwMDAyMTAgWyMxXSBQUkVFTVBUIFNNUAo+IE1vZHVsZXMgbGlua2VkIGluOgo+IENQ VTogMyBVSUQ6IDAgUElEOiA0NjYgQ29tbTogY2F0IE5vdCB0YWludGVkIDYuMTQuMC1yYzcteW9j dG8tc3RhbmRhcmQrICMxCj4gSGFyZHdhcmUgbmFtZTogU29DRlBHQSBTdHJhdGl4IDEwIFNvQ0RL IChEVCkKPiBwYyA6IGNxc3BpX2luZGlyZWN0X3JlYWRfZXhlY3V0ZS5pc3JhLjArMHgxODgvMHgz MzAKPiBsciA6IGNxc3BpX2luZGlyZWN0X3JlYWRfZXhlY3V0ZS5pc3JhLjArMHgyMWMvMHgzMzAK PiBDYWxsIHRyYWNlOgo+ICBjcXNwaV9pbmRpcmVjdF9yZWFkX2V4ZWN1dGUuaXNyYS4wKzB4MTg4 LzB4MzMwIChQKQo+ICBjcXNwaV9leGVjX21lbV9vcCsweDhiYy8weGU0MAo+ICBzcGlfbWVtX2V4 ZWNfb3ArMHgzZTAvMHg0NzgKPiAgc3BpX21lbV9ub19kaXJtYXBfcmVhZCsweGE4LzB4YzgKPiAg c3BpX21lbV9kaXJtYXBfcmVhZCsweGRjLzB4MTUwCj4gIHNwaV9ub3JfcmVhZF9kYXRhKzB4MTIw LzB4MTk4Cj4gIHNwaV9ub3JfcmVhZCsweGYwLzB4MjgwCj4gIG10ZF9yZWFkX29vYl9zdGQrMHg4 MC8weDk4Cj4gIG10ZF9yZWFkX29vYisweDljLzB4MTY4Cj4gIG10ZF9yZWFkKzB4NmMvMHhkOAo+ ICBtdGRjaGFyX3JlYWQrMHhkYy8weDI4OAo+ICB2ZnNfcmVhZCsweGM4LzB4MmY4Cj4gIGtzeXNf cmVhZCsweDcwLzB4MTEwCj4gIF9fYXJtNjRfc3lzX3JlYWQrMHgyNC8weDM4Cj4gIGludm9rZV9z eXNjYWxsKzB4NWMvMHgxMzAKPiAgZWwwX3N2Y19jb21tb24uY29uc3Rwcm9wLjArMHg0OC8weGY4 Cj4gIGRvX2VsMF9zdmMrMHgyOC8weDQwCj4gIGVsMF9zdmMrMHgzMC8weGQwCj4gIGVsMHRfNjRf c3luY19oYW5kbGVyKzB4MTQ0LzB4MTY4Cj4gIGVsMHRfNjRfc3luYysweDE5OC8weDFhMAo+IENv ZGU6IDkyN2U3NDQyIGFhMWEwM2UwIDhiMDIwMzQyIGQ1MDMyMDFmIChiOTQwMDMyMSkKPiAtLS1b IGVuZCB0cmFjZSAwMDAwMDAwMDAwMDAwMDAwIF0tLS0KPgo+IE9yOgo+ICQgd2hpbGUgdHJ1ZTsg ZG8gY2F0IC9kZXYvbXRkMCA+L2Rldi9udWxsOyBkb25lICYKPiAkIGVjaG8gc3BpMC4wID4gL3N5 cy9jbGFzcy9tdGQvbXRkMC9kZXZpY2UvZHJpdmVyL3VuYmluZAo+Cj4gVW5hYmxlIHRvIGhhbmRs ZSBrZXJuZWwgcGFnaW5nIHJlcXVlc3QgYXQgdmlydHVhbCBhZGRyZXNzIDAwMDAwMDAwMDAwMDEy ZTgKPiBJbnRlcm5hbCBlcnJvcjogT29wczogMDAwMDAwMDA5NjAwMDAwNCBbIzFdIFBSRUVNUFQg U01QCj4gTW9kdWxlcyBsaW5rZWQgaW46Cj4gQ1BVOiAyIFVJRDogMCBQSUQ6IDQ1OSBDb21tOiBj YXQgTm90IHRhaW50ZWQgNi4xNC4wLXJjNy15b2N0by1zdGFuZGFyZCsgIzEKPiBIYXJkd2FyZSBu YW1lOiBTb0NGUEdBIFN0cmF0aXggMTAgU29DREsgKERUKQo+IHBzdGF0ZTogNjAwMDAwMDUgKG5a Q3YgZGFpZiAtUEFOIC1VQU8gLVRDTyAtRElUIC1TU0JTIEJUWVBFPS0tKQo+IHBjIDogc3BpX21l bV9leGVjX29wKzB4M2U4LzB4NDc4Cj4gbHIgOiBzcGlfbWVtX2V4ZWNfb3ArMHgzZTAvMHg0NzgK PiBDYWxsIHRyYWNlOgo+ICBzcGlfbWVtX2V4ZWNfb3ArMHgzZTgvMHg0NzggKFApCj4gIHNwaV9t ZW1fbm9fZGlybWFwX3JlYWQrMHhhOC8weGM4Cj4gIHNwaV9tZW1fZGlybWFwX3JlYWQrMHhkYy8w eDE1MAo+ICBzcGlfbm9yX3JlYWRfZGF0YSsweDEyMC8weDE5OAo+ICBzcGlfbm9yX3JlYWQrMHhm MC8weDI4MAo+ICBtdGRfcmVhZF9vb2Jfc3RkKzB4ODAvMHg5OAo+ICBtdGRfcmVhZF9vb2IrMHg5 Yy8weDE2OAo+ICBtdGRfcmVhZCsweDZjLzB4ZDgKPiAgbXRkY2hhcl9yZWFkKzB4ZGMvMHgyODgK PiAgdmZzX3JlYWQrMHhjOC8weDJmOAo+ICBrc3lzX3JlYWQrMHg3MC8weDExMAo+ICBfX2FybTY0 X3N5c19yZWFkKzB4MjQvMHgzOAo+ICBpbnZva2Vfc3lzY2FsbCsweDVjLzB4MTMwCj4gIGVsMF9z dmNfY29tbW9uLmNvbnN0cHJvcC4wKzB4NDgvMHhmOAo+ICBkb19lbDBfc3ZjKzB4MjgvMHg0MAo+ ICBlbDBfc3ZjKzB4MzAvMHhkMAo+ICBlbDB0XzY0X3N5bmNfaGFuZGxlcisweDE0NC8weDE2OAo+ ICBlbDB0XzY0X3N5bmMrMHgxOTgvMHgxYTAKPiBDb2RlOiBmOTQwMDg0MiBkNjNmMDA0MCAyYTAw MDNmNCBmOTQwMDJhMSAoZjk0MTc0MzcpCj4gLS0tWyBlbmQgdHJhY2UgMDAwMDAwMDAwMDAwMDAw MCBdLS0tCj4KPiB3aGVuIHVuYmluZCBpcyBydW5uaW5nLCB0aGUgbWVtb3J5IGFsbG9jYXRlZCB0 byBxc3BpIGNvbnRyb2xsZXIgYW5kCj4gbXRkIGRldmljZSBpcyBmcmVlZCBkdXJpbmcgdW5iaW5k aW5nLCBidXQgb3Blbi9jbG9zZSBhbmQgcmVhZGluZyBkZXZpY2UKPiBhcmUgc3RpbGwgcnVubmlu ZywgaWYgdGhlIHJlYWRpbmcgcHJvY2VzcyBnZXQgcmVhZCBsb2NrIGFuZCBzdGFydAo+IGV4Y3V0 aW5nLCB0aGVyZSB3aWxsIGJlIGFib3ZlIGlsbGVnYWwgbWVtb3J5IGFjY2Vzcy4gVGhpcyBpc3N1 ZSBhbHNvCj4gY2FuIGJlIHJlcHJ1ZHVjZWQgb24gbWFueSBvdGhlciBwbGF0Zm9ybXMgbGlrZSBs czEwNDYgYW5kIG54cGlteDggd2hpY2gKPiBoYXZlIHFzcGkgZmxhc2guCj4KPiBJbiB0aGlzIHBh dGNoLCByZWdpc3RlciBhIHNwaSBidXMgbm90aWZpZXIgd2hpY2ggd2lsbCBiZSBjYWxsZWQgYmVm b3JlCj4gdW5iaW5kIHByb2Nlc3MgZnJlZWluZyBkZXZpY2UgbWVtb3J5LCBhZGQgYSBuZXcgbWVt YmVyIG10ZF9ldmVudF9yZW1vdmUKPiB0byBibG9jayBtdGQgb3Blbi9yZWFkLCB0aGVuIHdhaXRp bmcgZm9yIHRoZSBydW5uaW5nIHRhc2sgdG8gYmUgZmluaXNoZWQsCj4gYWZ0ZXIgdGhhdCwgbWVt b3J5IGlzIHNhZmUgdG8gYmUgZnJlZS4KPgo+IFNpZ25lZC1vZmYtYnk6IExpd2VpIFNvbmcgPGxp d2VpLnNvbmcubHNvbmdAZ21haWwuY29tPgo+IC0tLQo+Cj4gSGkgTWFpbnRhaW5lciwKPgo+IFRo aXMgaXMgYW4gaW1wcm92ZWQgcGF0Y2ggY29tcGFyZWQgd2l0aCB0aGUgb3JpZ2luYWwgb25lOgo+ IChodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3Byb2plY3QvbGludXgtbXRkL3BhdGNoLzIw MjUwMzI1MTMzOTU0LjM2OTk1MzUtMS1saXdlaS5zb25nLmxzb25nQGdtYWlsLmNvbS8pLAo+IFRo aXMgdjIgcGF0Y2ggbW92ZSBub3RpZmllciB0byBzcGktbm9yIHRvIGF2b2lkIGNyYXNoIG90aGVy IHR5cGVzIG9mIGZsYXNoLgo+IG5vdyB0aGlzIHBhdGNoIG9ubHkgYWltIGF0IGZpeGluZyBub3It Zmxhc2ggImJpbmQvdW5iaW5kIHdoaWxlIHJlYWRpbmciIGNhbGx0cmFjZSwKPiBidXQgZm9yIG90 aGVyIHR5cGVzIG9mIGZsYXNoIGxpa2UgbmFuZCBhbHNvIGhhdmUgdGhpcyBpc3N1ZS4KCldoaWxl IEkgYWdyZWUgd2l0aCB0aGUgb2JzZXJ2YXRpb24gYW5kIGFsc28gdGhlIGNvbmNsdXNpb24gb2Yg YWRkaW5nCnNvbWUga2luZCBvZiBub3RpZmllciwgSSdkIGxpa2UgdG8gdW5kZXJzdGFuZCB0aGUg cmF0aW9uYWxlIGJlaGluZApjaG9vc2luZyB0byBmaXggb25seSBzcGktbm9yIGluIHYyPyBJZiBh bnkgc3BpIG1lbW9yeSByZWdpc3RlcmVkIGluIHRoZQptdGQgc3Vic3lzdGVtIGlzIHN1YmplY3Qg dG8gdGhpcyBmYWlsdXJlLCB3ZSBzaG91bGQgZmluZCBhIGdlbmVyaWMKYXBwcm9hY2ggKG9yIGlm IGl0J3MgdG9vIGRpZmZpY3VsdCwgYXQgbGVhc3QgaGF2ZSB0aGUgZml4IGluIGJvdGgKc3BpIG5v ciBhbmQgc3BpIG5hbmQpLiBMb29raW5nIGF0IHlvdXIgaW1wbGVtZW50YXRpb24sIG1heWJlIGl0 IGNvdWxkCmZpdCBpbiBzcGktbWVtIChJJ20gbm90IHN1cmUpLgoKLi4uCgo+ICtzdGF0aWMgaW50 IHNwaV9ub3JfcmVtb3ZlX25vdGlmaWVyX2NhbGwoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwK PiArCQkJCQl1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkCj4gKmRhdGEpOwoKSSBiZWxpZXZlIHNw aSBub3IgbWFpdGFpbmVycyB3b3VsZCBwcmVmZXIgdG8gYXZvaWQgZm9yd2FyZCBkZWNsYXJhdGlv bnMuCgo+ICsKPiAgLyoqCj4gICAqIHNwaV9ub3JfZ2V0X2NtZF9leHQoKSAtIEdldCB0aGUgY29t bWFuZCBvcGNvZGUgZXh0ZW5zaW9uIGJhc2VkIG9uIHRoZQo+ICAgKgkJCSAgIGV4dGVuc2lvbiB0 eXBlLgo+IEBAIC0xMTkxLDYgKzExOTUsOSBAQCBzdGF0aWMgaW50IHNwaV9ub3JfcHJlcChzdHJ1 Y3Qgc3BpX25vciAqbm9yKQo+ICAJaWYgKG5vci0+Y29udHJvbGxlcl9vcHMgJiYgbm9yLT5jb250 cm9sbGVyX29wcy0+cHJlcGFyZSkKPiAgCQlyZXQgPSBub3ItPmNvbnRyb2xsZXJfb3BzLT5wcmVw YXJlKG5vcik7Cj4gIAo+ICsJaWYgKG5vci0+bXRkLm10ZF9ldmVudF9yZW1vdmUpCj4gKwkJcmV0 dXJuIC1FTk9ERVY7Cj4gKwo+ICAJcmV0dXJuIHJldDsKPiAgfQoKLi4uCgo+ICtzdGF0aWMgaW50 IHNwaV9ub3JfcmVtb3ZlX25vdGlmaWVyX2NhbGwoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwK PiArCQkJCSAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSBkYXRhOwo+ICsJc3RydWN0IHNwaV9kZXZpY2UgKnNwaTsKPiArCXN0 cnVjdCBzcGlfbWVtICptZW07Cj4gKwlzdHJ1Y3Qgc3BpX25vciAqbm9yOwo+ICsKPiArCWlmICgh b2ZfbWF0Y2hfZGV2aWNlKHNwaV9ub3Jfb2ZfdGFibGUsIGRldikpCj4gKwkJcmV0dXJuIDA7Cj4g Kwo+ICsJc3dpdGNoIChldmVudCkgewo+ICsJY2FzZSBCVVNfTk9USUZZX0RFTF9ERVZJQ0U6Cj4g KwljYXNlIEJVU19OT1RJRllfVU5CSU5EX0RSSVZFUjoKPiArCQlzcGkgPSB0b19zcGlfZGV2aWNl KGRldik7Cj4gKwkJbWVtID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7Cj4gKwkJaWYgKCFtZW0pCj4g KwkJCXJldHVybiBOT1RJRllfRE9ORTsKPiArCQlub3IgPSBzcGlfbWVtX2dldF9kcnZkYXRhKG1l bSk7Cj4gKwo+ICsJCW11dGV4X2xvY2soJm5vci0+bG9jayk7Cj4gKwkJbm9yLT5tdGQubXRkX2V2 ZW50X3JlbW92ZSA9IHRydWU7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZub3ItPmxvY2spOwo+ICsJCW1z bGVlcCgzMDApOwoKV2hhdCBpcyB0aGlzIHNsZWVwIGZvcj8KCj4gKwo+ICsJCWJyZWFrOwo+ICsJ fQo+ICsKPiArCXJldHVybiBOT1RJRllfRE9ORTsKPiArfQo+ICsKPiAgLyoKPiAgICogUkVWSVNJ VDogbWFueSBvZiB0aGVzZSBjaGlwcyBoYXZlIGRlZXAgcG93ZXItZG93biBtb2Rlcywgd2hpY2gK PiAgICogc2hvdWxkIGNsZWFybHkgYmUgZW50ZXJlZCBvbiBzdXNwZW5kKCkgdG8gbWluaW1pemUg cG93ZXIgdXNlLgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L210ZC9tdGQuaCBiL2luY2x1 ZGUvbGludXgvbXRkL210ZC5oCj4gaW5kZXggOGQxMGQ5ZDJlODMwLi4xMzRiZmE2ZmNmNzYgMTAw NjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9tdGQvbXRkLmgKPiArKysgYi9pbmNsdWRlL2xpbnV4 L210ZC9tdGQuaAo+IEBAIC0yOTAsNiArMjkwLDcgQEAgc3RydWN0IG10ZF9pbmZvIHsKPiAgCS8q IEtlcm5lbC1vbmx5IHN0dWZmIHN0YXJ0cyBoZXJlLiAqLwo+ICAJY29uc3QgY2hhciAqbmFtZTsK PiAgCWludCBpbmRleDsKPiArCWJvb2wgbXRkX2V2ZW50X3JlbW92ZTsKCk5vIG5lZWQgdG8gcmVw ZWF0ICdtdGQnIGhlcmUsIHlvdSBhcmUgYWxyZWFkeSBpbiB0aGUgbXRkX2luZm8gc3RydWN0dXJl LApzbyBtdGQtPm10ZF9ldmVudF9yZW1vdmUgd291bGQgYmUgcmVkdW5kYW50LgoKPiAgCS8qIE9P QiBsYXlvdXQgZGVzY3JpcHRpb24gKi8KPiAgCWNvbnN0IHN0cnVjdCBtdGRfb29ibGF5b3V0X29w cyAqb29ibGF5b3V0OwoKVGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGlu ZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt bXRkLwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net [217.70.183.194]) (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 1CC6D227EAE for ; Tue, 29 Apr 2025 07:55:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.194 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745913360; cv=none; b=ss8Fn5Hr9K8622828AY6U3e0Wm6y75KViwToPVIbMMzaR0Qo8RFSLjkOZn5H+YkKPq1Gx96STg60w5ozNKxGe/Bh1Z4gs3J1iiHd6RaRCCvIWLl/O3DekmXILxB7M+Kvmy3yQjS+haNtbpWd3F397abTc4dAG4W8WcU7vu6v2nY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745913360; c=relaxed/simple; bh=TaFLTRrzTco1H+Ykw1y7W3NGYFLY08UPb+NWjzli2Zw=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type; b=a+9SNGP76oPUmV+ey7lddmISWJoPtsrNfz+DObwNtzZVF9Zcnh2/dFYt8LOBSJbFBm+94nH6gbvZ3uX76HUrRSdjJ/AZGx/3LD/iDMXD21yun1DHZuM30MbsyiN/7eGq4HOk5eq+geb0hpNLcPWBK65mhPxK2kjYyEyKl77tfCU= 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=CY7BnI4t; arc=none smtp.client-ip=217.70.183.194 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="CY7BnI4t" Received: by mail.gandi.net (Postfix) with ESMTPSA id 7DAD3438F7; Tue, 29 Apr 2025 07:55:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1745913356; 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=27NxqpJ//UrTOnLV5YKEgQaaGgpip1mmwz0DgoghWTs=; b=CY7BnI4tDfZHmbuuMwS7DRva2cpb/mYX0Oyy5iwehrfX7RulrSJyRa51cwLe5u36fmoAKf tEdbEg3J/v1gKfINeo67a+o5OK1IsOpgBHV5O70UmiBQDBei9O4z0YENlDdaeJNXwE3055 2i6cPVtbtQnrK5h4Vmut6T1e2fLiDtkpIsNaCyc05Urfeld3D8IJDERImw1rBLKhBhWnqE w2ZxCZIVxdiq2xRbYogxejJEiZ5HBFZlCr5LRscMCG960JW1ebMAJqTj5BCIAPlpdnW0hv LR7Y/bVxpdXJWBEHqLsrK+vwMfFQcHB1bDSrNL46XHxrwtyfEtfX6PWZ85BQrQ== From: Miquel Raynal To: Liwei Song Cc: RichardWeinberger , VigneshRaghavendra , TudorAmbarus , PratyushYadav , MichaelWalle , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] mtd: core: add sync between read/write and unbind device In-Reply-To: <20250331161542.3040005-1-liwei.song.lsong@gmail.com> (Liwei Song's message of "Tue, 1 Apr 2025 00:15:20 +0800") References: <20250325133954.3699535-1-liwei.song.lsong@gmail.com> <20250331161542.3040005-1-liwei.song.lsong@gmail.com> User-Agent: mu4e 1.12.7; emacs 29.4 Date: Tue, 29 Apr 2025 09:55:54 +0200 Message-ID: <87jz73v1th.fsf@bootlin.com> 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-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddvieefvdekucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefhvfevufgjfhgffffkgggtgfesthhqredttderjeenucfhrhhomhepofhiqhhuvghlucftrgihnhgrlhcuoehmihhquhgvlhdrrhgrhihnrghlsegsohhothhlihhnrdgtohhmqeenucggtffrrghtthgvrhhnpeeffeduhfefvdekheejueeivddvteehleffjeejhefghedtffeuffefkeduieegffenucffohhmrghinhepohiilhgrsghsrdhorhhgnecukfhppeelvddrudekgedruddtkedrvdehheenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeelvddrudekgedruddtkedrvdehhedphhgvlhhopehlohgtrghlhhhoshhtpdhmrghilhhfrhhomhepmhhiqhhuvghlrdhrrgihnhgrlhessghoohhtlhhinhdrtghomhdpnhgspghrtghpthhtohepkedprhgtphhtthhopehlihifvghirdhsohhnghdrlhhsohhnghesghhmrghilhdrtghomhdprhgtphhtthhopehrihgthhgrrhgusehnohgurdgrthdprhgtphhtthhopehvihhgnhgvshhhrhesthhirdgtohhmpdhrtghpthhtohepthhuughorhdrrghmsggrrhhusheslhhinhgrrhhordhorhhgpdhrtghpthhtohepphhrrghthihushhhsehkv ghrnhgvlhdrohhrghdprhgtphhtthhopehmfigrlhhlvgeskhgvrhhnvghlrdhorhhgpdhrtghpthhtoheplhhinhhugidqmhhtugeslhhishhtshdrihhnfhhrrgguvggrugdrohhrghdprhgtphhtthhopehlihhnuhigqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrgh X-GND-Sasl: miquel.raynal@bootlin.com Hello Liwei, On 01/04/2025 at 00:15:20 +08, Liwei Song wrot= e: > 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] PREEMPT= 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 00000000000012e8 > 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 finished, > 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.3699= 535-1-liwei.song.lsong@gmail.com/), > This v2 patch move notifier to spi-nor to avoid crash other types of flas= h. > now this patch only aim at fixing nor-flash "bind/unbind while reading" c= alltrace, > 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 mtd subsystem is subject to this failure, we should find a generic approach (or if it's too difficult, at least have the fix in both spi nor and spi nand). Looking at your implementation, maybe it could fit in spi-mem (I'm not sure). ... > +static int spi_nor_remove_notifier_call(struct notifier_block *nb, > + unsigned long event, void > *data); I believe spi nor maitainers would prefer to avoid forward declarations. > + > /** > * spi_nor_get_cmd_ext() - Get the command opcode extension based on the > * extension type. > @@ -1191,6 +1195,9 @@ static int spi_nor_prep(struct spi_nor *nor) > if (nor->controller_ops && nor->controller_ops->prepare) > ret =3D nor->controller_ops->prepare(nor); >=20=20 > + if (nor->mtd.mtd_event_remove) > + return -ENODEV; > + > return ret; > } ... > +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? > + > + break; > + } > + > + return NOTIFY_DONE; > +} > + > /* > * REVISIT: many of these chips have deep power-down modes, which > * should clearly be entered on suspend() to minimize power use. > diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h > index 8d10d9d2e830..134bfa6fcf76 100644 > --- a/include/linux/mtd/mtd.h > +++ b/include/linux/mtd/mtd.h > @@ -290,6 +290,7 @@ struct mtd_info { > /* Kernel-only stuff starts here. */ > const char *name; > int index; > + bool mtd_event_remove; No need to repeat 'mtd' here, you are already in the mtd_info structure, so mtd->mtd_event_remove would be redundant. > /* OOB layout description */ > const struct mtd_ooblayout_ops *ooblayout; Thanks, Miqu=C3=A8l