On Tue, Sep 23, 2014 at 04:07:33PM +0200, Boris BREZILLON wrote:
> Hello Huang, Brian,
>
> This is just a new proposal to support raw accesses in a more standard way
> in the GPMI driver.
> This series has been tested on an imx28 board.
>
> Any suggestions are welcome.
>
> Best Regards,
>
> Boris
>
> Changes since v2:
> - fixed a bug in gpmi_move_bits
> - add a raw_buffer field to be used when using raw access methods
> (experienced memory corruptions when directly using page_buffer_virt
> buffer)
> - add raw OOB access functions
I tested this patch set today with the imx6dl-sabreauto board.
NAND: Micron MT29F64G08CBABAWP
8192MiB, MLC, page size: 8192, OOB size: 744
ECC: 40bit
The result:
[ 3672.779009] ==================================================
[ 3672.784974] mtd_nandbiterrs: MTD device: 0
[ 3672.789480] mtd_nandbiterrs: MTD device size 16777216, eraseblock=2097152, page=8192, oob=744
[ 3672.798169] mtd_nandbiterrs: Device uses 1 subpages of 8192 bytes
[ 3672.804554] mtd_nandbiterrs: Using page=0, offset=0, eraseblock=0
[ 3672.812497] mtd_nandbiterrs: incremental biterrors test
[ 3672.818688] mtd_nandbiterrs: write_page
[ 3672.825529] mtd_nandbiterrs: rewrite page
[ 3672.837290] mtd_nandbiterrs: read_page
[ 3672.848407] mtd_nandbiterrs: error: read failed at 0x0
[ 3672.853644] mtd_nandbiterrs: After 0 biterrors per subpage, read reported error -74
[ 3672.862932] mtd_nandbiterrs: finished successfully.
[ 3672.867837] ==================================================
[ 3745.282368] ==================================================
[ 3745.288227] mtd_nandbiterrs: MTD device: 0
[ 3745.292913] mtd_nandbiterrs: MTD device size 16777216, eraseblock=2097152, page=8192, oob=744
[ 3745.301897] mtd_nandbiterrs: Device uses 1 subpages of 8192 bytes
[ 3745.308023] mtd_nandbiterrs: Using page=1, offset=8192, eraseblock=0
[ 3745.316778] mtd_nandbiterrs: incremental biterrors test
[ 3745.323017] mtd_nandbiterrs: write_page
[ 3745.328616] mtd_nandbiterrs: rewrite page
[ 3745.334191] mtd_nandbiterrs: read_page
[ 3745.346878] mtd_nandbiterrs: error: read failed at 0x2000
[ 3745.352352] mtd_nandbiterrs: After 0 biterrors per subpage, read reported error -74
[ 3745.361281] mtd_nandbiterrs: finished successfully.
[ 3745.366173] ==================================================
Is this okay?
thanks
Huang Shijie
On Wed, 8 Oct 2014 22:24:40 +0800
Huang Shijie <[email protected]> wrote:
> On Tue, Sep 23, 2014 at 04:07:33PM +0200, Boris BREZILLON wrote:
> > Hello Huang, Brian,
> >
> > This is just a new proposal to support raw accesses in a more standard way
> > in the GPMI driver.
> > This series has been tested on an imx28 board.
> >
> > Any suggestions are welcome.
> >
> > Best Regards,
> >
> > Boris
> >
> > Changes since v2:
> > - fixed a bug in gpmi_move_bits
> > - add a raw_buffer field to be used when using raw access methods
> > (experienced memory corruptions when directly using page_buffer_virt
> > buffer)
> > - add raw OOB access functions
>
> I tested this patch set today with the imx6dl-sabreauto board.
>
> NAND: Micron MT29F64G08CBABAWP
> 8192MiB, MLC, page size: 8192, OOB size: 744
>
> ECC: 40bit
>
> The result:
>
> [ 3672.779009] ==================================================
> [ 3672.784974] mtd_nandbiterrs: MTD device: 0
> [ 3672.789480] mtd_nandbiterrs: MTD device size 16777216, eraseblock=2097152, page=8192, oob=744
> [ 3672.798169] mtd_nandbiterrs: Device uses 1 subpages of 8192 bytes
> [ 3672.804554] mtd_nandbiterrs: Using page=0, offset=0, eraseblock=0
> [ 3672.812497] mtd_nandbiterrs: incremental biterrors test
> [ 3672.818688] mtd_nandbiterrs: write_page
> [ 3672.825529] mtd_nandbiterrs: rewrite page
> [ 3672.837290] mtd_nandbiterrs: read_page
> [ 3672.848407] mtd_nandbiterrs: error: read failed at 0x0
> [ 3672.853644] mtd_nandbiterrs: After 0 biterrors per subpage, read reported error -74
> [ 3672.862932] mtd_nandbiterrs: finished successfully.
> [ 3672.867837] ==================================================
>
> [ 3745.282368] ==================================================
> [ 3745.288227] mtd_nandbiterrs: MTD device: 0
> [ 3745.292913] mtd_nandbiterrs: MTD device size 16777216, eraseblock=2097152, page=8192, oob=744
> [ 3745.301897] mtd_nandbiterrs: Device uses 1 subpages of 8192 bytes
> [ 3745.308023] mtd_nandbiterrs: Using page=1, offset=8192, eraseblock=0
> [ 3745.316778] mtd_nandbiterrs: incremental biterrors test
> [ 3745.323017] mtd_nandbiterrs: write_page
> [ 3745.328616] mtd_nandbiterrs: rewrite page
> [ 3745.334191] mtd_nandbiterrs: read_page
> [ 3745.346878] mtd_nandbiterrs: error: read failed at 0x2000
> [ 3745.352352] mtd_nandbiterrs: After 0 biterrors per subpage, read reported error -74
> [ 3745.361281] mtd_nandbiterrs: finished successfully.
> [ 3745.366173] ==================================================
>
>
> Is this okay?
No, it doesn't seem to be correct.
But it's an MLC flash, so you'll most probably need to apply this patch
to nandbiterrs testsuite:
http://code.bulix.org/f69wuu-87021
This patch is flashing the block between each bitflip insertion to
avoid multiple write without erasure (which, AFAIK, is not supported
by MLC flashes).
Can you also try to write zeros to a NAND page and then dump it in
raw mode (and provide me with the resulted /tmp/dump file or an
hexdump output of this file) ?
flash_erase /dev/mtdX 0 1
dd if=/dev/zero of=/tmp/zero bs=8k count=1
nandwrite /dev/mtdX /tmp/zero
nanddump -n -o -l 8192 -f /tmp/dump /dev/mtdX
Thanks,
Boris
--
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
On Wed, Oct 08, 2014 at 05:10:34PM +0200, Boris Brezillon wrote:
> On Wed, 8 Oct 2014 22:24:40 +0800
> Huang Shijie <[email protected]> wrote:
>
> > On Tue, Sep 23, 2014 at 04:07:33PM +0200, Boris BREZILLON wrote:
> > > Hello Huang, Brian,
> > >
> > > This is just a new proposal to support raw accesses in a more standard way
> > > in the GPMI driver.
> > > This series has been tested on an imx28 board.
> > >
> > > Any suggestions are welcome.
> > >
> > > Best Regards,
> > >
> > > Boris
> > >
> > > Changes since v2:
> > > - fixed a bug in gpmi_move_bits
> > > - add a raw_buffer field to be used when using raw access methods
> > > (experienced memory corruptions when directly using page_buffer_virt
> > > buffer)
> > > - add raw OOB access functions
> >
> > I tested this patch set today with the imx6dl-sabreauto board.
> >
> > NAND: Micron MT29F64G08CBABAWP
> > 8192MiB, MLC, page size: 8192, OOB size: 744
> >
> > ECC: 40bit
> >
> > The result:
> >
> > [ 3672.779009] ==================================================
> > [ 3672.784974] mtd_nandbiterrs: MTD device: 0
> > [ 3672.789480] mtd_nandbiterrs: MTD device size 16777216, eraseblock=2097152, page=8192, oob=744
> > [ 3672.798169] mtd_nandbiterrs: Device uses 1 subpages of 8192 bytes
> > [ 3672.804554] mtd_nandbiterrs: Using page=0, offset=0, eraseblock=0
> > [ 3672.812497] mtd_nandbiterrs: incremental biterrors test
> > [ 3672.818688] mtd_nandbiterrs: write_page
> > [ 3672.825529] mtd_nandbiterrs: rewrite page
> > [ 3672.837290] mtd_nandbiterrs: read_page
> > [ 3672.848407] mtd_nandbiterrs: error: read failed at 0x0
> > [ 3672.853644] mtd_nandbiterrs: After 0 biterrors per subpage, read reported error -74
> > [ 3672.862932] mtd_nandbiterrs: finished successfully.
> > [ 3672.867837] ==================================================
> >
> > [ 3745.282368] ==================================================
> > [ 3745.288227] mtd_nandbiterrs: MTD device: 0
> > [ 3745.292913] mtd_nandbiterrs: MTD device size 16777216, eraseblock=2097152, page=8192, oob=744
> > [ 3745.301897] mtd_nandbiterrs: Device uses 1 subpages of 8192 bytes
> > [ 3745.308023] mtd_nandbiterrs: Using page=1, offset=8192, eraseblock=0
> > [ 3745.316778] mtd_nandbiterrs: incremental biterrors test
> > [ 3745.323017] mtd_nandbiterrs: write_page
> > [ 3745.328616] mtd_nandbiterrs: rewrite page
> > [ 3745.334191] mtd_nandbiterrs: read_page
> > [ 3745.346878] mtd_nandbiterrs: error: read failed at 0x2000
> > [ 3745.352352] mtd_nandbiterrs: After 0 biterrors per subpage, read reported error -74
> > [ 3745.361281] mtd_nandbiterrs: finished successfully.
> > [ 3745.366173] ==================================================
> >
> >
> > Is this okay?
>
> No, it doesn't seem to be correct.
> But it's an MLC flash, so you'll most probably need to apply this patch
> to nandbiterrs testsuite:
>
> http://code.bulix.org/f69wuu-87021
>
> This patch is flashing the block between each bitflip insertion to
> avoid multiple write without erasure (which, AFAIK, is not supported
> by MLC flashes).
After I applied this patch. It seems ok now.
The test result:
[ 244.789900] ==================================================
[ 244.795826] mtd_nandbiterrs: MTD device: 1
[ 244.799974] mtd_nandbiterrs: MTD device size 16777216, eraseblock=2097152, page=8192, oob=744
[ 244.808563] mtd_nandbiterrs: Device uses 1 subpages of 8192 bytes
[ 244.814697] mtd_nandbiterrs: Using page=0, offset=0, eraseblock=0
[ 244.822622] mtd_nandbiterrs: incremental biterrors test
[ 244.828146] mtd_nandbiterrs: write_page
[ 244.833341] mtd_nandbiterrs: fill page
[ 244.838831] mtd_nandbiterrs: rewrite page
[ 244.844353] mtd_nandbiterrs: read_page
[ 244.848585] mtd_nandbiterrs: verify_page
[ 244.852915] mtd_nandbiterrs: Successfully corrected 0 bit errors per subpage
[ 244.859973] mtd_nandbiterrs: Inserted biterror @ 0/5
[ 244.866316] mtd_nandbiterrs: rewrite page
[ 244.871629] mtd_nandbiterrs: read_page
[ 244.875864] mtd_nandbiterrs: verify_page
[ 244.880161] mtd_nandbiterrs: Successfully corrected 1 bit errors per subpage
[ 244.887247] mtd_nandbiterrs: Inserted biterror @ 0/2
[ 244.893499] mtd_nandbiterrs: rewrite page
[ 244.898766] mtd_nandbiterrs: read_page
[ 244.903071] mtd_nandbiterrs: verify_page
[ 244.907369] mtd_nandbiterrs: Successfully corrected 2 bit errors per subpage
[ 244.914463] mtd_nandbiterrs: Inserted biterror @ 0/0
[ 244.920701] mtd_nandbiterrs: rewrite page
[ 244.926109] mtd_nandbiterrs: read_page
[ 244.930343] mtd_nandbiterrs: verify_page
[ 244.934672] mtd_nandbiterrs: Successfully corrected 3 bit errors per subpage
[ 244.941752] mtd_nandbiterrs: Inserted biterror @ 1/7
[ 244.947988] mtd_nandbiterrs: rewrite page
[ 244.953408] mtd_nandbiterrs: read_page
[ 244.957641] mtd_nandbiterrs: verify_page
[ 244.961970] mtd_nandbiterrs: Successfully corrected 4 bit errors per subpage
[ 244.969029] mtd_nandbiterrs: Inserted biterror @ 1/5
[ 244.975357] mtd_nandbiterrs: rewrite page
[ 244.980627] mtd_nandbiterrs: read_page
[ 244.984931] mtd_nandbiterrs: verify_page
[ 244.989229] mtd_nandbiterrs: Successfully corrected 5 bit errors per subpage
[ 244.996318] mtd_nandbiterrs: Inserted biterror @ 1/2
[ 245.002576] mtd_nandbiterrs: rewrite page
[ 245.007843] mtd_nandbiterrs: read_page
[ 245.012139] mtd_nandbiterrs: verify_page
[ 245.016439] mtd_nandbiterrs: Successfully corrected 6 bit errors per subpage
[ 245.023526] mtd_nandbiterrs: Inserted biterror @ 1/0
[ 245.029755] mtd_nandbiterrs: rewrite page
[ 245.035149] mtd_nandbiterrs: read_page
[ 245.039378] mtd_nandbiterrs: verify_page
[ 245.043726] mtd_nandbiterrs: Successfully corrected 7 bit errors per subpage
[ 245.050787] mtd_nandbiterrs: Inserted biterror @ 2/6
[ 245.057123] mtd_nandbiterrs: rewrite page
[ 245.062423] mtd_nandbiterrs: read_page
[ 245.066654] mtd_nandbiterrs: verify_page
[ 245.071001] mtd_nandbiterrs: Successfully corrected 8 bit errors per subpage
[ 245.078060] mtd_nandbiterrs: Inserted biterror @ 2/5
[ 245.084398] mtd_nandbiterrs: rewrite page
[ 245.089673] mtd_nandbiterrs: read_page
[ 245.093978] mtd_nandbiterrs: verify_page
[ 245.098275] mtd_nandbiterrs: Successfully corrected 9 bit errors per subpage
[ 245.105360] mtd_nandbiterrs: Inserted biterror @ 2/2
[ 245.111622] mtd_nandbiterrs: rewrite page
[ 245.116899] mtd_nandbiterrs: read_page
[ 245.121188] mtd_nandbiterrs: verify_page
[ 245.125485] mtd_nandbiterrs: Successfully corrected 10 bit errors per subpage
[ 245.132658] mtd_nandbiterrs: Inserted biterror @ 2/0
[ 245.138895] mtd_nandbiterrs: rewrite page
[ 245.144294] mtd_nandbiterrs: read_page
[ 245.148524] mtd_nandbiterrs: verify_page
[ 245.152853] mtd_nandbiterrs: Successfully corrected 11 bit errors per subpage
[ 245.159998] mtd_nandbiterrs: Inserted biterror @ 3/7
[ 245.166326] mtd_nandbiterrs: rewrite page
[ 245.171620] mtd_nandbiterrs: read_page
[ 245.175849] mtd_nandbiterrs: verify_page
[ 245.180146] mtd_nandbiterrs: Successfully corrected 12 bit errors per subpage
[ 245.187314] mtd_nandbiterrs: Inserted biterror @ 3/6
[ 245.193603] mtd_nandbiterrs: rewrite page
[ 245.198874] mtd_nandbiterrs: read_page
[ 245.203183] mtd_nandbiterrs: verify_page
[ 245.207480] mtd_nandbiterrs: Successfully corrected 13 bit errors per subpage
[ 245.214657] mtd_nandbiterrs: Inserted biterror @ 3/5
[ 245.220958] mtd_nandbiterrs: rewrite page
[ 245.226235] mtd_nandbiterrs: read_page
[ 245.230462] mtd_nandbiterrs: verify_page
[ 245.234787] mtd_nandbiterrs: Successfully corrected 14 bit errors per subpage
[ 245.241965] mtd_nandbiterrs: Inserted biterror @ 3/2
[ 245.248210] mtd_nandbiterrs: rewrite page
[ 245.253614] mtd_nandbiterrs: read_page
[ 245.257846] mtd_nandbiterrs: verify_page
[ 245.262177] mtd_nandbiterrs: Successfully corrected 15 bit errors per subpage
[ 245.269322] mtd_nandbiterrs: Inserted biterror @ 3/0
[ 245.275670] mtd_nandbiterrs: rewrite page
[ 245.280965] mtd_nandbiterrs: read_page
[ 245.285202] mtd_nandbiterrs: verify_page
[ 245.289501] mtd_nandbiterrs: Successfully corrected 16 bit errors per subpage
[ 245.296677] mtd_nandbiterrs: Inserted biterror @ 4/2
[ 245.302952] mtd_nandbiterrs: rewrite page
[ 245.308237] mtd_nandbiterrs: read_page
[ 245.312548] mtd_nandbiterrs: verify_page
[ 245.316846] mtd_nandbiterrs: Successfully corrected 17 bit errors per subpage
[ 245.324018] mtd_nandbiterrs: Inserted biterror @ 4/0
[ 245.330264] mtd_nandbiterrs: rewrite page
[ 245.335672] mtd_nandbiterrs: read_page
[ 245.339895] mtd_nandbiterrs: verify_page
[ 245.344222] mtd_nandbiterrs: Successfully corrected 18 bit errors per subpage
[ 245.351399] mtd_nandbiterrs: Inserted biterror @ 5/7
[ 245.357673] mtd_nandbiterrs: rewrite page
[ 245.363085] mtd_nandbiterrs: read_page
[ 245.367316] mtd_nandbiterrs: verify_page
[ 245.371646] mtd_nandbiterrs: Successfully corrected 19 bit errors per subpage
[ 245.378792] mtd_nandbiterrs: Inserted biterror @ 5/2
[ 245.385136] mtd_nandbiterrs: rewrite page
[ 245.390402] mtd_nandbiterrs: read_page
[ 245.394704] mtd_nandbiterrs: verify_page
[ 245.399002] mtd_nandbiterrs: Successfully corrected 20 bit errors per subpage
[ 245.406178] mtd_nandbiterrs: Inserted biterror @ 5/0
[ 245.412440] mtd_nandbiterrs: rewrite page
[ 245.417711] mtd_nandbiterrs: read_page
[ 245.422027] mtd_nandbiterrs: verify_page
[ 245.426326] mtd_nandbiterrs: Successfully corrected 21 bit errors per subpage
[ 245.433515] mtd_nandbiterrs: Inserted biterror @ 6/6
[ 245.439795] mtd_nandbiterrs: rewrite page
[ 245.445203] mtd_nandbiterrs: read_page
[ 245.449432] mtd_nandbiterrs: verify_page
[ 245.453762] mtd_nandbiterrs: Successfully corrected 22 bit errors per subpage
[ 245.460927] mtd_nandbiterrs: Inserted biterror @ 6/2
[ 245.467160] mtd_nandbiterrs: rewrite page
[ 245.472558] mtd_nandbiterrs: read_page
[ 245.476788] mtd_nandbiterrs: verify_page
[ 245.481133] mtd_nandbiterrs: Successfully corrected 23 bit errors per subpage
[ 245.488279] mtd_nandbiterrs: Inserted biterror @ 6/0
[ 245.494610] mtd_nandbiterrs: rewrite page
[ 245.499888] mtd_nandbiterrs: read_page
[ 245.504194] mtd_nandbiterrs: verify_page
[ 245.508490] mtd_nandbiterrs: Successfully corrected 24 bit errors per subpage
[ 245.515676] mtd_nandbiterrs: Inserted biterror @ 7/7
[ 245.522001] mtd_nandbiterrs: rewrite page
[ 245.527275] mtd_nandbiterrs: read_page
[ 245.531577] mtd_nandbiterrs: verify_page
[ 245.535874] mtd_nandbiterrs: Successfully corrected 25 bit errors per subpage
[ 245.543049] mtd_nandbiterrs: Inserted biterror @ 7/6
[ 245.549291] mtd_nandbiterrs: rewrite page
[ 245.554685] mtd_nandbiterrs: read_page
[ 245.558916] mtd_nandbiterrs: verify_page
[ 245.563252] mtd_nandbiterrs: Successfully corrected 26 bit errors per subpage
[ 245.570397] mtd_nandbiterrs: Inserted biterror @ 7/2
[ 245.576733] mtd_nandbiterrs: rewrite page
[ 245.582124] mtd_nandbiterrs: read_page
[ 245.586355] mtd_nandbiterrs: verify_page
[ 245.590650] mtd_nandbiterrs: Successfully corrected 27 bit errors per subpage
[ 245.597836] mtd_nandbiterrs: Inserted biterror @ 7/0
[ 245.604124] mtd_nandbiterrs: rewrite page
[ 245.609392] mtd_nandbiterrs: read_page
[ 245.613704] mtd_nandbiterrs: verify_page
[ 245.618005] mtd_nandbiterrs: Successfully corrected 28 bit errors per subpage
[ 245.625179] mtd_nandbiterrs: Inserted biterror @ 8/7
[ 245.631417] mtd_nandbiterrs: rewrite page
[ 245.636685] mtd_nandbiterrs: read_page
[ 245.641007] mtd_nandbiterrs: verify_page
[ 245.645308] mtd_nandbiterrs: Successfully corrected 29 bit errors per subpage
[ 245.652482] mtd_nandbiterrs: Inserted biterror @ 8/5
[ 245.658726] mtd_nandbiterrs: rewrite page
[ 245.664125] mtd_nandbiterrs: read_page
[ 245.668355] mtd_nandbiterrs: verify_page
[ 245.672697] mtd_nandbiterrs: Successfully corrected 30 bit errors per subpage
[ 245.679842] mtd_nandbiterrs: Inserted biterror @ 8/4
[ 245.686178] mtd_nandbiterrs: rewrite page
[ 245.691492] mtd_nandbiterrs: read_page
[ 245.695722] mtd_nandbiterrs: verify_page
[ 245.700019] mtd_nandbiterrs: Successfully corrected 31 bit errors per subpage
[ 245.707193] mtd_nandbiterrs: Inserted biterror @ 8/2
[ 245.713444] mtd_nandbiterrs: rewrite page
[ 245.718720] mtd_nandbiterrs: read_page
[ 245.723022] mtd_nandbiterrs: verify_page
[ 245.727319] mtd_nandbiterrs: Successfully corrected 32 bit errors per subpage
[ 245.734489] mtd_nandbiterrs: Inserted biterror @ 8/0
[ 245.740728] mtd_nandbiterrs: rewrite page
[ 245.746126] mtd_nandbiterrs: read_page
[ 245.750356] mtd_nandbiterrs: verify_page
[ 245.754694] mtd_nandbiterrs: Successfully corrected 33 bit errors per subpage
[ 245.761861] mtd_nandbiterrs: Inserted biterror @ 9/5
[ 245.768127] mtd_nandbiterrs: rewrite page
[ 245.773537] mtd_nandbiterrs: read_page
[ 245.777776] mtd_nandbiterrs: verify_page
[ 245.782109] mtd_nandbiterrs: Successfully corrected 34 bit errors per subpage
[ 245.789253] mtd_nandbiterrs: Inserted biterror @ 9/4
[ 245.795584] mtd_nandbiterrs: rewrite page
[ 245.800900] mtd_nandbiterrs: read_page
[ 245.805137] mtd_nandbiterrs: verify_page
[ 245.809434] mtd_nandbiterrs: Successfully corrected 35 bit errors per subpage
[ 245.816606] mtd_nandbiterrs: Inserted biterror @ 9/2
[ 245.822860] mtd_nandbiterrs: rewrite page
[ 245.828129] mtd_nandbiterrs: read_page
[ 245.832428] mtd_nandbiterrs: verify_page
[ 245.836727] mtd_nandbiterrs: Successfully corrected 36 bit errors per subpage
[ 245.843914] mtd_nandbiterrs: Inserted biterror @ 9/0
[ 245.850158] mtd_nandbiterrs: rewrite page
[ 245.855565] mtd_nandbiterrs: read_page
[ 245.859799] mtd_nandbiterrs: verify_page
[ 245.864127] mtd_nandbiterrs: Successfully corrected 37 bit errors per subpage
[ 245.871294] mtd_nandbiterrs: Inserted biterror @ 10/7
[ 245.877618] mtd_nandbiterrs: rewrite page
[ 245.883018] mtd_nandbiterrs: read_page
[ 245.887249] mtd_nandbiterrs: verify_page
[ 245.891575] mtd_nandbiterrs: Successfully corrected 38 bit errors per subpage
[ 245.898721] mtd_nandbiterrs: Inserted biterror @ 10/6
[ 245.905141] mtd_nandbiterrs: rewrite page
[ 245.910420] mtd_nandbiterrs: read_page
[ 245.914738] mtd_nandbiterrs: verify_page
[ 245.919035] mtd_nandbiterrs: Successfully corrected 39 bit errors per subpage
[ 245.926210] mtd_nandbiterrs: Inserted biterror @ 10/5
[ 245.932549] mtd_nandbiterrs: rewrite page
[ 245.937820] mtd_nandbiterrs: read_page
[ 245.942120] mtd_nandbiterrs: Read reported 40 corrected bit errors
[ 245.948311] mtd_nandbiterrs: verify_page
[ 245.952639] mtd_nandbiterrs: Successfully corrected 40 bit errors per subpage
[ 245.959784] mtd_nandbiterrs: Inserted biterror @ 10/4
[ 245.966204] mtd_nandbiterrs: rewrite page
[ 245.971508] mtd_nandbiterrs: read_page
[ 245.981085] mtd_nandbiterrs: error: fill page failed at 0x0 err = -74
[ 245.987538] mtd_nandbiterrs: After 41 biterrors per subpage, read reported error -74
[ 245.996662] mtd_nandbiterrs: finished successfully.
[ 246.001578] ==================================================
I think you can send out the new version.
thanks
Huang Shijie
On Fri, 10 Oct 2014 22:42:51 +0800
Huang Shijie <[email protected]> wrote:
> On Wed, Oct 08, 2014 at 05:10:34PM +0200, Boris Brezillon wrote:
> > On Wed, 8 Oct 2014 22:24:40 +0800
> > Huang Shijie <[email protected]> wrote:
> >
> > > On Tue, Sep 23, 2014 at 04:07:33PM +0200, Boris BREZILLON wrote:
> > > > Hello Huang, Brian,
> > > >
> > > > This is just a new proposal to support raw accesses in a more standard way
> > > > in the GPMI driver.
> > > > This series has been tested on an imx28 board.
> > > >
> > > > Any suggestions are welcome.
> > > >
> > > > Best Regards,
> > > >
> > > > Boris
> > > >
> > > > Changes since v2:
> > > > - fixed a bug in gpmi_move_bits
> > > > - add a raw_buffer field to be used when using raw access methods
> > > > (experienced memory corruptions when directly using page_buffer_virt
> > > > buffer)
> > > > - add raw OOB access functions
> > >
> > > I tested this patch set today with the imx6dl-sabreauto board.
> > >
> > > NAND: Micron MT29F64G08CBABAWP
> > > 8192MiB, MLC, page size: 8192, OOB size: 744
> > >
> > > ECC: 40bit
> > >
> > > The result:
> > >
> > > [ 3672.779009] ==================================================
> > > [ 3672.784974] mtd_nandbiterrs: MTD device: 0
> > > [ 3672.789480] mtd_nandbiterrs: MTD device size 16777216, eraseblock=2097152, page=8192, oob=744
> > > [ 3672.798169] mtd_nandbiterrs: Device uses 1 subpages of 8192 bytes
> > > [ 3672.804554] mtd_nandbiterrs: Using page=0, offset=0, eraseblock=0
> > > [ 3672.812497] mtd_nandbiterrs: incremental biterrors test
> > > [ 3672.818688] mtd_nandbiterrs: write_page
> > > [ 3672.825529] mtd_nandbiterrs: rewrite page
> > > [ 3672.837290] mtd_nandbiterrs: read_page
> > > [ 3672.848407] mtd_nandbiterrs: error: read failed at 0x0
> > > [ 3672.853644] mtd_nandbiterrs: After 0 biterrors per subpage, read reported error -74
> > > [ 3672.862932] mtd_nandbiterrs: finished successfully.
> > > [ 3672.867837] ==================================================
> > >
> > > [ 3745.282368] ==================================================
> > > [ 3745.288227] mtd_nandbiterrs: MTD device: 0
> > > [ 3745.292913] mtd_nandbiterrs: MTD device size 16777216, eraseblock=2097152, page=8192, oob=744
> > > [ 3745.301897] mtd_nandbiterrs: Device uses 1 subpages of 8192 bytes
> > > [ 3745.308023] mtd_nandbiterrs: Using page=1, offset=8192, eraseblock=0
> > > [ 3745.316778] mtd_nandbiterrs: incremental biterrors test
> > > [ 3745.323017] mtd_nandbiterrs: write_page
> > > [ 3745.328616] mtd_nandbiterrs: rewrite page
> > > [ 3745.334191] mtd_nandbiterrs: read_page
> > > [ 3745.346878] mtd_nandbiterrs: error: read failed at 0x2000
> > > [ 3745.352352] mtd_nandbiterrs: After 0 biterrors per subpage, read reported error -74
> > > [ 3745.361281] mtd_nandbiterrs: finished successfully.
> > > [ 3745.366173] ==================================================
> > >
> > >
> > > Is this okay?
> >
> > No, it doesn't seem to be correct.
> > But it's an MLC flash, so you'll most probably need to apply this patch
> > to nandbiterrs testsuite:
> >
> > http://code.bulix.org/f69wuu-87021
> >
> > This patch is flashing the block between each bitflip insertion to
> > avoid multiple write without erasure (which, AFAIK, is not supported
> > by MLC flashes).
> After I applied this patch. It seems ok now.
>
> The test result:
> [ 244.789900] ==================================================
> [ 244.795826] mtd_nandbiterrs: MTD device: 1
> [ 244.799974] mtd_nandbiterrs: MTD device size 16777216, eraseblock=2097152, page=8192, oob=744
> [ 244.808563] mtd_nandbiterrs: Device uses 1 subpages of 8192 bytes
> [ 244.814697] mtd_nandbiterrs: Using page=0, offset=0, eraseblock=0
> [ 244.822622] mtd_nandbiterrs: incremental biterrors test
> [ 244.828146] mtd_nandbiterrs: write_page
> [ 244.833341] mtd_nandbiterrs: fill page
> [ 244.838831] mtd_nandbiterrs: rewrite page
> [ 244.844353] mtd_nandbiterrs: read_page
> [ 244.848585] mtd_nandbiterrs: verify_page
> [ 244.852915] mtd_nandbiterrs: Successfully corrected 0 bit errors per subpage
> [ 244.859973] mtd_nandbiterrs: Inserted biterror @ 0/5
> [ 244.866316] mtd_nandbiterrs: rewrite page
> [ 244.871629] mtd_nandbiterrs: read_page
> [ 244.875864] mtd_nandbiterrs: verify_page
> [ 244.880161] mtd_nandbiterrs: Successfully corrected 1 bit errors per subpage
> [ 244.887247] mtd_nandbiterrs: Inserted biterror @ 0/2
> [ 244.893499] mtd_nandbiterrs: rewrite page
> [ 244.898766] mtd_nandbiterrs: read_page
> [ 244.903071] mtd_nandbiterrs: verify_page
> [ 244.907369] mtd_nandbiterrs: Successfully corrected 2 bit errors per subpage
> [ 244.914463] mtd_nandbiterrs: Inserted biterror @ 0/0
> [ 244.920701] mtd_nandbiterrs: rewrite page
> [ 244.926109] mtd_nandbiterrs: read_page
> [ 244.930343] mtd_nandbiterrs: verify_page
> [ 244.934672] mtd_nandbiterrs: Successfully corrected 3 bit errors per subpage
> [ 244.941752] mtd_nandbiterrs: Inserted biterror @ 1/7
> [ 244.947988] mtd_nandbiterrs: rewrite page
> [ 244.953408] mtd_nandbiterrs: read_page
> [ 244.957641] mtd_nandbiterrs: verify_page
> [ 244.961970] mtd_nandbiterrs: Successfully corrected 4 bit errors per subpage
> [ 244.969029] mtd_nandbiterrs: Inserted biterror @ 1/5
> [ 244.975357] mtd_nandbiterrs: rewrite page
> [ 244.980627] mtd_nandbiterrs: read_page
> [ 244.984931] mtd_nandbiterrs: verify_page
> [ 244.989229] mtd_nandbiterrs: Successfully corrected 5 bit errors per subpage
> [ 244.996318] mtd_nandbiterrs: Inserted biterror @ 1/2
> [ 245.002576] mtd_nandbiterrs: rewrite page
> [ 245.007843] mtd_nandbiterrs: read_page
> [ 245.012139] mtd_nandbiterrs: verify_page
> [ 245.016439] mtd_nandbiterrs: Successfully corrected 6 bit errors per subpage
> [ 245.023526] mtd_nandbiterrs: Inserted biterror @ 1/0
> [ 245.029755] mtd_nandbiterrs: rewrite page
> [ 245.035149] mtd_nandbiterrs: read_page
> [ 245.039378] mtd_nandbiterrs: verify_page
> [ 245.043726] mtd_nandbiterrs: Successfully corrected 7 bit errors per subpage
> [ 245.050787] mtd_nandbiterrs: Inserted biterror @ 2/6
> [ 245.057123] mtd_nandbiterrs: rewrite page
> [ 245.062423] mtd_nandbiterrs: read_page
> [ 245.066654] mtd_nandbiterrs: verify_page
> [ 245.071001] mtd_nandbiterrs: Successfully corrected 8 bit errors per subpage
> [ 245.078060] mtd_nandbiterrs: Inserted biterror @ 2/5
> [ 245.084398] mtd_nandbiterrs: rewrite page
> [ 245.089673] mtd_nandbiterrs: read_page
> [ 245.093978] mtd_nandbiterrs: verify_page
> [ 245.098275] mtd_nandbiterrs: Successfully corrected 9 bit errors per subpage
> [ 245.105360] mtd_nandbiterrs: Inserted biterror @ 2/2
> [ 245.111622] mtd_nandbiterrs: rewrite page
> [ 245.116899] mtd_nandbiterrs: read_page
> [ 245.121188] mtd_nandbiterrs: verify_page
> [ 245.125485] mtd_nandbiterrs: Successfully corrected 10 bit errors per subpage
> [ 245.132658] mtd_nandbiterrs: Inserted biterror @ 2/0
> [ 245.138895] mtd_nandbiterrs: rewrite page
> [ 245.144294] mtd_nandbiterrs: read_page
> [ 245.148524] mtd_nandbiterrs: verify_page
> [ 245.152853] mtd_nandbiterrs: Successfully corrected 11 bit errors per subpage
> [ 245.159998] mtd_nandbiterrs: Inserted biterror @ 3/7
> [ 245.166326] mtd_nandbiterrs: rewrite page
> [ 245.171620] mtd_nandbiterrs: read_page
> [ 245.175849] mtd_nandbiterrs: verify_page
> [ 245.180146] mtd_nandbiterrs: Successfully corrected 12 bit errors per subpage
> [ 245.187314] mtd_nandbiterrs: Inserted biterror @ 3/6
> [ 245.193603] mtd_nandbiterrs: rewrite page
> [ 245.198874] mtd_nandbiterrs: read_page
> [ 245.203183] mtd_nandbiterrs: verify_page
> [ 245.207480] mtd_nandbiterrs: Successfully corrected 13 bit errors per subpage
> [ 245.214657] mtd_nandbiterrs: Inserted biterror @ 3/5
> [ 245.220958] mtd_nandbiterrs: rewrite page
> [ 245.226235] mtd_nandbiterrs: read_page
> [ 245.230462] mtd_nandbiterrs: verify_page
> [ 245.234787] mtd_nandbiterrs: Successfully corrected 14 bit errors per subpage
> [ 245.241965] mtd_nandbiterrs: Inserted biterror @ 3/2
> [ 245.248210] mtd_nandbiterrs: rewrite page
> [ 245.253614] mtd_nandbiterrs: read_page
> [ 245.257846] mtd_nandbiterrs: verify_page
> [ 245.262177] mtd_nandbiterrs: Successfully corrected 15 bit errors per subpage
> [ 245.269322] mtd_nandbiterrs: Inserted biterror @ 3/0
> [ 245.275670] mtd_nandbiterrs: rewrite page
> [ 245.280965] mtd_nandbiterrs: read_page
> [ 245.285202] mtd_nandbiterrs: verify_page
> [ 245.289501] mtd_nandbiterrs: Successfully corrected 16 bit errors per subpage
> [ 245.296677] mtd_nandbiterrs: Inserted biterror @ 4/2
> [ 245.302952] mtd_nandbiterrs: rewrite page
> [ 245.308237] mtd_nandbiterrs: read_page
> [ 245.312548] mtd_nandbiterrs: verify_page
> [ 245.316846] mtd_nandbiterrs: Successfully corrected 17 bit errors per subpage
> [ 245.324018] mtd_nandbiterrs: Inserted biterror @ 4/0
> [ 245.330264] mtd_nandbiterrs: rewrite page
> [ 245.335672] mtd_nandbiterrs: read_page
> [ 245.339895] mtd_nandbiterrs: verify_page
> [ 245.344222] mtd_nandbiterrs: Successfully corrected 18 bit errors per subpage
> [ 245.351399] mtd_nandbiterrs: Inserted biterror @ 5/7
> [ 245.357673] mtd_nandbiterrs: rewrite page
> [ 245.363085] mtd_nandbiterrs: read_page
> [ 245.367316] mtd_nandbiterrs: verify_page
> [ 245.371646] mtd_nandbiterrs: Successfully corrected 19 bit errors per subpage
> [ 245.378792] mtd_nandbiterrs: Inserted biterror @ 5/2
> [ 245.385136] mtd_nandbiterrs: rewrite page
> [ 245.390402] mtd_nandbiterrs: read_page
> [ 245.394704] mtd_nandbiterrs: verify_page
> [ 245.399002] mtd_nandbiterrs: Successfully corrected 20 bit errors per subpage
> [ 245.406178] mtd_nandbiterrs: Inserted biterror @ 5/0
> [ 245.412440] mtd_nandbiterrs: rewrite page
> [ 245.417711] mtd_nandbiterrs: read_page
> [ 245.422027] mtd_nandbiterrs: verify_page
> [ 245.426326] mtd_nandbiterrs: Successfully corrected 21 bit errors per subpage
> [ 245.433515] mtd_nandbiterrs: Inserted biterror @ 6/6
> [ 245.439795] mtd_nandbiterrs: rewrite page
> [ 245.445203] mtd_nandbiterrs: read_page
> [ 245.449432] mtd_nandbiterrs: verify_page
> [ 245.453762] mtd_nandbiterrs: Successfully corrected 22 bit errors per subpage
> [ 245.460927] mtd_nandbiterrs: Inserted biterror @ 6/2
> [ 245.467160] mtd_nandbiterrs: rewrite page
> [ 245.472558] mtd_nandbiterrs: read_page
> [ 245.476788] mtd_nandbiterrs: verify_page
> [ 245.481133] mtd_nandbiterrs: Successfully corrected 23 bit errors per subpage
> [ 245.488279] mtd_nandbiterrs: Inserted biterror @ 6/0
> [ 245.494610] mtd_nandbiterrs: rewrite page
> [ 245.499888] mtd_nandbiterrs: read_page
> [ 245.504194] mtd_nandbiterrs: verify_page
> [ 245.508490] mtd_nandbiterrs: Successfully corrected 24 bit errors per subpage
> [ 245.515676] mtd_nandbiterrs: Inserted biterror @ 7/7
> [ 245.522001] mtd_nandbiterrs: rewrite page
> [ 245.527275] mtd_nandbiterrs: read_page
> [ 245.531577] mtd_nandbiterrs: verify_page
> [ 245.535874] mtd_nandbiterrs: Successfully corrected 25 bit errors per subpage
> [ 245.543049] mtd_nandbiterrs: Inserted biterror @ 7/6
> [ 245.549291] mtd_nandbiterrs: rewrite page
> [ 245.554685] mtd_nandbiterrs: read_page
> [ 245.558916] mtd_nandbiterrs: verify_page
> [ 245.563252] mtd_nandbiterrs: Successfully corrected 26 bit errors per subpage
> [ 245.570397] mtd_nandbiterrs: Inserted biterror @ 7/2
> [ 245.576733] mtd_nandbiterrs: rewrite page
> [ 245.582124] mtd_nandbiterrs: read_page
> [ 245.586355] mtd_nandbiterrs: verify_page
> [ 245.590650] mtd_nandbiterrs: Successfully corrected 27 bit errors per subpage
> [ 245.597836] mtd_nandbiterrs: Inserted biterror @ 7/0
> [ 245.604124] mtd_nandbiterrs: rewrite page
> [ 245.609392] mtd_nandbiterrs: read_page
> [ 245.613704] mtd_nandbiterrs: verify_page
> [ 245.618005] mtd_nandbiterrs: Successfully corrected 28 bit errors per subpage
> [ 245.625179] mtd_nandbiterrs: Inserted biterror @ 8/7
> [ 245.631417] mtd_nandbiterrs: rewrite page
> [ 245.636685] mtd_nandbiterrs: read_page
> [ 245.641007] mtd_nandbiterrs: verify_page
> [ 245.645308] mtd_nandbiterrs: Successfully corrected 29 bit errors per subpage
> [ 245.652482] mtd_nandbiterrs: Inserted biterror @ 8/5
> [ 245.658726] mtd_nandbiterrs: rewrite page
> [ 245.664125] mtd_nandbiterrs: read_page
> [ 245.668355] mtd_nandbiterrs: verify_page
> [ 245.672697] mtd_nandbiterrs: Successfully corrected 30 bit errors per subpage
> [ 245.679842] mtd_nandbiterrs: Inserted biterror @ 8/4
> [ 245.686178] mtd_nandbiterrs: rewrite page
> [ 245.691492] mtd_nandbiterrs: read_page
> [ 245.695722] mtd_nandbiterrs: verify_page
> [ 245.700019] mtd_nandbiterrs: Successfully corrected 31 bit errors per subpage
> [ 245.707193] mtd_nandbiterrs: Inserted biterror @ 8/2
> [ 245.713444] mtd_nandbiterrs: rewrite page
> [ 245.718720] mtd_nandbiterrs: read_page
> [ 245.723022] mtd_nandbiterrs: verify_page
> [ 245.727319] mtd_nandbiterrs: Successfully corrected 32 bit errors per subpage
> [ 245.734489] mtd_nandbiterrs: Inserted biterror @ 8/0
> [ 245.740728] mtd_nandbiterrs: rewrite page
> [ 245.746126] mtd_nandbiterrs: read_page
> [ 245.750356] mtd_nandbiterrs: verify_page
> [ 245.754694] mtd_nandbiterrs: Successfully corrected 33 bit errors per subpage
> [ 245.761861] mtd_nandbiterrs: Inserted biterror @ 9/5
> [ 245.768127] mtd_nandbiterrs: rewrite page
> [ 245.773537] mtd_nandbiterrs: read_page
> [ 245.777776] mtd_nandbiterrs: verify_page
> [ 245.782109] mtd_nandbiterrs: Successfully corrected 34 bit errors per subpage
> [ 245.789253] mtd_nandbiterrs: Inserted biterror @ 9/4
> [ 245.795584] mtd_nandbiterrs: rewrite page
> [ 245.800900] mtd_nandbiterrs: read_page
> [ 245.805137] mtd_nandbiterrs: verify_page
> [ 245.809434] mtd_nandbiterrs: Successfully corrected 35 bit errors per subpage
> [ 245.816606] mtd_nandbiterrs: Inserted biterror @ 9/2
> [ 245.822860] mtd_nandbiterrs: rewrite page
> [ 245.828129] mtd_nandbiterrs: read_page
> [ 245.832428] mtd_nandbiterrs: verify_page
> [ 245.836727] mtd_nandbiterrs: Successfully corrected 36 bit errors per subpage
> [ 245.843914] mtd_nandbiterrs: Inserted biterror @ 9/0
> [ 245.850158] mtd_nandbiterrs: rewrite page
> [ 245.855565] mtd_nandbiterrs: read_page
> [ 245.859799] mtd_nandbiterrs: verify_page
> [ 245.864127] mtd_nandbiterrs: Successfully corrected 37 bit errors per subpage
> [ 245.871294] mtd_nandbiterrs: Inserted biterror @ 10/7
> [ 245.877618] mtd_nandbiterrs: rewrite page
> [ 245.883018] mtd_nandbiterrs: read_page
> [ 245.887249] mtd_nandbiterrs: verify_page
> [ 245.891575] mtd_nandbiterrs: Successfully corrected 38 bit errors per subpage
> [ 245.898721] mtd_nandbiterrs: Inserted biterror @ 10/6
> [ 245.905141] mtd_nandbiterrs: rewrite page
> [ 245.910420] mtd_nandbiterrs: read_page
> [ 245.914738] mtd_nandbiterrs: verify_page
> [ 245.919035] mtd_nandbiterrs: Successfully corrected 39 bit errors per subpage
> [ 245.926210] mtd_nandbiterrs: Inserted biterror @ 10/5
> [ 245.932549] mtd_nandbiterrs: rewrite page
> [ 245.937820] mtd_nandbiterrs: read_page
> [ 245.942120] mtd_nandbiterrs: Read reported 40 corrected bit errors
> [ 245.948311] mtd_nandbiterrs: verify_page
> [ 245.952639] mtd_nandbiterrs: Successfully corrected 40 bit errors per subpage
> [ 245.959784] mtd_nandbiterrs: Inserted biterror @ 10/4
> [ 245.966204] mtd_nandbiterrs: rewrite page
> [ 245.971508] mtd_nandbiterrs: read_page
> [ 245.981085] mtd_nandbiterrs: error: fill page failed at 0x0 err = -74
> [ 245.987538] mtd_nandbiterrs: After 41 biterrors per subpage, read reported error -74
> [ 245.996662] mtd_nandbiterrs: finished successfully.
> [ 246.001578] ==================================================
>
> I think you can send out the new version.
That's great news!
Thanks for testing it.
I'll send a new version soon.
Best Regards,
Boris
--
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
>
> No, it doesn't seem to be correct.
> But it's an MLC flash, so you'll most probably need to apply this patch
> to nandbiterrs testsuite:
>
> http://code.bulix.org/f69wuu-87021
>
> This patch is flashing the block between each bitflip insertion to
> avoid multiple write without erasure (which, AFAIK, is not supported
> by MLC flashes).
Hi Huang,
just out of interest, have you tried this on the MLC NAND without the patch?
I'm aware that MLC says you shouldn't write multiple times, but that is
with a view towards specified data endurance. I would only expect a few
additional bit errors during the test.
Did you try the overwrite test?
I'm curious how MLC NAND does when subjected to multiple writes.
Best regards,
Iwo
______________________________________________________________________
This communication contains information which may be confidential or privileged. The information is intended solely for the use of the individual or entity named above. If you are not the intended recipient, be aware that any disclosure, copying, distribution or use of the contents of this information is prohibited. If you have received this communication in error, please notify me by telephone immediately.
______________________________________________________________________
On Tue, Oct 14, 2014 at 04:50:27PM +1100, Iwo Mergler wrote:
>
> >
> > No, it doesn't seem to be correct.
> > But it's an MLC flash, so you'll most probably need to apply this patch
> > to nandbiterrs testsuite:
> >
> > http://code.bulix.org/f69wuu-87021
> >
> > This patch is flashing the block between each bitflip insertion to
> > avoid multiple write without erasure (which, AFAIK, is not supported
> > by MLC flashes).
>
> Hi Huang,
>
>
> just out of interest, have you tried this on the MLC NAND without the patch?
yes. I tried. As i posted, it will failed.
>
> I'm aware that MLC says you shouldn't write multiple times, but that is
> with a view towards specified data endurance. I would only expect a few
> additional bit errors during the test.
>
> Did you try the overwrite test?
not yet. I can test it tomorrow.
>
> I'm curious how MLC NAND does when subjected to multiple writes.
We should not do the multiple writes to the MLC nand.
We can do so with the SLC nand.
thank
Huang Shijie
On Tue, Oct 14, 2014 at 04:50:27PM +1100, Iwo Mergler wrote:
>
> >
> > No, it doesn't seem to be correct.
> > But it's an MLC flash, so you'll most probably need to apply this patch
> > to nandbiterrs testsuite:
> >
> > http://code.bulix.org/f69wuu-87021
> >
> > This patch is flashing the block between each bitflip insertion to
> > avoid multiple write without erasure (which, AFAIK, is not supported
> > by MLC flashes).
>
> Hi Huang,
>
>
> just out of interest, have you tried this on the MLC NAND without the patch?
>
> I'm aware that MLC says you shouldn't write multiple times, but that is
> with a view towards specified data endurance. I would only expect a few
> additional bit errors during the test.
>
> Did you try the overwrite test?
>
The following is the test result for overwrite with this MLC patch:
root@imx6qdlsolo:~# insmod mtd_nandbiterrs.ko dev=1 mode=1
[ 762.534714]
[ 762.536259] ==================================================
[ 762.542115] mtd_nandbiterrs: MTD device: 1
[ 762.546326] mtd_nandbiterrs: MTD device size 16777216,
eraseblock=2097152, page=8192, oob=744
[ 762.554937] mtd_nandbiterrs: Device uses 1 subpages of 8192
bytes
[ 762.561059] mtd_nandbiterrs: Using page=0, offset=0,
eraseblock=0
[ 762.571333] mtd_nandbiterrs: overwrite biterrors test
[ 762.576715] mtd_nandbiterrs: write_page
[ 762.590448] mtd_nandbiterrs: error: read failed at 0x0
[ 762.595650] mtd_nandbiterrs: Read reported error -74
[ 762.600625] mtd_nandbiterrs: Bit error histogram (0
operations total):
[ 762.608586] mtd_nandbiterrs: finished successfully.
[ 762.613501]
==================================================
insmod: ERROR: could not insert module mtd_nandbiterrs.ko:
Input/output error
thanks
Huang Shijie
On Sun, 19 Oct 2014 13:20:38 +1100 Huang Shijie <[email protected]> wrote:
> On Tue, Oct 14, 2014 at 04:50:27PM +1100, Iwo Mergler wrote:
> >
> > >
> > > No, it doesn't seem to be correct.
> > > But it's an MLC flash, so you'll most probably need to apply this
> > > patch to nandbiterrs testsuite:
> > >
> > > http://code.bulix.org/f69wuu-87021
> > >
> > > This patch is flashing the block between each bitflip insertion to
> > > avoid multiple write without erasure (which, AFAIK, is not
> > > supported by MLC flashes).
> >
> > Hi Huang,
> >
> >
> > just out of interest, have you tried this on the MLC NAND without
> > the patch?
> >
> > I'm aware that MLC says you shouldn't write multiple times, but
> > that is with a view towards specified data endurance. I would only
> > expect a few additional bit errors during the test.
> >
> > Did you try the overwrite test?
> >
> The following is the test result for overwrite with this MLC patch:
>
> root@imx6qdlsolo:~# insmod mtd_nandbiterrs.ko dev=1 mode=1
> [ 762.534714]
> [ 762.536259] ==================================================
> [ 762.542115] mtd_nandbiterrs: MTD device: 1
> [ 762.546326] mtd_nandbiterrs: MTD device size 16777216,
> eraseblock=2097152, page=8192, oob=744
> [ 762.554937] mtd_nandbiterrs: Device uses 1 subpages of 8192
> bytes
> [ 762.561059] mtd_nandbiterrs: Using page=0, offset=0,
> eraseblock=0
> [ 762.571333] mtd_nandbiterrs: overwrite biterrors test
> [ 762.576715] mtd_nandbiterrs: write_page
> [ 762.590448] mtd_nandbiterrs: error: read failed at 0x0
> [ 762.595650] mtd_nandbiterrs: Read reported error -74
> [ 762.600625] mtd_nandbiterrs: Bit error histogram (0
> operations total):
> [ 762.608586] mtd_nandbiterrs: finished successfully.
> [ 762.613501]
> ==================================================
> insmod: ERROR: could not insert module mtd_nandbiterrs.ko:
> Input/output error
>
Thanks. If I read this correctly, this means that writing the same data twice,
already generates more bit errors than the ECC can fix.
Best regards,
Iwo
______________________________________________________________________
This communication contains information which may be confidential or privileged. The information is intended solely for the use of the individual or entity named above. If you are not the intended recipient, be aware that any disclosure, copying, distribution or use of the contents of this information is prohibited. If you have received this communication in error, please notify me by telephone immediately.
______________________________________________________________________