All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Marek Vasut <marek.vasut@mailbox.org>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>,
	 dinesh.maniyam@altera.com, Jan Kiszka <jan.kiszka@siemens.com>,
	 Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>,
	 Dario Binacchi <dario.binacchi@amarulasolutions.com>,
	 Michael Trimarchi <michael@amarulasolutions.com>,
	 Tom Rini <trini@konsulko.com>,
	 Andre Przywara <andre.przywara@arm.com>,
	 Andrew Goodbody <andrew.goodbody@linaro.org>,
	 Tien Fong <tien.fong.chee@altera.com>,
	 Kok Kiang <kok.kiang.hea@altera.com>,
	 Boon Khai <boon.khai.ng@altera.com>,
	Alif <alif.zakuan.yuslaimi@altera.com>,
	 u-boot@lists.denx.de
Subject: Re: [PATCH] driver: nand: skip BBT scan during SPL to reduce size and complexity
Date: Tue, 25 Nov 2025 15:54:19 +0100	[thread overview]
Message-ID: <87tsyiupr8.fsf@bootlin.com> (raw)
In-Reply-To: <45a5d75f-99f6-4583-9071-2f892aadb2e6@mailbox.org> (Marek Vasut's message of "Tue, 25 Nov 2025 12:55:30 +0100")

On 25/11/2025 at 12:55:30 +01, Marek Vasut <marek.vasut@mailbox.org> wrote:

> On 11/25/25 1:00 AM, Heinrich Schuchardt wrote:
>> On 11/13/25 04:03, dinesh.maniyam@altera.com wrote:
>>> From: Dinesh Maniyam <dinesh.maniyam@altera.com>
>>>
>>> Guard the Bad Block Table (BBT) scanning with `#ifndef CONFIG_SPL_BUILD`
>> Thank you for looking into this issue.
>> In the patch you use CONFIG_XPL_BUILD not CONFIG_SPL_BUILD.
>> 
>>> to prevent running `chip->scan_bbt()` in SPL builds.
>>>
>>> The SPL only requires basic NAND read functionality to load the next
>>> stage and does not need full BBT management.

You do not need full BBT management, but you probably need some of it,
at least the part that finds it and interprets it, for sure.

>>> Running the BBT scan in
>>> SPL unnecessarily increases code size, memory usage, and boot time.

"unnecessarily" :-)

>>>
>>> This change ensures the BBT is scanned only in U-Boot proper, where the
>>> full NAND subsystem and dynamic memory are available.
> How do you guarantee that the content that you read from the NAND is not
> corrupted, or read from already spent cells, or is even aligned with
> what U-Boot would read after scanning the BBT ? NAND suffers from
> considerable bitflips and short cell erase cycle count, the bad block
> table scanning is very likely mandatory. Disabling it because it
> increases code complexity and size is not a good reason for disabling
> it.

I agree with Marek, you cannot simply close your eyes on the BBT. You
*really* need to know what you're doing here.

In some cases (which must be clearly identified by the system owner) you can
leverage the BBM only, but:
- this requires a bit of logic anyway (finding the BBM location +
  reading and remembering the block state)
- some drivers set NAND_BBT_NO_OOB_BBM which prevent the OOB to be used
  for writing the BBM, in which case you don't have any other choice
  than searching for a BBT.

A third option might be tempting, but is IMHO unreliable, it is to rely
on the ECC results. For instance, many chips still use Hamming ECC
schemes, which will generate invalid reports above 2 bitflips. So on a
badly damaged block you will end up with misses. Also hoping for the ECC feedback to
tell you a block is bad would require to read the entire block, because
any single page in a block may lead to a block being assumed bad. It's not
like you can just read X pages and tell "I have no error, so it's
fine". Because if the block was declared bad by the OS because of page >
X, you won't detect it and you'd read stale data.

Thanks,
Miquèl

  reply	other threads:[~2025-11-25 14:57 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-13  3:03 [PATCH] driver: nand: skip BBT scan during SPL to reduce size and complexity dinesh.maniyam
2025-11-25  0:00 ` Heinrich Schuchardt
2025-11-25  3:02   ` Maniyam, Dinesh
2025-11-25 11:55   ` Marek Vasut
2025-11-25 14:54     ` Miquel Raynal [this message]
2025-11-27  0:56       ` Maniyam, Dinesh
2025-11-25 13:45 ` Michael Nazzareno Trimarchi

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=87tsyiupr8.fsf@bootlin.com \
    --to=miquel.raynal@bootlin.com \
    --cc=alif.zakuan.yuslaimi@altera.com \
    --cc=andre.przywara@arm.com \
    --cc=andrew.goodbody@linaro.org \
    --cc=boon.khai.ng@altera.com \
    --cc=dario.binacchi@amarulasolutions.com \
    --cc=dinesh.maniyam@altera.com \
    --cc=jan.kiszka@siemens.com \
    --cc=kok.kiang.hea@altera.com \
    --cc=marek.vasut@mailbox.org \
    --cc=michael@amarulasolutions.com \
    --cc=simon.k.r.goldschmidt@gmail.com \
    --cc=tien.fong.chee@altera.com \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.