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 530C5C02181 for ; Mon, 20 Jan 2025 12:47:17 +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=63ZLtIBFaBSUNkhAHxbrHi1ij5r1LE1X3G97nIJG074=; b=uF/LwatwsW2Lzn aZsoFTOWzrlfAlwvjR+Z+VrcmR+PbPXcvFznyteRbFLUR5yHTKCrFPwYzfIKs7USWthsCMEEY0dlO 1yCcs6FpyQgxuUPg2xHap5+258fkbZ2iUbHb6OL15Lw4exVU79T3YpShB6+cVuIzhj3ENAiJ+bYC/ PwdTamIiZpZRseIyf1vIY5pWsyTCPVyEMbU6XHdV5mSwbn6gjgI+A7irPQGEZgezQiBCC56I6zsog zlU8+Rorr6/d8AJudbwSPs65KaYNd4LaIXPwFg2goXn2Pe+G/v4i/4PyeN+41ROU3Q8Q8GSkC6olE U01PLO1qiRTqAneOg1Gg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tZrBO-00000005Zam-2nl3; Mon, 20 Jan 2025 12:47:10 +0000 Received: from relay1-d.mail.gandi.net ([217.70.183.193]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tZrBL-00000005ZaR-47Mf for linux-mtd@lists.infradead.org; Mon, 20 Jan 2025 12:47:09 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 97BD3240006; Mon, 20 Jan 2025 12:47:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1737377225; 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=Pybhlp0sJJPGmvMFF+Q4zrcQH0eGqr+y65cHiD+UM64=; b=iul40Ob8F2t57mhP2461QNZoMg30Z8wLSAQLIqZChGLMXlkGkZpdQHoVSooyIZGTHpfQrK Fpd6Ujlh8ry8rcSI7XM5pLMhTMEsYdhl0p8sd0M+f+yy3ILFP3YkUoOlNRjNvvSBkPsoaJ OZXdjYnsUv0P8h4ZKRctB/8HBfry564zFkKjIPem0aXRMEH78u1lct/VFrxzv5C5DqT5jg F3/D55mASFEhn/x2hI6rSRppgnleBRUfmTEtI0Euqy/oTZ8nEtbs5+1rMQ29GKtBxcUSXo tBY7LnBtboXiOOSx6icQ8Jn24/CNz3XVGzYowLOB8rhJ32NFrfMMRHWoX3dUOQ== From: Miquel Raynal To: Pratyush Yadav Cc: Tudor Ambarus , Michael Walle , Richard Weinberger , Vignesh Raghavendra , Thomas Petazzoni , Steam Lin , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] mtd: spi-nor: winbond: Add support for w25q01jv In-Reply-To: (Pratyush Yadav's message of "Wed, 15 Jan 2025 14:03:23 +0000") References: <20241224-winbond-6-12-rc1-nor-volatile-bit-v1-0-f7c4dff66182@bootlin.com> <20241224-winbond-6-12-rc1-nor-volatile-bit-v1-1-f7c4dff66182@bootlin.com> <871pxp798c.fsf@bootlin.com> <87a5btslfl.fsf@bootlin.com> User-Agent: mu4e 1.12.7; emacs 29.4 Date: Mon, 20 Jan 2025 13:47:04 +0100 Message-ID: <87jzapsldj.fsf@bootlin.com> 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-20250120_044708_434354_95ECC888 X-CRM114-Status: GOOD ( 18.32 ) 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 SGkgUHJhdHl1c2gsCgo+IE9rYXksIEkgYW0gY29uZnVzZWQgYmVjYXVzZSB5b3Ugc2FpZCBlYXJs aWVyIHRoYXQ6Cj4KPj4gVGhlIGJ1ZyB0aGF0IGhhcyBiZWVuIGV4cGVyaWVuY2VkIGZvbGxvd2Vk IHRoaXMgc2VxdWVuY2U6Cj4+IC0gc2VuZCB0aGUgd3JpdGUgZW5hYmxlIGNvbW1hbmQgKG5vbi12 b2xhdGlsZSkKPj4gLSB3YWl0IGZvciB0aGUgcmVhZHkvYnVzeSBiaXQsIGllLiB3YWl0IGZvciB0 aGUgV0VMIGJpdCB0byBiZSBzZXQKPj4gICBiZWNhdXNlIGl0IGlzIG5vbi12b2xhdGlsZSB3cml0 ZQo+PiAtIGFjdGl2ZSBkaWUgaXMgcmVhZHksIChidXQgaWRsZSBkaWUgaXMgbm90ISkKPj4gLSBl bnRlciA0LWJ5dGUgYWRkcmVzcyBtb2RlLCBvbmx5IHRoZSBkaWUgdGhhdCBpcyByZWFkeSBwcm9j ZXNzZXMgdGhlCj4+ICAgY29tbWFuZC4KPgo+IFdoaWNoIHNheXMgdGhlIFdFTCBiaXQgYmVpbmcg c2V0IGl0c2VsZiBpcyByYWN5LiBXaGF0IEkgdW5kZXJzdGFuZCBmcm9tCj4gdGhhdCBpcyBvbmUg ZGllIGlzIHJlYWR5IHRvIHRha2Ugd3JpdGVzIGFuZCB0aGUgb3RoZXIgaXMgbm90LiBOb3cgd2hl bgo+IHlvdSB0cnkgdG8gd3JpdGUgdGhlIFNSIHRvIGVuYWJsZSA0QiBtb2RlLCBpdCB3b3VsZCBv bmx5IHdvcmsgb24gdGhlIGRpZQo+IHRoYXQgZ290IHRoZSBXRUwgc2V0LiBUaGUgb3RoZXIgb25l IGlnbm9yZXMgaXQgYW5kIHN0YXlzIGluIDNCIG1vZGUuIERvCj4gSSB1bmRlcnN0YW5kIHRoaXMg Y29ycmVjdGx5PyBUbyBmaXggdGhpcyB5b3UgbmVlZCB0byB3YWl0IGFmdGVyIHRoZQo+IHdyaXRl IGVuYWJsZSwgYmVmb3JlIHlvdSBpbml0aWF0ZSB0aGUgd3JpdGUgU1Igb3BlcmF0aW9uLgoKU29y cnkgZm9yIHRoZSBjb25mdXNpb24sIEkgZ290IG15c2VsZiBjb25mdXNlZCBhcyB3ZWxsLiBJIGRv dWJsZSBjaGVja2VkCndpdGggV2luYm9uZCBhbmQgSSB0aGluayBJIGhhdmUgdGhlIGNvcnJlY3Qg ZXhwbGFuYXRpb24gbm93OgoKVGhlIFdFTCBiaXQgaXMgdm9sYXRpbGUsIHRoZXJlIGlzIG5vIGRl bGF5IHdoZW4gc2V0dGluZyBpdCAod2VsbCwgYWJvdXQKMTBucywgYnV0IG5vIHNwZWNpZmljIGRl dmlhdGlvbikuCgpPbiBtb3N0IGNoaXBzLCBXRUwgZW5hYmxlcyBhbGwgd3JpdGUgb3BlcmF0aW9u czoKICAqIChzaW5nbGUvZHVhbC9xdWFkKSBwYWdlIHByb2dyYW1zCiAgKiAoc2VjdG9yL2Jsb2Nr L2NoaXApIGVyYXNlcwogICogc3RhdHVzIHJlZ2lzdGVyIHdyaXRlCiAgKiBlcmFzZS9wcm9ncmFt IG9mIG90aGVyIGludGVybmFsIHJlZ2lzdGVycyAobGlrZSBzZWN1cml0eSByZWdpc3RlcnMpCgpP biBXaW5ib25kLCB0aGUgYWJvdmUgYXBwbGllcywgYnV0IHdpdGggdGhlIHVzdWFsICJXcml0ZSBF bmFibGUgY29tbWFuZAooMDZoKSIsIHRoZSBzdGF0dXMgcmVnaXN0ZXIgYml0cyBhcmUgbm9uLXZv bGF0aWxlLCBpZS4gdGhleSBhcmUgc3RvcmVkCmluIG5vbi12b2xhdGlsZSBjZWxscyAod2hpY2gg dGFrZXMgdGltZSB0byBwcm9ncmFtIGFuZCBhcmUgc3ViamVjdAp0byBkZXZpYXRpb25zIGFjcm9z cyBkaWVzKS4gSGVuY2UsIHRoZXkgYWRkZWQgYW5vdGhlciBjb21tYW5kLCBjYWxsZWQKIldyaXRl IEVuYWJsZSBmb3IgVm9sYXRpbGUgU3RhdHVzIFJlZ2lzdGVyICg1MGgpIiB3aGljaCBpcyBhbiBh ZGRpdGlvbgp0byB0aGUgdXN1YWwgIldyaXRlIEVuYWJsZSBjb21tYW5kICgwNmgpIiB3aGljaCBj YXVzZXM6Ci0gZW5hYmxpbmcgd3JpdGVzIG9uIHRoZSBzdGF0dXMgcmVnaXN0ZXIgb25seSAoaWYg dGhlIFdFTCBiaXQgaXMgbm90IHlldAogIHNldCkKLSB1c2luZyB2b2xhdGlsZSB3cml0ZXMgZm9y IHRoZSBzdGF0dXMgcmVnaXN0ZXIgYml0cyAoaWUuIHRoZXkgYXJlIHVzaW5nCiAgc29tZSBraW5k IG9mIGxvY2FsIGNhY2hlIHdoaWNoIHVwZGF0ZSBhbG1vc3QgaW1tZWRpYXRlbHkpLgoKU28gYmFz aWNhbGx5LCBpZiB5b3UgZG8gdGhlIGZvbGxvd2luZzoKLSBzdGF0dXMgcmVnaXN0ZXIgd3JpdGUK LSBjaGVjayB0aGUgc3RhdHVzIGJpdCB3aXRoIHRoZSBzdGFuZGFyZCBoZWxwZXIKLSAoYW5kIHF1 aWNrbHkgYWZ0ZXIpIGRvIGFueXRoaW5nIGVsc2Ugb24gdGhlIGlkbGUgZGllCkluIHRoaXMgY2Fz ZSB5b3UgY291bGQgZXhwZXJpZW5jZSBhIHJhY2UsIGJ1dCB0aGF0IGlzIG5vdCByZWxhdGVkIHRv IHRoZQpXcml0ZSBFbmFibGUgY29tbWFuZC4KCkluIGdlbmVyYWwgSSBiZWxpZXZlIGVuYWJsaW5n IHZvbGF0aWxlIHN0YXR1cyByZWdpc3RlciB3cml0ZXMgd291bGQgbm90CmJlIHVzZWZ1bCBhcyBs b25nIGFzIHdlIGhhdmUgdGhlICJyZWFkIHRoZSBzdGF0dXMgZnJvbSBhbGwgZGllcyIKd29ya2Fy b3VuZC4KCkxldCBtZSBrbm93IGlmIHNvbWV0aGluZyBpcyBzdGlsbCB1bmNsZWFyLgoKVGhhbmtz LApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) (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 4D3F11FC8 for ; Mon, 20 Jan 2025 12:47:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.193 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737377229; cv=none; b=azWGu983rUpOgDXtiZ5LUSmkek3q3EvGF6aTkQWniduvdSfdez5uF+WmHCurGmJj/IkwMDntAjCML9QJrI5lzXCdaUI48YrHT7jyC3qIjs5Sm7M5tz0ay3Jm0FkuZRrbOSYVgBzaIpObCK7O18x8Yh5noeGADHbl1voLWNCkjgI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737377229; c=relaxed/simple; bh=4C98rxGC3kvSwq649WzlHbQe4WkkaIEGcaAhVuuU57E=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type; b=sTC5MtXkDZt8gYGtcXkYuvErX47yn4rp31o1yzfc5Mr6xSdN5HB9Z0OcmE90AYTOq7dcxk4AE7DBbyoIW86sIP4bKBJx4F8C0tUPUlpWSMsd8D+JzaZOt7KqDjey7pE4wQqqlHYk29hs3ZhqRManxE43ohJCv++TuOtAc9B0RL8= 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=iul40Ob8; arc=none smtp.client-ip=217.70.183.193 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="iul40Ob8" Received: by mail.gandi.net (Postfix) with ESMTPSA id 97BD3240006; Mon, 20 Jan 2025 12:47:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1737377225; 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=Pybhlp0sJJPGmvMFF+Q4zrcQH0eGqr+y65cHiD+UM64=; b=iul40Ob8F2t57mhP2461QNZoMg30Z8wLSAQLIqZChGLMXlkGkZpdQHoVSooyIZGTHpfQrK Fpd6Ujlh8ry8rcSI7XM5pLMhTMEsYdhl0p8sd0M+f+yy3ILFP3YkUoOlNRjNvvSBkPsoaJ OZXdjYnsUv0P8h4ZKRctB/8HBfry564zFkKjIPem0aXRMEH78u1lct/VFrxzv5C5DqT5jg F3/D55mASFEhn/x2hI6rSRppgnleBRUfmTEtI0Euqy/oTZ8nEtbs5+1rMQ29GKtBxcUSXo tBY7LnBtboXiOOSx6icQ8Jn24/CNz3XVGzYowLOB8rhJ32NFrfMMRHWoX3dUOQ== From: Miquel Raynal To: Pratyush Yadav Cc: Tudor Ambarus , Michael Walle , Richard Weinberger , Vignesh Raghavendra , Thomas Petazzoni , Steam Lin , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] mtd: spi-nor: winbond: Add support for w25q01jv In-Reply-To: (Pratyush Yadav's message of "Wed, 15 Jan 2025 14:03:23 +0000") References: <20241224-winbond-6-12-rc1-nor-volatile-bit-v1-0-f7c4dff66182@bootlin.com> <20241224-winbond-6-12-rc1-nor-volatile-bit-v1-1-f7c4dff66182@bootlin.com> <871pxp798c.fsf@bootlin.com> <87a5btslfl.fsf@bootlin.com> User-Agent: mu4e 1.12.7; emacs 29.4 Date: Mon, 20 Jan 2025 13:47:04 +0100 Message-ID: <87jzapsldj.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-Sasl: miquel.raynal@bootlin.com Hi Pratyush, > Okay, I am confused because you said earlier that: > >> The bug that has been experienced followed this sequence: >> - send the write enable command (non-volatile) >> - wait for the ready/busy bit, ie. wait for the WEL bit to be set >> because it is non-volatile write >> - active die is ready, (but idle die is not!) >> - enter 4-byte address mode, only the die that is ready processes the >> command. > > Which says the WEL bit being set itself is racy. What I understand from > that is one die is ready to take writes and the other is not. Now when > you try to write the SR to enable 4B mode, it would only work on the die > that got the WEL set. The other one ignores it and stays in 3B mode. Do > I understand this correctly? To fix this you need to wait after the > write enable, before you initiate the write SR operation. Sorry for the confusion, I got myself confused as well. I double checked with Winbond and I think I have the correct explanation now: The WEL bit is volatile, there is no delay when setting it (well, about 10ns, but no specific deviation). On most chips, WEL enables all write operations: * (single/dual/quad) page programs * (sector/block/chip) erases * status register write * erase/program of other internal registers (like security registers) On Winbond, the above applies, but with the usual "Write Enable command (06h)", the status register bits are non-volatile, ie. they are stored in non-volatile cells (which takes time to program and are subject to deviations across dies). Hence, they added another command, called "Write Enable for Volatile Status Register (50h)" which is an addition to the usual "Write Enable command (06h)" which causes: - enabling writes on the status register only (if the WEL bit is not yet set) - using volatile writes for the status register bits (ie. they are using some kind of local cache which update almost immediately). So basically, if you do the following: - status register write - check the status bit with the standard helper - (and quickly after) do anything else on the idle die In this case you could experience a race, but that is not related to the Write Enable command. In general I believe enabling volatile status register writes would not be useful as long as we have the "read the status from all dies" workaround. Let me know if something is still unclear. Thanks, Miqu=C3=A8l