at91: Status of NAND flash access
Josh Wu
josh.wu at atmel.com
Tue Dec 11 03:46:00 EST 2012
Hi, Bryan
I tested your kernel & dtb (both 3.4 and 3.7-rc8) that you shared in
dropbox. I can produce your situation. in my case the pmecc error offset
is 0x86a000.
the test steps is:
1. use a sd card boot at91bootstrap and u-boot to boot a
at91sam9g25ek board.
2. use u-boot command to flush a ubi rootfs in 0x800000.
3. load your 3.4 kernel and dtb. it will boot ok.
4. load your 3.7-rc8 kernel and dtb. it will fail to boot. "too many
errors" happens.
But use the test step (not load 3.4 kernel & dtb):
1. use a sd card boot at91bootstrap and u-boot to boot a
at91sam9g25ek board.
2. use u-boot command to flush a ubi rootfs in 0x800000.
3. load your 3.7-rc8 kernel and dtb. it will boot ok. (use my own
3.4 kernel & my dtb is also boot ok.)
Since I don't write DTB in nand flash at all. so it is not caused by
write dtb in nand flash.
So I suspect your 3.4 kernel cause those problem.
Check your kernel 3.4 boot log, I suspect that PMECC is not enabled in
your 3.4 kernel. Since in the log, I don't find the line : atmel_nand
40000000.nand: Initialize PMECC params, cap: 2, sector: 512
After checking your 3.4 dtb. it shows below, and the PMECC parameters is
set correctly.
U-Boot> tftp 21000000 josh/kernel/dt/zImage-3.4-r7-at91sam9x5ek.dtb
macb0: PHY present at 0
macb0: Starting autonegotiation...
macb0: Autonegotiation complete
macb0: link up, 100Mbps full-duplex (lpa: 0x45e1)
Using macb0 device
TFTP from server 10.217.6.34; our IP address is 10.217.3.136
Filename 'josh/kernel/dt/zImage-3.4-r7-at91sam9x5ek.dtb'.
Load address: 0x21000000
Loading: *###
done
Bytes transferred = 12288 (3000 hex)
U-Boot> fdt addr 21000000
U-Boot> fdt print
.......
nand at 40000000 {
compatible = "atmel,at91rm9200-nand";
#address-cells = <0x1>;
#size-cells = <0x1>;
reg = <0x40000000 0x10000000 0xffffe000 0x600 0xffffe600
0x200 0x100000 0x100000>;
atmel,pmecc-lookup-table-offset = <0x8000 0x10000>;
atmel,nand-addr-offset = <0x15>;
atmel,nand-cmd-offset = <0x16>;
gpios = <0x2 0x5 0x0 0x2 0x4 0x0 0x0>;
status = "okay";
nand-bus-width = <0x8>;
nand-ecc-mode = "hw";
atmel,has-pmecc;
atmel,pmecc-cap = <0x2>;
atmel,pmecc-sector-size = <0x200>;
nand-on-flash-bbt;
.......
but in the log (my comment is in below):
On 12/6/2012 9:20 PM, Bryan Evenson wrote:
>> -----Original Message-----
>> From: Josh Wu [mailto:josh.wu at atmel.com]
>> Sent: Thursday, December 06, 2012 5:30 AM
>> To: Bryan Evenson
>> Cc: linux-arm-kernel at lists.infradead.org
>> Subject: Re: at91: Status of NAND flash access
>>
>> On 12/6/2012 11:13 AM, Bryan Evenson wrote:
>>> Josh,
>>>
>>> I spoke too soon. I was able to read and use the filesystem from
>> NAND
>>> flash with the patch you provided when I applied it to the Atmel 3.4
>>> kernel fork over at https://github.com/linux4sam/linux-at91/ (master
>> branch).
>>> When I applied the same patch to the recent mainline kernel (3.7-
>> rc8),
>>> it's still having problems accessing flash. The boot log shows that
>>> it is setting up for PMECC correctly, but it has errors when it tries
>>> to read from the filesystem.
>> It is strange. The 3.4 kernel from at91 github just have a few
>> changes.
>> so rationally it behavior the same at PMECC function. From your log,
>> the
>> 3.7-rc8 kernel says the PMECC found uncorrectable errors.
>>
>> Can you try to dump or read from the u-boot? to see whether u-boot can
>> recognize the same nand page that "too many errors" happened in kernel?
>> I will do some test to see whether the 3.7-rc8 can work in my side or
>> not.
> U-Boot> nand read 0x22000000 0x800000 0x1D00000
>
> NAND read: device 0 offset 0x800000, size 0x1d00000
> PMECC: Too many errors
> NAND read from offset 800000 failed -5
> 0 bytes read: ERROR
>
> So u-boot has the same issue. However, changing the kernel to the linux-at91
> forked kernel produced different results. That kernel noted the PMECC errors
> but was still able to load the filesystem. My boot output from the successful
> filesystem load is below. Is the 3.4 kernel performing corrections that the
> mainline is not, or is it just ignoring errors that it should not be ignoring?
>
> I'm hesitant to make any filesystem changes on this board because I know test
> cases like this where it works one way but not the other are kind of rare. Let
> me know if you have similar results on your end.
>
> -Bryan
>
> Uncompressing Linux... done, booting the kernel.
> Booting Linux on physical CPU 0
> Linux version 3.4.0 (xxxx at xxxx) (gcc version 4.5.3 20110311 (prerelease) (
> GCC) ) #2 Wed Dec 5 15:36:29 EST 2012
> CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
> CPU: VIVT data cache, VIVT instruction cache
> Machine: Atmel AT91SAM (Device Tree), model: Atmel AT91SAM9G25-EK
> Memory policy: ECC disabled, Data cache writeback
> AT91: Detected soc type: at91sam9x5
> AT91: Detected soc subtype: at91sam9g25
> AT91: sram at 0x300000 of 0x8000 mapped at 0xfef70000
> Clocks: CPU 400 MHz, master 133 MHz, main 12.000 MHz
> gpiochip_add: registered GPIOs 0 to 31 on device: pioA
> gpiochip_add: registered GPIOs 32 to 63 on device: pioB
> gpiochip_add: registered GPIOs 64 to 95 on device: pioC
> gpiochip_add: registered GPIOs 96 to 127 on device: pioD
> Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
> Kernel command line: mem=128M console=ttyS0,115200 mtdparts=atmel_nand:8M(bootst
> rap/uboot/kernel)ro,-(rootfs) root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1
> root=ubi0:rootfs
> PID hash table entries: 512 (order: -1, 2048 bytes)
> Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
> Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
> Memory: 128MB = 128MB total
> Memory: 119856k/119856k available, 11216k reserved, 0K highmem
> Virtual kernel memory layout:
> vector : 0xffff0000 - 0xffff1000 ( 4 kB)
> fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
> vmalloc : 0xc8800000 - 0xff000000 ( 872 MB)
> lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)
> modules : 0xbf000000 - 0xc0000000 ( 16 MB)
> .text : 0xc0008000 - 0xc04650d4 (4469 kB)
> .init : 0xc0466000 - 0xc048a000 ( 144 kB)
> .data : 0xc048a000 - 0xc04c4420 ( 234 kB)
> .bss : 0xc04c4444 - 0xc09c66e4 (5129 kB)
> NR_IRQS:192
> sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 4294967286ms
> Console: colour dummy device 80x30
> Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
> ... MAX_LOCKDEP_SUBCLASSES: 8
> ... MAX_LOCK_DEPTH: 48
> ... MAX_LOCKDEP_KEYS: 8191
> ... CLASSHASH_SIZE: 4096
> ... MAX_LOCKDEP_ENTRIES: 16384
> ... MAX_LOCKDEP_CHAINS: 32768
> ... CHAINHASH_SIZE: 16384
> memory used by lock dependency info: 3695 kB
> per task-struct memory footprint: 1152 bytes
> ------------------------
> | Locking API testsuite:
> ----------------------------------------------------------------------------
> | spin |wlock |rlock |mutex | wsem | rsem |
> --------------------------------------------------------------------------
> A-A deadlock: ok | ok | ok | ok | ok | ok |
> A-B-B-A deadlock: ok | ok | ok | ok | ok | ok |
> A-B-B-C-C-A deadlock: ok | ok | ok | ok | ok | ok |
> A-B-C-A-B-C deadlock: ok | ok | ok | ok | ok | ok |
> A-B-B-C-C-D-D-A deadlock: ok | ok | ok | ok | ok | ok |
> A-B-C-D-B-D-D-A deadlock: ok | ok | ok | ok | ok | ok |
> A-B-C-D-B-C-D-A deadlock: ok | ok | ok | ok | ok | ok |
> double unlock: ok | ok | ok | ok | ok | ok |
> initialize held: ok | ok | ok | ok | ok | ok |
> bad unlock order: ok | ok | ok | ok | ok | ok |
> --------------------------------------------------------------------------
> recursive read-lock: | ok | | ok |
> recursive read-lock #2: | ok | | ok |
> mixed read-write-lock: | ok | | ok |
> mixed write-read-lock: | ok | | ok |
> --------------------------------------------------------------------------
> hard-irqs-on + irq-safe-A/12: ok | ok | ok |
> soft-irqs-on + irq-safe-A/12: ok | ok | ok |
> hard-irqs-on + irq-safe-A/21: ok | ok | ok |
> soft-irqs-on + irq-safe-A/21: ok | ok | ok |
> sirq-safe-A => hirqs-on/12: ok | ok | ok |
> sirq-safe-A => hirqs-on/21: ok | ok | ok |
> hard-safe-A + irqs-on/12: ok | ok | ok |
> soft-safe-A + irqs-on/12: ok | ok | ok |
> hard-safe-A + irqs-on/21: ok | ok | ok |
> soft-safe-A + irqs-on/21: ok | ok | ok |
> hard-safe-A + unsafe-B #1/123: ok | ok | ok |
> soft-safe-A + unsafe-B #1/123: ok | ok | ok |
> hard-safe-A + unsafe-B #1/132: ok | ok | ok |
> soft-safe-A + unsafe-B #1/132: ok | ok | ok |
> hard-safe-A + unsafe-B #1/213: ok | ok | ok |
> soft-safe-A + unsafe-B #1/213: ok | ok | ok |
> hard-safe-A + unsafe-B #1/231: ok | ok | ok |
> soft-safe-A + unsafe-B #1/231: ok | ok | ok |
> hard-safe-A + unsafe-B #1/312: ok | ok | ok |
> soft-safe-A + unsafe-B #1/312: ok | ok | ok |
> hard-safe-A + unsafe-B #1/321: ok | ok | ok |
> soft-safe-A + unsafe-B #1/321: ok | ok | ok |
> hard-safe-A + unsafe-B #2/123: ok | ok | ok |
> soft-safe-A + unsafe-B #2/123: ok | ok | ok |
> hard-safe-A + unsafe-B #2/132: ok | ok | ok |
> soft-safe-A + unsafe-B #2/132: ok | ok | ok |
> hard-safe-A + unsafe-B #2/213: ok | ok | ok |
> soft-safe-A + unsafe-B #2/213: ok | ok | ok |
> hard-safe-A + unsafe-B #2/231: ok | ok | ok |
> soft-safe-A + unsafe-B #2/231: ok | ok | ok |
> hard-safe-A + unsafe-B #2/312: ok | ok | ok |
> soft-safe-A + unsafe-B #2/312: ok | ok | ok |
> hard-safe-A + unsafe-B #2/321: ok | ok | ok |
> soft-safe-A + unsafe-B #2/321: ok | ok | ok |
> hard-irq lock-inversion/123: ok | ok | ok |
> soft-irq lock-inversion/123: ok | ok | ok |
> hard-irq lock-inversion/132: ok | ok | ok |
> soft-irq lock-inversion/132: ok | ok | ok |
> hard-irq lock-inversion/213: ok | ok | ok |
> soft-irq lock-inversion/213: ok | ok | ok |
> hard-irq lock-inversion/231: ok | ok | ok |
> soft-irq lock-inversion/231: ok | ok | ok |
> hard-irq lock-inversion/312: ok | ok | ok |
> soft-irq lock-inversion/312: ok | ok | ok |
> hard-irq lock-inversion/321: ok | ok | ok |
> soft-irq lock-inversion/321: ok | ok | ok |
> hard-irq read-recursion/123: ok |
> soft-irq read-recursion/123: ok |
> hard-irq read-recursion/132: ok |
> soft-irq read-recursion/132: ok |
> hard-irq read-recursion/213: ok |
> soft-irq read-recursion/213: ok |
> hard-irq read-recursion/231: ok |
> soft-irq read-recursion/231: ok |
> hard-irq read-recursion/312: ok |
> soft-irq read-recursion/312: ok |
> hard-irq read-recursion/321: ok |
> soft-irq read-recursion/321: ok |
> -------------------------------------------------------
> Good, all 218 testcases passed! |
> ---------------------------------
> Calibrating delay loop... 198.04 BogoMIPS (lpj=990208)
> pid_max: default: 32768 minimum: 301
> Mount-cache hash table entries: 512
> CPU: Testing write buffer coherency: ok
> Setting up static identity map for 0x2033ced8 - 0x2033cf30
> devtmpfs: initialized
> dummy:
> NET: Registered protocol family 16
> AT91: Power Management (with slow clock mode)
> AT91: Starting after power-restored wakeup
> bio: create slab <bio-0> at 0
> at_hdmac ffffec00.dma-controller: Atmel AHB DMA Controller ( cpy slave ), 8 chan
> nels
> at_hdmac ffffee00.dma-controller: Atmel AHB DMA Controller ( cpy slave ), 8 chan
> nels
> SCSI subsystem initialized
> usbcore: registered new interface driver usbfs
> usbcore: registered new interface driver hub
> usbcore: registered new device driver usb
> cfg80211: Calling CRDA to update world regulatory domain
> Switching to clocksource tcb_clksrc
> NET: Registered protocol family 2
> IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
> TCP established hash table entries: 4096 (order: 3, 32768 bytes)
> TCP bind hash table entries: 4096 (order: 5, 147456 bytes)
> TCP: Hash tables configured (established 4096 bind 4096)
> TCP: reno registered
> UDP hash table entries: 64 (order: 0, 5120 bytes)
> UDP-Lite hash table entries: 64 (order: 0, 5120 bytes)
> NET: Registered protocol family 1
> RPC: Registered named UNIX socket transport module.
> RPC: Registered udp transport module.
> RPC: Registered tcp transport module.
> RPC: Registered tcp NFSv4.1 backchannel transport module.
> NFS: Registering the id_resolver key type
> jffs2: version 2.2. (NAND) (SUMMARY) �© 2001-2006 Red Hat, Inc.
> msgmni has been set to 234
> Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
> io scheduler noop registered (default)
> fffff200.serial: ttyS0 at MMIO 0xfffff200 (irq = 1) is a ATMEL_SERIAL
> console [ttyS0] enabled
> f801c000.serial: ttyS1 at MMIO 0xf801c000 (irq = 5) is a ATMEL_SERIAL
> f8020000.serial: ttyS2 at MMIO 0xf8020000 (irq = 6) is a ATMEL_SERIAL
> f8028000.serial: ttyS4 at MMIO 0xf8028000 (irq = 8) is a ATMEL_SERIAL
> brd: module loaded
> loop: module loaded
> mtdoops: mtd device (mtddev=name/number) must be supplied
> atmel_nand: Use On Flash BBT
> atmel_nand 40000000.nand: No DMA support for NAND access.
> ONFI param page 0 valid
> ONFI flash detected
> NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron MT29F2G08AAD)
Here, when PMECC is really enabled, the driver should show following
message:
atmel_nand 40000000.nand: Initialize PMECC params, cap: 2, sector: 512
But your 3.4's log doesn't have it. If the dtb is right then maybe the
issue is caused in the driver?
Can you check your 3.4 kernel code, make sure the function
atmel_pmecc_nand_init_params() is called or not?
Best Regards,
Josh Wu
> Bad block table found at page 131008, version 0x01
> Bad block table found at page 130944, version 0x01
> nand_read_bbt: bad block at 0x000009380000
> 2 cmdlinepart partitions found on MTD device atmel_nand
> Creating 2 MTD partitions on "atmel_nand":
> 0x000000000000-0x000000800000 : "bootstrap/uboot/kernel"
> 0x000000800000-0x000010000000 : "rootfs"
> UBI: attaching mtd1 to ubi0
> UBI: physical eraseblock size: 131072 bytes (128 KiB)
> UBI: logical eraseblock size: 126976 bytes
> UBI: smallest flash I/O unit: 2048
> UBI: VID header offset: 2048 (aligned 2048)
> UBI: data offset: 4096
> UBI: max. sequence number: 4249
> UBI warning: print_rsvd_warning: cannot reserve enough PEBs for bad PEB handling
> , reserved 15, need 19
> UBI: attached mtd1 to ubi0
> UBI: MTD device name: "rootfs"
> UBI: MTD device size: 248 MiB
> UBI: number of good PEBs: 1979
> UBI: number of bad PEBs: 5
> 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: 1
> UBI: available PEBs: 0
> UBI: total number of reserved PEBs: 1979
> UBI: number of PEBs reserved for bad PEB handling: 15
> UBI: max/mean erase counter: 5/2
> UBI: image sequence number: 191777507
> UBI: background thread "ubi_bgt0d" started, PID 31
> UBI error: ubi_init: cannot attach mtd1
> tun: Universal TUN/TAP device driver, 1.6
> tun: (C) 1999-2004 Max Krasnyansky <maxk at qualcomm.com>
> macb f802c000.ethernet: (unregistered net_device): invalid hw address, using ran
> dom
> MACB_mii_bus: probed
> macb f802c000.ethernet: eth0: Cadence MACB at 0xf802c000 irq 24 (4a:15:f4:49:94:
> a4)
> macb f802c000.ethernet: eth0: attached PHY driver [Davicom DM9161A] (mii_bus:phy
> _addr=f802c000.etherne:00, irq=-1)
> PPP generic driver version 2.4.2
> NET: Registered protocol family 24
> usbcore: registered new interface driver asix
> usbcore: registered new interface driver cdc_ether
> usbcore: registered new interface driver cdc_eem
> usbcore: registered new interface driver net1080
> usbcore: registered new interface driver cdc_subset
> usbcore: registered new interface driver zaurus
> usbcore: registered new interface driver ipheth
> usbcore: registered new interface driver cdc_ncm
> ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
> atmel-ehci 700000.ehci: Atmel EHCI UHP HS
> atmel-ehci 700000.ehci: new USB bus registered, assigned bus number 1
> atmel-ehci 700000.ehci: irq 22, io mem 0x00700000
> atmel-ehci 700000.ehci: USB 2.0 started, EHCI 1.00
> usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
> usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
> usb usb1: Product: Atmel EHCI UHP HS
> usb usb1: Manufacturer: Linux 3.4.0 ehci_hcd
> usb usb1: SerialNumber: 700000.ehci
> hub 1-0:1.0: USB hub found
> hub 1-0:1.0: 3 ports detected
> ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
> at91_ohci 600000.ohci: AT91 OHCI
> at91_ohci 600000.ohci: new USB bus registered, assigned bus number 2
> at91_ohci 600000.ohci: irq 22, io mem 0x00600000
> usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
> usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
> usb usb2: Product: AT91 OHCI
> usb usb2: Manufacturer: Linux 3.4.0 ohci_hcd
> usb usb2: SerialNumber: at91
> hub 2-0:1.0: USB hub found
> hub 2-0:1.0: 2 ports detected
> usbcore: registered new interface driver cdc_acm
> cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
> Initializing USB Mass Storage driver...
> usbcore: registered new interface driver usb-storage
> USB Mass Storage support registered.
> usbcore: registered new interface driver libusual
> usbcore: registered new interface driver usbserial
> usbcore: registered new interface driver usbserial_generic
> USB Serial support registered for generic
> usbserial: USB Serial Driver core
> usbcore: registered new interface driver moto-modem
> USB Serial support registered for moto-modem
> usbcore: registered new interface driver opticon
> USB Serial support registered for opticon
> usbcore: registered new interface driver pl2303
> USB Serial support registered for pl2303
> usbcore: registered new interface driver qcserial
> USB Serial support registered for Qualcomm USB modem
> usbcore: registered new interface driver symbol
> USB Serial support registered for symbol
> i2c /dev entries driver
> usbcore: registered new interface driver usbhid
> usbhid: USB HID core driver
> nf_conntrack version 0.5.0 (1872 buckets, 7488 max)
> IPv4 over IPv4 tunneling driver
> ip_tables: (C) 2000-2006 Netfilter Core Team
> TCP: cubic registered
> NET: Registered protocol family 17
> lib80211: common routines for IEEE802.11 drivers
> Registering the dns_resolver key type
> drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
> UBIFS: recovery needed
> UBIFS: recovery completed
> UBIFS: mounted UBI device 0, volume 0, name "rootfs"
> UBIFS: file system size: 247476224 bytes (241676 KiB, 236 MiB, 1949 LEBs)
> UBIFS: journal size: 9023488 bytes (8812 KiB, 8 MiB, 72 LEBs)
> UBIFS: media format: w4/r0 (latest is w4/r0)
> UBIFS: default compressor: lzo
> UBIFS: reserved for root: 0 bytes (0 KiB)
> VFS: Mounted root (ubifs filesystem) on device 0:11.
> devtmpfs: mounted
> Freeing init memory: 144K
> INIT: version 2.86 booting
> Please wait: booting...
> Starting udev
> udev[62]: starting version 165
> Root filesystem already rw, not remounting
> Caching udev devnodes
> Populating dev cache
> logger: mount: mount point /proc/bus/usb does not exist
> ALSA: Restoring mixer settings...
> /usr/sbin/alsactl: load_state:1625: No soundcards found...
> Configuring network interfaces... eth0 no wireless extensions.
>
> udhcpc (v1.18.3) started
> run-parts: /etc/udhcpc.d/00avahi-autoipd exited with code 1
> Sending discover...
> Sending discover...
> Sending discover...
> netlink: 12 bytes leftover after parsing attributes.
> netlink: 12 bytes leftover after parsing attributes.
> netlink: 12 bytes leftover after parsing attributes.
> No lease, failing
> done.
> Starting portmap daemon: portmap.
> net.ipv4.conf.default.rp_filter = 1
> net.ipv4.conf.all.rp_filter = 1
> kernel.panic = 10
> hwclock: can't open '/dev/misc/rtc': No such file or directory
> Mon Nov 5 09:47:00 EST 2012
> hwclock: can't open '/dev/misc/rtc': No such file or directory
> INIT: Entering runlevel: 5
> Starting system message bus: dbus.
> Starting Dropbear SSH server: dropbear.
> starting Busybox HTTP Daemon: httpd... done.
> Starting Vixie-cron.
> Starting ntpd: done
> Starting syslogd/klogd: done
> * Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon
> ...done.
>
>>> I noticed over at the linux-at91 fork that you had applied the PMECC
>>> support on the 3.4.x_pmecc_dt_9x5 branch a few months ago. From
>>> browsing the mainline I didn't see some of your changes from that
>>> branch in the mainline. Are there some changes from the linux-at91
>> fork that are still scheduled for mainlining?
>> yes, this patch is not push to mainline yet. Currently the only concern
>> is we are think about the PMECC error correct bits need to adjust by
>> ONFI parameters that read from nand flash.
>> But it is not decide yet. if no exception, this patch will push to
>> mainline soon.
>>
>> Best Regards,
>> Josh Wu
>>
>>> If it helps, here is the boot log when I tried to boot using a 3.7-
>> rc8
>>> kernel and DT.
>>>
>>> Thanks,
>>> Bryan
>>>
>>> Uncompressing Linux... done, booting the kernel.
>>> [ 0.000000] Booting Linux on physical CPU 0
>>> [ 0.000000] Linux version 3.7.0-rc8-armv5-x0.16 (xxxx at xxxx) (gcc
>> versio
>>> n 4.6.2 20121016 (release) [ARM/embedded-4_6-branch revision 192487]
>>> (GNU Tools for ARM Embedded Processors) ) #1 Wed Dec 5 16:11:30 EST
>> 2012
>>> [ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ),
>> cr=00053177
>>> [ 0.000000] CPU: VIVT data cache, VIVT instruction cache
>>> [ 0.000000] Machine: Atmel AT91SAM (Device Tree), model: Atmel
>> AT91SAM9G25-EK
>>> [ 0.000000] Memory policy: ECC disabled, Data cache writeback
>>> [ 0.000000] AT91: Detected soc type: at91sam9x5
>>> [ 0.000000] AT91: Detected soc subtype: at91sam9g25
>>> [ 0.000000] AT91: sram at 0x300000 of 0x8000 mapped at 0xfef70000
>>> [ 0.000000] Clocks: CPU 400 MHz, master 133 MHz, main 12.000 MHz
>>> [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on.
>> Total pag
>>> es: 32512
>>> [ 0.000000] Kernel command line: mem=128M console=ttyS0,115200
>> mtdparts=atmel
>>> _nand:8M(bootstrap/uboot/kernel)ro,-(rootfs) root=/dev/mtdblock1 rw
>>> rootfstype=u bifs ubi.mtd=1 root=ubi0:rootfs
>>> [ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
>>> [ 0.000000] Dentry cache hash table entries: 16384 (order: 4,
>> 65536 bytes)
>>> [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768
>> bytes)
>>> [ 0.000000] Memory: 128MB = 128MB total
>>> [ 0.000000] Memory: 124276k/124276k available, 6796k reserved, 0K
>> highmem
>>> [ 0.000000] Virtual kernel memory layout:
>>> [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
>>> [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
>>> [ 0.000000] vmalloc : 0xc8800000 - 0xff000000 ( 872 MB)
>>> [ 0.000000] lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)
>>> [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
>>> [ 0.000000] .text : 0xc0008000 - 0xc04b8630 (4802 kB)
>>> [ 0.000000] .init : 0xc04b9000 - 0xc04e45c4 ( 174 kB)
>>> [ 0.000000] .data : 0xc04e6000 - 0xc0516ce0 ( 196 kB)
>>> [ 0.000000] .bss : 0xc0516d04 - 0xc05760bc ( 381 kB)
>>> [ 0.000000] NR_IRQS:16 nr_irqs:16 16
>>> [ 0.000000] sched_clock: 32 bits at 256 Hz, resolution 3906250ns,
>> wraps every
>>> 3892314108ms
>>> [ 0.000000] Console: colour dummy device 80x30
>>> [ 0.035156] Calibrating delay loop... 199.80 BogoMIPS (lpj=389120)
>>> [ 0.035156] pid_max: default: 32768 minimum: 301
>>> [ 0.035156] Mount-cache hash table entries: 512
>>> [ 0.039062] CPU: Testing write buffer coherency: ok
>>> [ 0.039062] Setting up static identity map for 0x20371d48 -
>> 0x20371da0
>>> [ 0.039062] devtmpfs: initialized
>>> [ 0.042968] NET: Registered protocol family 16
>>> [ 0.042968] DMA: preallocated 256 KiB pool for atomic coherent
>> allocations
>>> [ 0.070312] No ATAGs?
>>> [ 0.070312] AT91: Power Management
>>> [ 0.070312] AT91: Starting after power-restored wakeup
>>> [ 0.121093] bio: create slab <bio-0> at 0
>>> [ 0.125000] SCSI subsystem initialized
>>> [ 0.128906] usbcore: registered new interface driver usbfs
>>> [ 0.128906] usbcore: registered new interface driver hub
>>> [ 0.128906] usbcore: registered new device driver usb
>>> [ 0.132812] at91_i2c f8010000.i2c: AT91 i2c bus driver.
>>> [ 0.132812] at91_i2c f8014000.i2c: AT91 i2c bus driver.
>>> [ 0.136718] at91_i2c f8018000.i2c: AT91 i2c bus driver.
>>> [ 0.140625] Switching to clocksource tcb_clksrc
>>> [ 0.195312] NET: Registered protocol family 2
>>> [ 0.199218] TCP established hash table entries: 4096 (order: 3,
>> 32768 bytes)
>>> [ 0.199218] TCP bind hash table entries: 4096 (order: 2, 16384
>> bytes)
>>> [ 0.199218] TCP: Hash tables configured (established 4096 bind
>> 4096)
>>> [ 0.199218] TCP: reno registered
>>> [ 0.199218] UDP hash table entries: 256 (order: 0, 4096 bytes)
>>> [ 0.199218] UDP-Lite hash table entries: 256 (order: 0, 4096
>> bytes)
>>> [ 0.199218] NET: Registered protocol family 1
>>> [ 0.199218] RPC: Registered named UNIX socket transport module.
>>> [ 0.199218] RPC: Registered udp transport module.
>>> [ 0.199218] RPC: Registered tcp transport module.
>>> [ 0.199218] RPC: Registered tcp NFSv4.1 backchannel transport
>> module.
>>> [ 0.207031] NFS: Registering the id_resolver key type
>>> [ 0.207031] Key type id_resolver registered
>>> [ 0.207031] Key type id_legacy registered
>>> [ 0.207031] jffs2: version 2.2. (NAND) �© 2001-2006 Red Hat,
>> Inc.
>>> [ 0.207031] msgmni has been set to 242
>>> [ 0.210937] io scheduler noop registered (default)
>>> [ 0.218750] fffff200.serial: ttyS0 at MMIO 0xfffff200 (irq = 18)
>> is a ATMEL_S
>>> ERIAL
>>> [ 0.609375] console [ttyS0] enabled
>>> [ 0.613281] f801c000.serial: ttyS1 at MMIO 0xf801c000 (irq = 22)
>> is a ATMEL_S
>>> ERIAL
>>> [ 0.632812] brd: module loaded
>>> [ 0.652343] loop: module loaded
>>> [ 0.667968] atmel_nand: Use On Flash BBT
>>> [ 0.671875] atmel_nand 40000000.nand: No DMA support for NAND
>> access.
>>> [ 0.675781] ONFI param page 0 valid
>>> [ 0.679687] ONFI flash detected
>>> [ 0.683593] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda
>> (Micron MT29F2G
>>> 08AAD), page size: 2048, OOB size: 64
>>> [ 0.695312] atmel_nand 40000000.nand: Initialize PMECC params,
>> cap: 2, sector
>>> : 512
>>> [ 0.703125] Bad block table found at page 131008, version 0x01
>>> [ 0.707031] Bad block table found at page 130944, version 0x01
>>> [ 0.714843] nand_read_bbt: bad block at 0x000009380000
>>> [ 0.718750] 2 cmdlinepart partitions found on MTD device
>> atmel_nand
>>> [ 0.726562] Creating 2 MTD partitions on "atmel_nand":
>>> [ 0.730468] 0x000000000000-0x000000800000 :
>> "bootstrap/uboot/kernel"
>>> [ 0.742187] 0x000000800000-0x000010000000 : "rootfs"
>>> [ 0.757812] macb f802c000.ethernet (unregistered net_device):
>> invalid hw addr
>>> ess, using random
>>> [ 0.773437] libphy: MACB_mii_bus: probed
>>> [ 0.777343] macb f802c000.ethernet eth0: Cadence MACB at
>> 0xf802c000 irq 23 (c
>>> a:2c:e6:c3:59:8f)
>>> [ 0.785156] macb f802c000.ethernet eth0: attached PHY driver
>> [Davicom DM9161A
>>> ] (mii_bus:phy_addr=f802c000.etherne:00, irq=-1)
>>> [ 0.796875] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI)
>> Driver
>>> [ 0.804687] atmel-ehci 700000.ehci: Atmel EHCI UHP HS
>>> [ 0.808593] atmel-ehci 700000.ehci: new USB bus registered,
>> assigned bus numb
>>> er 1
>>> [ 0.816406] atmel-ehci 700000.ehci: irq 28, io mem 0x00700000
>>> [ 0.835937] atmel-ehci 700000.ehci: USB 2.0 started, EHCI 1.00
>>> [ 0.839843] usb usb1: New USB device found, idVendor=1d6b,
>> idProduct=0002
>>> [ 0.847656] usb usb1: New USB device strings: Mfr=3, Product=2,
>> SerialNumber=
>>> 1
>>> [ 0.855468] usb usb1: Product: Atmel EHCI UHP HS
>>> [ 0.859375] usb usb1: Manufacturer: Linux 3.7.0-rc8-armv5-x0.16
>> ehci_hcd
>>> [ 0.867187] usb usb1: SerialNumber: 700000.ehci
>>> [ 0.871093] hub 1-0:1.0: USB hub found
>>> [ 0.875000] hub 1-0:1.0: 3 ports detected
>>> [ 0.878906] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
>>> [ 0.886718] at91_ohci 600000.ohci: AT91 OHCI
>>> [ 0.890625] at91_ohci 600000.ohci: new USB bus registered,
>> assigned bus numbe
>>> r 2
>>> [ 0.898437] at91_ohci 600000.ohci: irq 28, io mem 0x00600000
>>> [ 0.964843] usb usb2: New USB device found, idVendor=1d6b,
>> idProduct=0001
>>> [ 0.968750] usb usb2: New USB device strings: Mfr=3, Product=2,
>> SerialNumber=
>>> 1
>>> [ 0.976562] usb usb2: Product: AT91 OHCI
>>> [ 0.980468] usb usb2: Manufacturer: Linux 3.7.0-rc8-armv5-x0.16
>> ohci_hcd
>>> [ 0.988281] usb usb2: SerialNumber: at91
>>> [ 0.992187] hub 2-0:1.0: USB hub found
>>> [ 0.996093] hub 2-0:1.0: 2 ports detected
>>> [ 1.003906] usbcore: registered new interface driver cdc_acm
>>> [ 1.007812] cdc_acm: USB Abstract Control Model driver for USB
>> modems and ISD
>>> N adapters
>>> [ 1.019531] usbcore: registered new interface driver uas
>>> [ 1.023437] Initializing USB Mass Storage driver...
>>> [ 1.027343] usbcore: registered new interface driver usb-storage
>>> [ 1.035156] USB Mass Storage support registered.
>>> [ 1.039062] usbcore: registered new interface driver ums-alauda
>>> [ 1.046875] usbcore: registered new interface driver ums-cypress
>>> [ 1.054687] usbcore: registered new interface driver ums-datafab
>>> [ 1.058593] usbcore: registered new interface driver ums_eneub6250
>>> [ 1.066406] usbcore: registered new interface driver ums-freecom
>>> [ 1.074218] usbcore: registered new interface driver ums-isd200
>>> [ 1.078125] usbcore: registered new interface driver ums-jumpshot
>>> [ 1.085937] usbcore: registered new interface driver ums-karma
>>> [ 1.093750] usbcore: registered new interface driver ums-onetouch
>>> [ 1.097656] usbcore: registered new interface driver ums-realtek
>>> [ 1.105468] usbcore: registered new interface driver ums-sddr09
>>> [ 1.113281] usbcore: registered new interface driver ums-sddr55
>>> [ 1.117187] usbcore: registered new interface driver ums-usbat
>>> [ 1.125000] usbcore: registered new interface driver usbserial
>>> [ 1.132812] usbcore: registered new interface driver
>> usbserial_generic
>>> [ 1.140625] usbserial: USB Serial support registered for generic
>>> [ 1.144531] usbcore: registered new interface driver ftdi_sio
>>> [ 1.152343] usbserial: USB Serial support registered for FTDI USB
>> Serial Devi
>>> ce
>>> [ 1.160156] usbcore: registered new interface driver pl2303
>>> [ 1.167968] usbserial: USB Serial support registered for pl2303
>>> [ 1.171875] mousedev: PS/2 mouse device common for all mice
>>> [ 1.179687] i2c /dev entries driver
>>> [ 1.191406] usbcore: registered new interface driver usbhid
>>> [ 1.199218] usbhid: USB HID core driver
>>> [ 1.207031] usb 1-2: new high-speed USB device number 2 using
>> atmel-ehci
>>> [ 1.214843] TCP: cubic registered
>>> [ 1.218750] NET: Registered protocol family 10
>>> [ 1.222656] sit: IPv6 over IPv4 tunneling driver
>>> [ 1.230468] NET: Registered protocol family 17
>>> [ 1.234375] Key type dns_resolver registered
>>> [ 1.246093] UBI: attaching mtd1 to ubi0
>>> [ 1.253906] atmel_nand 40000000.nand: PMECC: Too many errors
>>> [ 1.261718] UBI warning: ubi_io_read: error -5 while reading 64
>> bytes from PE
>>> B 10:0, read only 0 bytes, retry
>>> [ 1.269531] atmel_nand 40000000.nand: PMECC: Too many errors
>>> [ 1.277343] UBI warning: ubi_io_read: error -5 while reading 64
>> bytes from PE
>>> B 10:0, read only 0 bytes, retry
>>> [ 1.285156] atmel_nand 40000000.nand: PMECC: Too many errors
>>> [ 1.292968] UBI warning: ubi_io_read: error -5 while reading 64
>> bytes from PE
>>> B 10:0, read only 0 bytes, retry
>>> [ 1.304687] atmel_nand 40000000.nand: PMECC: Too many errors
>>> [ 1.308593] UBI error: ubi_io_read: error -5 while reading 64
>> bytes from PEB
>>> 10:0, read 0 bytes
>>> [ 1.316406] [<c000d2bc>] (unwind_backtrace+0x0/0xe0) from
>> [<c0243a10>] (ubi_i
>>> o_read+0x1d4/0x2a4)
>>> [ 1.328125] [<c0243a10>] (ubi_io_read+0x1d4/0x2a4) from
>> [<c0243d20>] (ubi_io_
>>> read_ec_hdr+0x68/0x214)
>>> [ 1.335937] [<c0243d20>] (ubi_io_read_ec_hdr+0x68/0x214) from
>> [<c024804c>] (u
>>> bi_attach+0x104/0x13e4)
>>> [ 1.343750] [<c024804c>] (ubi_attach+0x104/0x13e4) from
>> [<c023e514>] (ubi_att
>>> ach_mtd_dev+0x5a4/0xb94)
>>> [ 1.355468] [<c023e514>] (ubi_attach_mtd_dev+0x5a4/0xb94) from
>> [<c04d09dc>] (
>>> ubi_init+0x1d8/0x2d8)
>>> [ 1.363281] [<c04d09dc>] (ubi_init+0x1d8/0x2d8) from [<c0008860>]
>> (do_one_ini
>>> tcall+0x90/0x168)
>>> [ 1.371093] [<c0008860>] (do_one_initcall+0x90/0x168) from
>> [<c03686a4>] (kern
>>> el_init+0xe8/0x2a0)
>>> [ 1.378906] [<c03686a4>] (kernel_init+0xe8/0x2a0) from
>> [<c00093f0>] (ret_from
>>> _fork+0x14/0x24)
>>> [ 1.386718] UBI error: ubi_attach_mtd_dev: failed to attach mtd1,
>> error -5
>>> [ 1.394531] UBI error: ubi_init: cannot attach mtd1
>>> [ 1.402343] drivers/rtc/hctosys.c: unable to open rtc device
>> (rtc0)
>>> [ 1.410156] UBIFS error (pid 1): ubifs_mount: cannot open
>> "ubi0:rootfs", erro
>>> r -19
>>> [ 1.417968] VFS: Cannot open root device "ubi0:rootfs" or unknown-
>> block(0,0):
>>> error -19
>>> [ 1.425781] Please append a correct "root=" boot option; here are
>> the availab
>>> le partitions:
>>> [ 1.433593] 1f00 8192 mtdblock0 (driver?)
>>> [ 1.437500] 1f01 253952 mtdblock1 (driver?)
>>> [ 1.441406] Kernel panic - not syncing: VFS: Unable to mount root
>> fs on unkno
>>> wn-block(0,0)
>>>
>>>
More information about the linux-arm-kernel
mailing list