Hi Michal,

On my hardware, when the NAND driver loads OK, there are still anomalies:
the "used by" count is -2 in lsmod output for all MTD modules.

# lsmod
Module                  Size  Used by
ofpart                  2048  -2
sunxi_nand             18325  -2
ofnandpart              1476  -2
nand                   67314  -2
nand_ecc                3350  -2
nand_ids                5853  -2
nand_hynix              3255  -2
mtd                    40998  -2

There are too many core devices created. Consequently, unloading sunxi_nand
is impossible because this count is non-zero. I wonder if you noticed
something similar.

--Vladimir


On 13 January 2015 at 12:06, Michal Suchanek <hramr...@gmail.com> wrote:

> On 13 January 2015 at 12:34, Vladimir Komendantskiy
> <komendant...@gmail.com> wrote:
> > I tested the driver with a different Hynix chip, and it worked. Same
> driver,
> > same DTB but with my original Hynix chip causes the same this NULL
> pointer
> > error. Here are the extended IDs for the reference:
> >
> > Works fine:
> > {"H27UBG8T2BTR 4GiB 3.3V 8-bit",
> > { .id = {0xad, 0xd7, 0x94, 0xda, 0x74, 0xc3} },
> >  SZ_8K, SZ_4K, SZ_2M, 0, 6, 640, NAND_ECC_INFO(40, SZ_1K),
> >  4 },
> >
> > Fails:
> > {"H27UCG8T2ETR 8GiB 3.3V 8-bit",
> > { .id = {0xad, 0xde, 0x14, 0xa7, 0x42, 0x4a} },
> >  SZ_16K, SZ_8K, SZ_4M, 0, 6, 1664, NAND_ECC_INFO(40, SZ_1K),
> >  4 },
>
> hmm, the block sizes are different so maybe some calculation fails.
>
> Try to add more debug prints in the function that causes the NULL
> pointer dereference to figure out what is null where, exactly.
>
> >
> > There are different procedures to set up read retry, so I have to
> > double-check if my implementation of the RR procedure for the second chip
> > might be faulty. Strangely, it works OK in my attempt to backport the
> Sunxi
> > MTD development to sunxi-3.4. But it's rather reduced, for example,
> there I
> > have no DTB but a FEX file.
> >
> > I agree that Allwinner bad blocks should be ignored, and possibly the MTD
> > driver is good enough to spot them dynamically again. However, those
> blocks
>
> It isn't good enough to spot them. I had 5 and 6 blocks that failed to
> erase on two nand chips and neither was marked after the fact by the
> MTD code to be recognized as bad when looking at it again.
>
> > would typically carry non-zero values in the positions where the
> > manufacturer would write zeros to indicate a bad block. To get rid of
> > allwinner-marked blocks while keeping manufacturer-marked ones, it might
> be
> > useful to skip over blocks with non-zero markers during creation of the
> BBT.
>
> The bad block marker is determined by matching a pattern. Almost all
> blocks on my Allwinner-formatted nand flash match this pattern to the
> point there is no room for storing the bbt. So Allwinner is using the
> bbm area for other data and the marks are totally worthless once
> livesuit was used on the nand chip.
>
> > Then those blocks can be safely erased.
>
> More or less.
>
> Thanks
>
> Michal
>
> --
> You received this message because you are subscribed to the Google Groups
> "linux-sunxi" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to linux-sunxi+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to