Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp2004128ybk; Mon, 11 May 2020 09:31:28 -0700 (PDT) X-Google-Smtp-Source: APiQypK3jxmpEQDH5UzOnn8ZoPpvRs0z9SmhbQgR8GloUylglD1OROlnfTshPz6v4kB+7JswF2oI X-Received: by 2002:aa7:d78a:: with SMTP id s10mr14708029edq.319.1589214688752; Mon, 11 May 2020 09:31:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589214688; cv=none; d=google.com; s=arc-20160816; b=gy4gafaXbHMjghrGeKTrvAotobi8IjTmOeRRzlHVFELN16/VEQyPc/OKGuqLf8dXcL V6F81Vb/WgzpWtYe/fX43CWuulYNWYA83ljI9IaFQPLYoqy3eqTxBIXBBeCN7vgREVep WUK5uURW3URV45/CHr3MBQXYfYZGvSDp9ziz5fHM/bCz87TUvId5Qy5oYezzoPY4pPfw S7f8eldA09JcyGneRcc6gUf20Mmt4B1ROSFbNrkbj30sOcRqBwtdgJtv5wmzWtujMnGu lfAyEk8TZG4hAlvXHAqk0NhGH5X5WQBgBGwmgapczZBLWzYBkEZLipT4k38yi3J54bmx eV1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :organization:references:in-reply-to:message-id:subject:cc:to:from :date; bh=7+2ZQyqKAFdBij6eV41+Iz2g1RhavTQETioorZJnotc=; b=pkT5c8opcLoomglUFptnAr38N0wtjZI3r0zY7kDQRojF6gVvij/WaXb3t12CJHQ7wK JVgVmMQkb7IFfSPxbCnY49CkdODlCHQS2O5VQ2vib9/RTqka6xXDG68vNTuV60BQhPuT k5qQn2fG2RDNrZFo2ta3UWUuu1sG91j6SUX60jFZoRTFcRTn3VogwtPZzsg4Sgdw4gwq biJm/yePLtl1TpQfQg3gaxPLCkvMp/4zrFz2K4Ze5Pyp45sfN4ZCTqmauOPIj9o794qi bGyckv61MSG4Yg3aVLhtsvqZPNxLG25S//eB44rJj7g74xFIR2Dwk9SQ1gUlizd9gEEZ 1xSg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a12si5951627edx.283.2020.05.11.09.31.04; Mon, 11 May 2020 09:31:28 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730694AbgEKQ3b convert rfc822-to-8bit (ORCPT + 99 others); Mon, 11 May 2020 12:29:31 -0400 Received: from relay3-d.mail.gandi.net ([217.70.183.195]:45141 "EHLO relay3-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729463AbgEKQ3b (ORCPT ); Mon, 11 May 2020 12:29:31 -0400 X-Originating-IP: 91.224.148.103 Received: from xps13 (unknown [91.224.148.103]) (Authenticated sender: miquel.raynal@bootlin.com) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id BACE960012; Mon, 11 May 2020 16:29:24 +0000 (UTC) Date: Mon, 11 May 2020 18:29:23 +0200 From: Miquel Raynal To: Boris Brezillon Cc: =?UTF-8?B?w4FsdmFybyBGZXJuw6FuZGV6?= Rojas , richard@nod.at, vigneshr@ti.com, s.hauer@pengutronix.de, masonccyang@mxic.com.tw, christophe.kerello@st.com, stefan@agner.ch, piotrs@cadence.com, devik@eaxlabs.cz, tglx@linutronix.de, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] nand: raw: use write_oob_raw for MTD_OPS_AUTO_OOB mode Message-ID: <20200511182923.6a4961ab@xps13> In-Reply-To: <20200504123237.5c128668@collabora.com> References: <20200504094253.2741109-1-noltari@gmail.com> <20200504123237.5c128668@collabora.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, Boris Brezillon wrote on Mon, 4 May 2020 12:32:37 +0200: > On Mon, 4 May 2020 11:42:53 +0200 > Álvaro Fernández Rojas wrote: > > > Some NAND controllers change the ECC bytes when OOB is written with ECC > > enabled. > > This is a problem in brcmnand, since adding JFFS2 cleanmarkers after the page > > has been erased will change the ECC bytes to 0 and the controller will think > > the block is bad. > > It can be fixed by using write_oob_raw, which ensures ECC is disabled. > > > > Signed-off-by: Álvaro Fernández Rojas > > --- > > drivers/mtd/nand/raw/nand_base.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c > > index c24e5e2ba130..755d25200520 100644 > > --- a/drivers/mtd/nand/raw/nand_base.c > > +++ b/drivers/mtd/nand/raw/nand_base.c > > @@ -488,7 +488,7 @@ static int nand_do_write_oob(struct nand_chip *chip, loff_t to, > > > > nand_fill_oob(chip, ops->oobbuf, ops->ooblen, ops); > > > > - if (ops->mode == MTD_OPS_RAW) > > + if (ops->mode == MTD_OPS_AUTO_OOB || ops->mode == MTD_OPS_RAW) > > status = chip->ecc.write_oob_raw(chip, page & chip->pagemask); > > The doc says: > > @MTD_OPS_PLACE_OOB: OOB data are placed at the given offset (default) > @MTD_OPS_AUTO_OOB: OOB data are automatically placed at the free areas > which are defined by the internal ecclayout > @MTD_OPS_RAW: data are transferred as-is, with no error > correction; this mode implies %MTD_OPS_PLACE_OOB > > To me, that means MTD_OPS_PLACE_OOB and MTD_OPS_AUTO_OOB do not imply > MTD_OPS_RAW. Anyway those modes are just too vague. We really should > separate the ECC-disabled/ECC-enabled concept (AKA raw vs non-raw mode) > from the OOB placement scheme. IIRC, Miquel had a patchset doing that. > > We also should have the concept of protected OOB-region vs > unprotected-OOB-region if we want JFFS2 to work with controllers that > protect part of the OOB region. Once we have that we can patch JFFS2 > to write things with "ECC-disabled"+"auto-OOB-placement-on-unprotected > area". I see the problem but as Boris said the fix is not valid as-is. Problem is: I don't have a better proposal yet. Is forcing JFFS2 to write cleanmarkers in raw mode only an option?