linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Richard Weinberger <richard@nod.at>
Cc: David Woodhouse <dwmw2@infradead.org>,
	Brian Norris <computersforpeace@gmail.com>,
	linux-mtd@lists.infradead.org,
	Hans de Goede <hdegoede@redhat.com>,
	linux-kernel@vger.kernel.org, Aleksei Mamlin <mamlinav@gmail.com>
Subject: Re: [PATCH v2 00/15] mtd: nand: allow vendor specific detection/initialization
Date: Sun, 19 Jun 2016 10:34:24 +0200	[thread overview]
Message-ID: <20160619103424.0b8b77ac@bbrezillon> (raw)
In-Reply-To: <5765C6A6.3070206@nod.at>

On Sun, 19 Jun 2016 00:09:42 +0200
Richard Weinberger <richard@nod.at> wrote:

> Am 08.06.2016 um 15:00 schrieb Boris Brezillon:
> > Hello,
> > 
> > This patch series is a step forward in supporting vendor-specific
> > functionalities.
> > This series is mainly moving vendor-specific initialization or
> > detection code out of the core, but also introduces an infrastructure
> > allowing support for vendor-specific features.
> > 
> > While those features might seem useless to most users, some of them are
> > actually required on modern MLC/TLC NANDs (this is the case of read-retry
> > support, which AFAICT has not been standardized by the JEDEC consortium).
> > 
> > Now, let's detail what's inside this patch-set.
> > 
> > Patches 1 to 4 are simple reworks simplifying auto-detection function
> > prototypes, and clarifying their purpose.
> > 
> > Patch 5 is introducing the vendor-specific initialization
> > infrastructure.
> > 
> > Patch 6 is removing the MTD_NAND_IDS Kconfig option to avoid creating
> > a nand_ids.ko module when MTD_NAND is enabled as a module. This prevents
> > a future cross-dependency between nand.ko where all vendor specific
> > code will rely and nand_ids.ko which will reference vendor-specific ops
> > in its manufacturer table, which in turn is referenced by the core code
> > linked in nand.ko.
> > 
> > Patches 7 to 12 are moving vendor-specific code into their respective
> > nand_<vendor>.c files.
> > 
> > Patch 13 is taking a patch proposed by Hans and adding support for ECC
> > requirements extraction from the samsung extended IDs. It seems to apply
> > to all Samsung MLCs, but even if it's not the case, the detection code
> > should be improved to support the new formats.
> > 
> > Patch 14 is adding support for advanced NAND ID decoding to the Hynix
> > driver (OOB size, ECC and scrambling requirements extraction). Again
> > this detection code might be incomplete, but I'd like people to extend
> > it if required rather than adding new full-id entries in the nand_ids
> > table.
> > 
> > And finally, patch 15 is showing how useful this vendor-specific stuff
> > can be by implementing read-retry support for Hynix 1x nm MLCs. And
> > trust me, you don't want to try using such a NAND without read-retry
> > support ;).
> > 
> > As always, I'm open to any suggestion to improve this vendor-specific
> > infrastructure, so please review the code :).  
> 
> Series looks good to me. :-)
> 
> BTW: I wonder whether this work can also be used to support
> Micron On-Die-ECC and Toshiba BENAND in a proper way.

Hehe, I was almost sure someone would ask this question, and yes this
infrastructure would partly solve the problem, but this would still
require patching NAND controller drivers.

Here are the aspects I can remember (there might be others):

1/ Some drivers are just supporting a limited set of NAND operations in
   their ->cmdfunc() implementation, which means they're unlikely to
   support the private ENABLE/DISABLE_ECC commands.
2/ We'd have to add a new ECC mode (NAND_ECC_ON_DIE?), and patch NAND
   controller drivers to not blindly set NAND_ECC_HW.
3/ NAND controller drivers should not change any of the chip->ecc.xxx
   fields if NAND_ECC_ON_DIE has been selected.

So, nothing impossible here, but this clearly requires some work.
Moreover, I'm planning to rework this whole ECC thing at some point, to
let the core select the mode (and appropriate implementation) instead of
leaving this responsibility to the NAND controller driver. Note that
this should not dissuade you from adding on-die ECC support before this
change, I'm just sharing my plans.

      reply	other threads:[~2016-06-19  8:34 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-08 13:00 [PATCH v2 00/15] mtd: nand: allow vendor specific detection/initialization Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 01/15] mtd: nand: get rid of the mtd parameter in all auto-detection functions Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 02/15] mtd: nand: store nand ID in struct nand_chip Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 03/15] mtd: nand: get rid of busw parameter Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 04/15] mtd: nand: rename nand_get_flash_type() into nand_detect() Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 05/15] mtd: nand: add manufacturer specific initialization/detection steps Boris Brezillon
2016-06-18  9:23   ` Richard Weinberger
2016-06-18 11:31     ` Boris Brezillon
2016-06-18 11:40       ` Boris Brezillon
2016-06-18 11:34     ` Boris Brezillon
2016-06-18 12:34       ` Richard Weinberger
2016-06-08 13:00 ` [PATCH v2 06/15] mtd: nand: kill the MTD_NAND_IDS Kconfig option Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 07/15] mtd: nand: move Samsung specific init/detection logic in nand_samsung.c Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 08/15] mtd: nand: move Hynix specific init/detection logic in nand_hynix.c Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 09/15] mtd: nand: move Toshiba specific init/detection logic in nand_toshiba.c Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 10/15] mtd: nand: move Micron specific init logic in nand_micron.c Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 11/15] mtd: nand: move AMD/Spansion specific init/detection logic in nand_amd.c Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 12/15] mtd: nand: move Macronix specific initialization in nand_macronix.c Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 13/15] mtd: nand: samsung: retrieve ECC requirements from extended ID Boris Brezillon
2016-06-08 13:00 ` [PATCH v2 14/15] mtd: nand: hynix: rework NAND ID decoding to extract more information Boris Brezillon
2016-06-08 14:34   ` kbuild test robot
2016-06-08 13:00 ` [PATCH v2 15/15] mtd: nand: hynix: add read-retry support for 1x nm MLC NANDs Boris Brezillon
2016-06-18 22:09 ` [PATCH v2 00/15] mtd: nand: allow vendor specific detection/initialization Richard Weinberger
2016-06-19  8:34   ` Boris Brezillon [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160619103424.0b8b77ac@bbrezillon \
    --to=boris.brezillon@free-electrons.com \
    --cc=computersforpeace@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=hdegoede@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=mamlinav@gmail.com \
    --cc=richard@nod.at \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).