[PATCH] OneNAND: Runtime badblock check support

Kyungmin Park kmpark at infradead.org
Wed Jul 22 03:11:51 EDT 2009

On Wed, Jul 22, 2009 at 3:19 PM, Artem Bityutskiy<dedekind1 at gmail.com> wrote:
> On Wed, 2009-07-22 at 11:39 +0900, Kyungmin Park wrote:
>> Hi,
>> On Tue, Jul 21, 2009 at 8:05 PM, Kyungmin Park<kmpark at infradead.org> wrote:
>> > Hi
>> >
>> > On Tue, Jul 21, 2009 at 7:56 PM, Artem Bityutskiy<dedekind1 at gmail.com> wrote:
>> >> Hi,
>> >>
>> >> On 07/21/2009 05:53 AM, Kyungmin Park wrote:
>> >>>
>> >>> At bootloader, we don't need to read full page. It takes too long time.
>> >>> Instead it only read pages required for boot.
>> >>>
>> >>> Signed-off-by: Kyungmin Park<kyungmin.park at samsung.com>
>> >>> ---
>> >>
>> >> I do not understand the commit message. Could you please provide a better
>> >> one which explains what the patch is really doing and why.
>> >
>> > Right, the page means all blocks. It doesn't scan all blocks at boot
>> > time. only some block contains kernel part are read and boot.
>> >
>> > The goal is simple, Avoid double scanning at boot time. One time for
>> > bootloader, Another is kernel.
>> > As you know at bootloader, only load kernel in normal case. it means
>> > we only read the kernel bad blocks and handle it.
>> > and jump to the kernel. that's all
>> >
> I understand the double-scanning issue. But I still do not understand
> how your patch is avoiding it? If the boot-loader has scanned the
> flash, it should pass the bad-block bitmap to the kernel. If you have
> on-flash BBT, then probably this is not a problem.

It don't avoid the double-scanning issue. only partial scan at
bootloader. In my environemt kernel has 2MiB partition and we only
scan this partition at load kernel command.
Exactly that it skip the bad block scanning except the kernel
partition at bootloader
As bootcmd load kernel, it first check that read block is bad, if not
read this block, next check again next block, and read next block and
so on.

>> Experimental idea.
>> How about to integrate the bbt scan and ubi scan?
> It is possible, but isn't it better to just have on-flash BBT and
> forget about any scanning for bad blocks at all?
> We could go even further: If the boot-loader supports ubi, it could do
> the scanning and pass all UBI data to the kernel, in which case UBI
> would not need to do any scanning.

This is chicken and egg problem. actually the scan time is almost same
either bootloader or kernel.
My main idea integrate the scanning and ubi scan.
In any case, we have to scan whole chip at least one.

>> At ubi scan time. it scans all ubi blocks. In different from NAND,
>> OneNAND read main page and spare page both.
>> So if runtime badblock check enabled, read the page and check oob
>> first and if it's valid. use main page. If not, set it's badblock.
>> I'm not sure how much codes are modified. :)
>> How to you think?
> It is possible, but I think the implementation will add more ugliness...
> Why not to just use on-flash BBT instead?

I don't have any idea about on-flash BBT.

Thank you,
Kyungmin Park

More information about the linux-mtd mailing list