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 9D2ADCE7D05 for ; Tue, 1 Oct 2024 10:17:36 +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=udZkukceMZqN6/hyoBH8ompWXZYFdAGXT2MG41yM0UM=; b=EcziE7p9L0YAfZ s5+kFl71W/DDKCAeHi+0g0YFmU/mYvt4kI4oECgkCZ17pyxn1R0Kt9T8uwFfVfup9Kxave9jNfPSF tT1w9/mXde82pGEGu8QZJk8x+hnHbZa+G0ybJ32H0yuUwmCQOX/Lgk82k2/WF3PbUfR2tkpseABj4 tfjDr8DDT9PdDpCS0fUbsdXGLMFnOjJxjSPTLYhxCEqpLzAIsdPYOJJWnTcXPKZOSxseFcQMt+rhg v0M/bTSMq8gKsqSp+QoPuQ22o7P+OLc5cpE1Jnoil9FkT3PLYTufT/Hpv9xPS5l8P6s4OrUiPvqhS DnuBdkJZ/zyH7tMFBDmQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1svZwh-00000002KGl-1y5b; Tue, 01 Oct 2024 10:17:31 +0000 Received: from relay6-d.mail.gandi.net ([2001:4b98:dc4:8::226]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1svZwe-00000002KGF-0YHv for linux-mtd@lists.infradead.org; Tue, 01 Oct 2024 10:17:29 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id CB755C0005; Tue, 1 Oct 2024 10:17:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1727777845; 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=nzlKtMlNbWoB+9nbUO2l1PKIgrmDbUGSSNNWpNY2W8k=; b=fi+shI2hhDTsgzZeDttStg0qgsb/l+MA8w3CYU5gBmiYGdstiOKv7a4wIoLqomFeuudCd5 D0eL73e4legzoXxdIs6EzvFzgoqrKj2/iVAQo3v76LlTeYdTJ+13eEjVJBDUrbe53T85k1 1otd+yD98h4bhMlALyD5p4Rd6eD4385z82nPgdErv24JxR67dEgvSLdAv6fJRbyIUAmtwD /BB35l1Zoeq65XSt1oRVXMC5Dpb3XL6qz/Tq5JtXK0rIEseEBE7Ow7GMYg769NFZUQYWsl /Fb9dtwR+71/6mxU2Hdy0cr1UdG+M8IjIH/kzsUjOj+zvINYk2UAT6c5Bx0faw== Date: Tue, 1 Oct 2024 12:17:24 +0200 From: Miquel Raynal To: Cheng Ming Lin Cc: vigneshr@ti.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, richard@nod.at, alvinzhou@mxic.com.tw, leoyu@mxic.com.tw, Cheng Ming Lin Subject: Re: [PATCH 2/2] mtd: spi-nand: Add read retry support Message-ID: <20241001121724.5edbb64b@xps-13> In-Reply-To: <20240905055333.2363358-3-linchengming884@gmail.com> References: <20240905055333.2363358-1-linchengming884@gmail.com> <20240905055333.2363358-3-linchengming884@gmail.com> Organization: Bootlin X-Mailer: Claws Mail 4.2.0 (GTK 3.24.41; 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-20241001_031728_653454_E3006F42 X-CRM114-Status: GOOD ( 23.58 ) 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 SGkgQ2hlbmcgTWluZywKCmxpbmNoZW5nbWluZzg4NEBnbWFpbC5jb20gd3JvdGUgb24gVGh1LCAg NSBTZXAgMjAyNCAxMzo1MzozMyArMDgwMDoKCj4gRnJvbTogQ2hlbmcgTWluZyBMaW4gPGNoZW5n bWluZ2xpbkBteGljLmNvbS50dz4KPiAKPiBXaGVuIHRoZSBob3N0IEVDQyBmYWlscyB0byBjb3Jy ZWN0IHRoZSBkYXRhIGVycm9yIG9mIE5BTkQgZGV2aWNlLAo+IHRoZXJlJ3MgYSBzcGVjaWFsIHJl YWQgZm9yIGRhdGEgcmVjb3ZlcnkgbWV0aG9kIHdoaWNoIGhvc3Qgc2V0dXBzCj4gZm9yIHRoZSBu ZXh0IHJlYWQgcmV0cnkgbW9kZSBhbmQgbWF5IHJlY292ZXIgdGhlIGxvc3QgZGF0YSBieSBob3N0 Cj4gRUNDIGFnYWluLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENoZW5nIE1pbmcgTGluIDxjaGVuZ21p bmdsaW5AbXhpYy5jb20udHc+Cj4gLS0tCj4gIGRyaXZlcnMvbXRkL25hbmQvc3BpL2NvcmUuYyB8 IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ICAxIGZpbGUgY2hhbmdlZCwg MzEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tdGQvbmFuZC9zcGkvY29yZS5jIGIvZHJpdmVycy9tdGQvbmFuZC9zcGkvY29yZS5jCj4gaW5k ZXggZTBiNjcxNWU1ZGZlLi4yZjIxZWE5MjYxMzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tdGQv bmFuZC9zcGkvY29yZS5jCj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9zcGkvY29yZS5jCj4gQEAg LTY0MCw2ICs2NDAsNyBAQCBzdGF0aWMgaW50IHNwaW5hbmRfbXRkX3JlYWQoc3RydWN0IG10ZF9p bmZvICptdGQsIGxvZmZfdCBmcm9tLAo+ICAJc3RydWN0IG5hbmRfaW9faXRlciBpdGVyOwo+ICAJ Ym9vbCBkaXNhYmxlX2VjYyA9IGZhbHNlOwo+ICAJYm9vbCBlY2NfZmFpbGVkID0gZmFsc2U7Cj4g Kwl1OCByZXRyeV9tb2RlID0gMDsKPiAgCWludCByZXQgPSAwOwo+ICAKPiAgCWlmIChvcHMtPm1v ZGUgPT0gTVREX09QU19SQVcgfHwgIXNwaW5hbmQtPmVjY2luZm8ub29ibGF5b3V0KQo+IEBAIC02 NTcsMjAgKzY1OCw0NSBAQCBzdGF0aWMgaW50IHNwaW5hbmRfbXRkX3JlYWQoc3RydWN0IG10ZF9p bmZvICptdGQsIGxvZmZfdCBmcm9tLAoKVGhpcyB3aWxsIG5vIGxvbmdlciBhcHBseSB3aXRoIGNv bnRpbnVvdXMgc3VwcG9ydCBhZGRlZCBpbi4gSG93ZXZlcgpwbGVhc2UgbWFrZSB0aGlzIG9ubHkg aW4gdGhlIG5vbiBjb250aW51b3VzIHBhdGguIEkgZG9uJ3QgdGhpbmsgaXQgY2FuCmZseSBpbiB0 aGUgb3RoZXIuCgo+ICAJCWlmIChyZXQpCj4gIAkJCWJyZWFrOwo+ICAKPiArcmVhZF9yZXRyeToK PiAgCQlyZXQgPSBzcGluYW5kX3JlYWRfcGFnZShzcGluYW5kLCAmaXRlci5yZXEpOwo+ICAJCWlm IChyZXQgPCAwICYmIHJldCAhPSAtRUJBRE1TRykKPiAgCQkJYnJlYWs7Cj4gIAo+IC0JCWlmIChy ZXQgPT0gLUVCQURNU0cpCj4gKwkJaWYgKHJldCA9PSAtRUJBRE1TRyAmJiBzcGluYW5kLT5pbmZv LT5maXh1cHMpIHsKPiArCQkJaWYgKHNwaW5hbmQtPnJlYWRfcmV0cmllcyAmJiAoKHJldHJ5X21v ZGUgKyAxKSA8IHNwaW5hbmQtPnJlYWRfcmV0cmllcykpIHsKCgkJCQkJCQkrK3JldHJ5X21vZGU/ Cj4gKwkJCQlyZXRyeV9tb2RlKys7CgpTbyB0aGlzIGNhbiBiZSBkcm9wcGVkLgoKPiArCQkJCXJl dCA9IHNwaW5hbmQtPmluZm8tPmZpeHVwcy0+c2V0dXBfcmVhZF9yZXRyeShzcGluYW5kLCByZXRy eV9tb2RlKTsKPiArCQkJCWlmIChyZXQgPCAwKQo+ICsJCQkJCWJyZWFrOwoKTm8sIHlvdSBuZWVk IHRvIHNldCBlY2NfZmFpbGVkIGhlcmUuCgo+ICsKPiArCQkJCS8qIFJlc2V0IGVjY19zdGF0czsg cmV0cnkgKi8KPiArCQkJCW10ZC0+ZWNjX3N0YXRzID0gb2xkX3N0YXRzOwo+ICsJCQkJZ290byBy ZWFkX3JldHJ5Owo+ICsJCQl9IGVsc2Ugewo+ICsJCQkJLyogTm8gbW9yZSByZXRyeSBtb2Rlczsg cmVhbCBmYWlsdXJlICovCj4gKwkJCQllY2NfZmFpbGVkID0gdHJ1ZTsKPiArCQkJfQo+ICsJCX0g ZWxzZSBpZiAocmV0ID09IC1FQkFETVNHKSB7Cj4gIAkJCWVjY19mYWlsZWQgPSB0cnVlOwo+IC0J CWVsc2UKPiArCQl9IGVsc2Ugewo+ICAJCQltYXhfYml0ZmxpcHMgPSBtYXhfdCh1bnNpZ25lZCBp bnQsIG1heF9iaXRmbGlwcywgcmV0KTsKPiArCQl9Cj4gIAo+ICAJCXJldCA9IDA7Cj4gIAkJb3Bz LT5yZXRsZW4gKz0gaXRlci5yZXEuZGF0YWxlbjsKPiAgCQlvcHMtPm9vYnJldGxlbiArPSBpdGVy LnJlcS5vb2JsZW47Cj4gKwo+ICsJCS8qIFJlc2V0IHRvIHJldHJ5IG1vZGUgMCovCj4gKwkJaWYg KHJldHJ5X21vZGUpIHsKCgkJCXJldHJ5X21vZGUgPSAwOwoKPiArCQkJcmV0ID0gc3BpbmFuZC0+ aW5mby0+Zml4dXBzLT5zZXR1cF9yZWFkX3JldHJ5KHNwaW5hbmQsIDApOwoKCQkJCQkJCQkJcmV0 cnlfbW9kZSk7Cgo+ICsJCQlpZiAocmV0IDwgMCkKPiArCQkJCWJyZWFrOwoKdGhpcyBpZiBjbGF1 c2UgaXMgdXNlbGVzcy4KCj4gKwkJCXJldHJ5X21vZGUgPSAwOwoKQW5kIHRoZW4gdGhpcyBjYW4g YmUgZHJvcHBlZCBmcm9tIGhlcmUuCgo+ICsJCX0KPiAgCX0KPiAgCj4gKwoKU3B1cmlvdXMgbGlu ZQoKPiAgCWlmIChvcHMtPnN0YXRzKSB7Cj4gIAkJb3BzLT5zdGF0cy0+dW5jb3JyZWN0YWJsZV9l cnJvcnMgKz0KPiAgCQkJbXRkLT5lY2Nfc3RhdHMuZmFpbGVkIC0gb2xkX3N0YXRzLmZhaWxlZDsK PiBAQCAtMTA5NSw2ICsxMTIxLDkgQEAgaW50IHNwaW5hbmRfbWF0Y2hfYW5kX2luaXQoc3RydWN0 IHNwaW5hbmRfZGV2aWNlICpzcGluYW5kLAo+ICAJCXNwaW5hbmQtPmZsYWdzID0gdGFibGVbaV0u ZmxhZ3M7Cj4gIAkJc3BpbmFuZC0+aWQubGVuID0gMSArIHRhYmxlW2ldLmRldmlkLmxlbjsKPiAg CQlzcGluYW5kLT5zZWxlY3RfdGFyZ2V0ID0gdGFibGVbaV0uc2VsZWN0X3RhcmdldDsKPiArCQlz cGluYW5kLT5pbmZvID0gaW5mbzsKPiArCQlpZiAoc3BpbmFuZC0+aW5mby0+Zml4dXBzICYmIHNw aW5hbmQtPmluZm8tPmZpeHVwcy0+aW5pdF9yZWFkX3JldHJ5KQo+ICsJCQlzcGluYW5kLT5yZWFk X3JldHJpZXMgPSBzcGluYW5kLT5pbmZvLT5maXh1cHMtPmluaXRfcmVhZF9yZXRyeShzcGluYW5k KTsKCk5vdyBJIGdldCB5b3UgaW5pdC4gT2ssIGZpbmUuCgo+ICAKPiAgCQlvcCA9IHNwaW5hbmRf c2VsZWN0X29wX3ZhcmlhbnQoc3BpbmFuZCwKPiAgCQkJCQkgICAgICAgaW5mby0+b3BfdmFyaWFu dHMucmVhZF9jYWNoZSk7CgoKVGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFp bGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtbXRkLwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) (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 2F7FF3209 for ; Tue, 1 Oct 2024 10:17:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.198 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727777849; cv=none; b=qsW/EC6yb59j1t19ECqHjH+8AY7DUv5OfykJE44/j9iOn/jBYJA82Cz2QQ+S+EOBzYLsHJVCP6qIx4iW4i1iGX2mJ5ysC7xa/EMOonjp2m/6SByjJBkMhGjckQls6gQOeWsd3xudqDS8hCKbQdwMG47AdVWBgzR9nsV/AiZsbRQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727777849; c=relaxed/simple; bh=I5s3PMnJIYKJsBxGUM6/X8Bd1Iqzuh4phZNdtyU7IPA=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=FHcv9RR27yGWioPPOC+ixmde9jbMOUntuk/RSjkIeUOG+XmP+/56+OVyWGjWEBxbEH4IveQiXoT4IEHMGe1xGV0WIg2dBkgXbseeAc0mdz9yLOKuE3bFPwYLMkMSgukLzftrqq5YaNd9gpmyH7enC7drNJ6bf4suiT8tdN5R7yw= 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=fi+shI2h; arc=none smtp.client-ip=217.70.183.198 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="fi+shI2h" Received: by mail.gandi.net (Postfix) with ESMTPSA id CB755C0005; Tue, 1 Oct 2024 10:17:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1727777845; 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=nzlKtMlNbWoB+9nbUO2l1PKIgrmDbUGSSNNWpNY2W8k=; b=fi+shI2hhDTsgzZeDttStg0qgsb/l+MA8w3CYU5gBmiYGdstiOKv7a4wIoLqomFeuudCd5 D0eL73e4legzoXxdIs6EzvFzgoqrKj2/iVAQo3v76LlTeYdTJ+13eEjVJBDUrbe53T85k1 1otd+yD98h4bhMlALyD5p4Rd6eD4385z82nPgdErv24JxR67dEgvSLdAv6fJRbyIUAmtwD /BB35l1Zoeq65XSt1oRVXMC5Dpb3XL6qz/Tq5JtXK0rIEseEBE7Ow7GMYg769NFZUQYWsl /Fb9dtwR+71/6mxU2Hdy0cr1UdG+M8IjIH/kzsUjOj+zvINYk2UAT6c5Bx0faw== Date: Tue, 1 Oct 2024 12:17:24 +0200 From: Miquel Raynal To: Cheng Ming Lin Cc: vigneshr@ti.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, richard@nod.at, alvinzhou@mxic.com.tw, leoyu@mxic.com.tw, Cheng Ming Lin Subject: Re: [PATCH 2/2] mtd: spi-nand: Add read retry support Message-ID: <20241001121724.5edbb64b@xps-13> In-Reply-To: <20240905055333.2363358-3-linchengming884@gmail.com> References: <20240905055333.2363358-1-linchengming884@gmail.com> <20240905055333.2363358-3-linchengming884@gmail.com> Organization: Bootlin X-Mailer: Claws Mail 4.2.0 (GTK 3.24.41; 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 Cheng Ming, linchengming884@gmail.com wrote on Thu, 5 Sep 2024 13:53:33 +0800: > From: Cheng Ming Lin >=20 > When the host ECC fails to correct the data error of NAND device, > there's a special read for data recovery method which host setups > for the next read retry mode and may recover the lost data by host > ECC again. >=20 > Signed-off-by: Cheng Ming Lin > --- > drivers/mtd/nand/spi/core.c | 33 +++++++++++++++++++++++++++++++-- > 1 file changed, 31 insertions(+), 2 deletions(-) >=20 > diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c > index e0b6715e5dfe..2f21ea926132 100644 > --- a/drivers/mtd/nand/spi/core.c > +++ b/drivers/mtd/nand/spi/core.c > @@ -640,6 +640,7 @@ static int spinand_mtd_read(struct mtd_info *mtd, lof= f_t from, > struct nand_io_iter iter; > bool disable_ecc =3D false; > bool ecc_failed =3D false; > + u8 retry_mode =3D 0; > int ret =3D 0; > =20 > if (ops->mode =3D=3D MTD_OPS_RAW || !spinand->eccinfo.ooblayout) > @@ -657,20 +658,45 @@ static int spinand_mtd_read(struct mtd_info *mtd, l= off_t from, This will no longer apply with continuous support added in. However please make this only in the non continuous path. I don't think it can fly in the other. > if (ret) > break; > =20 > +read_retry: > ret =3D spinand_read_page(spinand, &iter.req); > if (ret < 0 && ret !=3D -EBADMSG) > break; > =20 > - if (ret =3D=3D -EBADMSG) > + if (ret =3D=3D -EBADMSG && spinand->info->fixups) { > + if (spinand->read_retries && ((retry_mode + 1) < spinand->read_retrie= s)) { ++retry_mode? > + retry_mode++; So this can be dropped. > + ret =3D spinand->info->fixups->setup_read_retry(spinand, retry_mode); > + if (ret < 0) > + break; No, you need to set ecc_failed here. > + > + /* Reset ecc_stats; retry */ > + mtd->ecc_stats =3D old_stats; > + goto read_retry; > + } else { > + /* No more retry modes; real failure */ > + ecc_failed =3D true; > + } > + } else if (ret =3D=3D -EBADMSG) { > ecc_failed =3D true; > - else > + } else { > max_bitflips =3D max_t(unsigned int, max_bitflips, ret); > + } > =20 > ret =3D 0; > ops->retlen +=3D iter.req.datalen; > ops->oobretlen +=3D iter.req.ooblen; > + > + /* Reset to retry mode 0*/ > + if (retry_mode) { retry_mode =3D 0; > + ret =3D spinand->info->fixups->setup_read_retry(spinand, 0); retry_mode); > + if (ret < 0) > + break; this if clause is useless. > + retry_mode =3D 0; And then this can be dropped from here. > + } > } > =20 > + Spurious line > if (ops->stats) { > ops->stats->uncorrectable_errors +=3D > mtd->ecc_stats.failed - old_stats.failed; > @@ -1095,6 +1121,9 @@ int spinand_match_and_init(struct spinand_device *s= pinand, > spinand->flags =3D table[i].flags; > spinand->id.len =3D 1 + table[i].devid.len; > spinand->select_target =3D table[i].select_target; > + spinand->info =3D info; > + if (spinand->info->fixups && spinand->info->fixups->init_read_retry) > + spinand->read_retries =3D spinand->info->fixups->init_read_retry(spin= and); Now I get you init. Ok, fine. > =20 > op =3D spinand_select_op_variant(spinand, > info->op_variants.read_cache); Thanks, Miqu=C3=A8l