ubiattach fails after ubiformat

Steve Kinneberg steve.xcomlabs at gmail.com
Mon Dec 13 09:04:20 PST 2021


On Mon, 2021-12-06 at 14:13 -0800, Steve Kinneberg wrote:
> Hello,
> 
> I am having problems using ubiattach with an SLC NAND Flash device on a
> custom board based off the NXP LS1046ARDB reference design running
> OpenWrt 21.02.  If I issue the following commands, ubiattach appears to
> work:
> 
> flash_erase /dev/mtd0 0 4096
> ubiattach -m 0 -O 2048
> 
> If I use ubiformat, then ubiattach will fail.  Here is the sequence of
> commands that I have tried:
> 
> flash_erase /dev/mtd0 0 4096
> ubiformat /dev/mtd0 -s 2048 -O 2048
> ubiattach -m 0 -O 2048
> 
> At this point, the kernel repeatedly outputs the following (the PEB
> value increments):
> 
> [13440.396590] ubi0 warning: ubi_io_read: error -74 (ECC error) while
> reading 64 bytes from PEB 3:0, read only 64 bytes, retry
> [13440.408305] ubi0 warning: ubi_io_read: error -74 (ECC error) while
> reading 64 bytes from PEB 3:0, read only 64 bytes, retry
> [13440.420021] ubi0 warning: ubi_io_read: error -74 (ECC error) while
> reading 64 bytes from PEB 3:0, read only 64 bytes, retry
> [13440.431737] ubi0 error: ubi_io_read: error -74 (ECC error) while
> reading 64 bytes from PEB 3:0, read 64 bytes
> [13440.441660] CPU: 2 PID: 3110 Comm: ubiattach Not tainted 5.4.154 #0
> [13440.447924] Hardware name: XAPH Board (DT)
> [13440.452013] Call trace:
> [13440.454453]  dump_backtrace+0x0/0x120
> [13440.458110]  show_stack+0x14/0x20
> [13440.461417]  dump_stack+0xb4/0xf4
> [13440.464724]  ubi_io_read+0x17c/0x308
> [13440.468292]  ubi_io_read_ec_hdr+0x4c/0x210
> [13440.472383]  ubi_attach+0x40c/0x1330
> [13440.475953]  ubi_attach_mtd_dev+0x570/0xb08
> [13440.480130]  ctrl_cdev_ioctl+0x3ac/0x510
> [13440.484047]  do_vfs_ioctl+0xa4/0xe00
> [13440.487617]  ksys_ioctl+0x44/0x90
> [13440.490924]  __arm64_sys_ioctl+0x1c/0x210
> [13440.494928]  el0_svc_handler+0x88/0x118
> [13440.498757]  el0_svc+0x8/0x210
> 
> The same sequence of commands using the nandsim driver on a desktop
> Linux system works fine.  I can even flash a UBI image or create
> volumes using the nandsim.
> 
> Here is Linux kernel bootup messages regarding identification of the
> NAND Flash:
> 
> [    0.787530] nand: device found, Manufacturer ID: 0x01, Chip ID: 0xac
> [    0.793889] nand: AMD/Spansion S34MS04G2
> [    0.797810] nand: 512 MiB, SLC, erase size: 128 KiB, page size:
> 2048, OOB size: 128
> [    0.806065] Bad block table found at page 262080, version 0x01
> [    0.813052] Bad block table found at page 262016, version 0x01
> [    0.819495] mtd: no mtd-id
> [    0.822506] fsl,ifc-nand 7e800000.nand: IFC NAND device at
> 0x7e800000, bank 0
> 
> The part number and size are correct for the HW.
> Linux kernel version (from /proc/version):
> 
> Linux version 5.4.154 (steve at steve-linux) (gcc version 8.4.0 (OpenWrt
> GCC 8.4.0 r16330+8-4607f55439)) #0 SMP PREEMPT Tue Nov 30 14:37:50 2021
> 
> 
> Output from /proc/mtd:
> 
> dev:    size   erasesize  name
> mtd0: 20000000 00020000 "7e800000.flash"
> mtd1: 00100000 00001000 "bl2"
> mtd2: 00400000 00001000 "fip"
> mtd3: 00100000 00001000 "u-boot-env"
> mtd4: 00300000 00001000 "reserved-1"
> mtd5: 00040000 00001000 "fman"
> mtd6: 005c0000 00001000 "reserved-2"
> mtd7: 00100000 00001000 "dtb"
> mtd8: 01000000 00001000 "kernel"
> mtd9: 02000000 00001000 "rootfs"
> mtd10: 0186e000 00001000 "rootfs_data"
> mtd11: 03100000 00001000 "firmware"
> 
> 
> Linux boot command line:
> 
> root=/dev/mtdblock9 rootfstype=squashfs noinitrd
> earlycon=uart8250,mmio,0x21c0500 console=ttyS0,115200
> mtdparts=1550000.spi:1m(bl2),4m(fip),1m(u-boot-env),3m(reserved-
> 1),256k(fman),5888k(reserved-
> 2),1m(dtb),16m(kernel),32m(rootfs),49m at 0xf00000(firmware),
> 64m at 0x000000(nor-flash);7e800000.flash
> 
> 
> I presume that I am missing a step or mis-configured something.  Any
> pointers would be greatly appreciated.
> 
> Thanks,
> Steve Kinneberg

Hi,

I'm still having problems with ubiattach.  I've even tried hacking the
Linux kernel driver as suggested in this thread from almost 3 years
ago: https://www.spinics.net/lists/linux-mtd/msg05327.html

That thread is the closest I can find to a similar problem to what I'm
having, but the suggested solutions in it do not work for me.

I've since discovered that even though ubiattach works after
flash_erase, if I detach and re-attach, I get the same kernel errors.

Any suggestions on debugging this will be greatly appreciated.

Thanks,
Steve




More information about the linux-mtd mailing list