* Assistance with debugging ubi_io_read error -74 (ECC Error)
@ 2012-03-15 11:47 Craig Peacock
2012-03-16 11:53 ` Artem Bityutskiy
0 siblings, 1 reply; 2+ messages in thread
From: Craig Peacock @ 2012-03-15 11:47 UTC (permalink / raw)
To: linux-mtd
I'm trying to get UBI volumes/fs working on a Seagate GoFlex Home
platform with a custom kernel. The product orginally ships with a
working UBIFS. It has a Marvell Kirkwood (ARM) processor with a Toshiba
TC58NVG1S3ETA00 256Mbyte NAND flash and runs Kernel 2.6.22.18. It
appears to be based on Marvell LSP Version KW_LSP_4.3.4_patch22. One of
the kernel parameters is ubi.mtd=2,2048 setting the VID header to an
offset of 2048 bytes and avoiding subpages.
I've recompiled my own kernel for the board based on Linux 3.2.9 but I
am unable to successfully use UBIFS even when I set the VID header to a
2048 byte offset.
When I try to boot with the root UBIFS on mtd2 I get:
NAND device: Manufacturer ID: 0x98, Chip ID: 0xda (Toshiba NAND 256MiB
3,3V 8-bit)
Scanning device for bad blocks
Creating 3 MTD partitions on "orion_nand":
0x000000000000-0x000000100000 : "u-boot"
0x000000100000-0x000000700000 : "uImage"
0x000000700000-0x000010000000 : "root"
UBI: attaching mtd2 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 126976 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 2048 (aligned 2048)
UBI: data offset: 4096
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
UBI error: ubi_io_read: error -74 (ECC error) while reading 64 bytes
from PEB 6:0, read 64 bytes
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
UBI error: ubi_io_read: error -74 (ECC error) while reading 64 bytes
from PEB 8:0, read 64 bytes
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
UBI error: ubi_io_read: error -74 (ECC error) while reading 64 bytes
from PEB 17:0, read 64 bytes
...
UBI error: ubi_io_read: error -74 (ECC error) while reading 64 bytes
from PEB 1984:0, read 64 bytes
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
UBI: max. sequence number: 5
UBI: attached mtd2 to ubi0
UBI: MTD device name: "root"
UBI: MTD device size: 249 MiB
UBI: number of good PEBs: 1992
UBI: number of bad PEBs: 0
UBI: number of corrupted PEBs: 0
UBI: max. allowed volumes: 128
UBI: wear-leveling threshold: 4096
UBI: number of internal volumes: 1
UBI: number of user volumes: 0
UBI: available PEBs: 1969
UBI: total number of reserved PEBs: 23
UBI: number of PEBs reserved for bad PEB handling: 19
UBI: max/mean erase counter: 9/0
UBI: image sequence number: 205915892
UBI: background thread "ubi_bgt0d" started, PID 472
Documentation would suggest it could be a buggy NAND driver, ECC or
subpage problem.
I've compiled and executed the mtd_nandecctest module. It reports ECC is
all o.k. :
mtd_nandecctest: ok - nand-ecc-256
mtd_nandecctest: ok - nand-ecc-512
The pagetest module works fine, but the subpagetest returns the following :
=================================================
mtd_subpagetest: MTD device: 2
mtd_subpagetest: MTD device size 261095424, eraseblock size 131072, page
size 2048, subpage size 512, count of eraseblocks 1992, pages per
eraseblock 64, OOB size 64
mtd_subpagetest: scanning for bad eraseblocks
mtd_subpagetest: scanned 1992 eraseblocks, 0 are bad
mtd_subpagetest: erasing whole device
mtd_subpagetest: erased 1992 eraseblocks
mtd_subpagetest: writing whole device
mtd_subpagetest: written up to eraseblock 0
mtd_subpagetest: written up to eraseblock 256
mtd_subpagetest: written up to eraseblock 512
mtd_subpagetest: written up to eraseblock 768
mtd_subpagetest: written up to eraseblock 1024
mtd_subpagetest: written up to eraseblock 1280
mtd_subpagetest: written up to eraseblock 1536
mtd_subpagetest: written up to eraseblock 1792
mtd_subpagetest: written 1992 eraseblocks
mtd_subpagetest: verifying all eraseblocks
uncorrectable error :
mtd_subpagetest: error: read failed at 0x200
mtd_subpagetest: error -74 occurred
=================================================
insmod: error inserting 'mtd_subpagetest.ko': -1 Bad message
suggesting there is in fact a subpage problem.
I can mount a root filesystem using NFS. From here, I can erase, format
and attach mtd2 on the target :
# flash_erase /dev/mtd2 0 0
# ubiformat /dev/mtd2 -s 2048 -O 2048
# ubiattach -p /dev/mtd2 -O 2048
UBI: attaching mtd2 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 126976 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 2048 (aligned 2048)
UBI: data offset: 4096
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
UBI error: ubi_io_read: error -74 (ECC error) while reading 512 bytes
from PEB 0:2048, read 512 bytes
uncorrectable error :
...
UBI error: ubi_io_read: error -74 (ECC error) while reading 64 bytes
from PEB 1989:0, read 64 bytes
uncorrectable error :
uncorrectable error :
uncorrectable error :
uncorrectable error :
UBI: max. sequence number: 0
UBI: attached mtd2 to ubi0
UBI: MTD device name: "root"
UBI: MTD device size: 249 MiB
UBI: number of good PEBs: 1992
UBI: number of bad PEBs: 0
UBI: number of corrupted PEBs: 0
UBI: max. allowed volumes: 128
UBI: wear-leveling threshold: 4096
UBI: number of internal volumes: 1
UBI: number of user volumes: 0
UBI: available PEBs: 1969
UBI: total number of reserved PEBs: 23
UBI: number of PEBs reserved for bad PEB handling: 19
UBI: max/mean erase counter: 0/0
UBI: image sequence number: 1321006557
UBI: background thread "ubi_bgt0d" started, PID 1172
UBI device number 0, total 1992 LEBs (252936192 bytes, 241.2 MiB),
available 1969 LEBs (250015744 bytes, 238.4 MiB), LEB size 126976 bytes
(124.0 KiB)
UBI: scrubbed PEB 0 (LEB 2147479551:0), data moved to PEB 1991
UBI: scrubbed PEB 1 (LEB 2147479551:1), data moved to PEB 0
If there any other tests I can run to narrow down the problem?
Do I assume this is a problem with the NAND driver, or do you have any
ideas where I should start looking?
Regards,
Craig
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Assistance with debugging ubi_io_read error -74 (ECC Error)
2012-03-15 11:47 Assistance with debugging ubi_io_read error -74 (ECC Error) Craig Peacock
@ 2012-03-16 11:53 ` Artem Bityutskiy
0 siblings, 0 replies; 2+ messages in thread
From: Artem Bityutskiy @ 2012-03-16 11:53 UTC (permalink / raw)
To: Craig Peacock; +Cc: linux-mtd
[-- Attachment #1: Type: text/plain, Size: 1753 bytes --]
On Thu, 2012-03-15 at 22:17 +1030, Craig Peacock wrote:
> I'm trying to get UBI volumes/fs working on a Seagate GoFlex Home
> platform with a custom kernel. The product orginally ships with a
> working UBIFS. It has a Marvell Kirkwood (ARM) processor with a Toshiba
> TC58NVG1S3ETA00 256Mbyte NAND flash and runs Kernel 2.6.22.18. It
> appears to be based on Marvell LSP Version KW_LSP_4.3.4_patch22. One of
> the kernel parameters is ubi.mtd=2,2048 setting the VID header to an
> offset of 2048 bytes and avoiding subpages.
>
> I've recompiled my own kernel for the board based on Linux 3.2.9 but I
> am unable to successfully use UBIFS even when I set the VID header to a
> 2048 byte offset.
From a quick glance your driver has issues with reading. When you
disable subpage usage in UBI - this will only mean that it won't _write_
sub-pages, but it will still read them. Every drivers should allow
reading less than a full NAND page.
...
> # flash_erase /dev/mtd2 0 0
> # ubiformat /dev/mtd2 -s 2048 -O 2048
> # ubiattach -p /dev/mtd2 -O 2048
...
> UBI error: ubi_io_read: error -74 (ECC error) while reading 512 bytes
> from PEB 0:2048, read 512 bytes
Read 512 from page-aligned address does not work - check the driver.
> uncorrectable error :
> ...
> UBI error: ubi_io_read: error -74 (ECC error) while reading 64 bytes
> from PEB 1989:0, read 64 bytes
Reading 64 bytes from aligned address 0 does not work - check the
driver.
I guess the problem is that your driver does not support sub-pages, but
still believes it supports them. You can hack it quickly and make
mtd->subpage_sft to be 0, then the NAND base code wont try to do subpage
reads.
--
Best Regards,
Artem Bityutskiy
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-03-16 11:50 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-15 11:47 Assistance with debugging ubi_io_read error -74 (ECC Error) Craig Peacock
2012-03-16 11:53 ` Artem Bityutskiy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox