Re: uniform flash using cmdset_0002

Christopher Moore
2008-09-22T22:15:09Z

Uwe Kleine-König <Uwe.Kleine-Koenig <at> digi.com> writes:

[snip]
> physmap-flash.0: CFI does not contain boot bank location. Assuming top.
>
> The last message comes from the following code in
> cfi_cmdset_0002() (drivers/mtd/chips/cfi_cmdset_0002.c):
>
> bootloc = extp->TopBottom;
> if ((bootloc != 2) && (bootloc != 3)) {
> printk(KERN_WARNING "%s: CFI does not contain boot "
> "bank location. Assuming top.\n", map->name);
> bootloc = 2;
> }
>
> For that chip extp->TopBottom is 5.
>
> I wonder what is intended here. The only other usage of bootloc (which
> is a local variable for cfi_cmdset_0002()) is
>
> if (bootloc == 3 && something_else) {
> ...
>
> So if ((bootloc != 2) && (bootloc != 3)) setting bootloc = 2 doesn't
> change anything!?
>
> If I didn't oversee something I suggest to delete the if containing the
> warning.
>

Full ACK.

Nice catch, Uwe.

The worst thing is that it says "Assuming top" but sets bootloc to
bottom (2) :(

I figure that:
- this code was intended for early chips with an AMD/Fujitsu V1.0 CFI PRI
which does not contain TopBottom (such AMD chips are now handled in
fixup_amd_bootblock()),
- an earlier version of this code must have set bootloc to top (3) which
would have had some effect.

However the effect would possibly be undesirable in cases such as yours :(

I see you sent a patch to linux-mtd but it seems to have been completely
ignored :(

Do you know where I can find your patch in a form where I can reply to it?
If so I shall add my ACK (FWIW) and ping it.

Cheers,
Chris