[Letux-kernel] ECC

H. Nikolaus Schaller hns at goldelico.com
Mon Mar 20 10:00:40 CET 2017


> Am 20.03.2017 um 09:56 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> 
> Hi Marek,
> 
>> Am 20.03.2017 um 08:27 schrieb Belisko Marek <marek.belisko at gmail.com>:
>> 
>> Hi Nikolaus,
>> 
>> On Mon, Mar 20, 2017 at 8:02 AM, H. Nikolaus Schaller <hns at goldelico.com> wrote:
>>> Hi Marek,
>>> 
>>>> Am 19.03.2017 um 21:54 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>>>>>> Strange. Does U-Boot or the kernel overwrite this setting?
>>>>> Look in dts at line 1116 there is overwritten ecc to sw.. With this
>>>>> change I can read fw_printenv content ;)
>>>> 
>>>> Ah, great finding!
>>> 
>>> I have tested and it works! Kernel version Letux-4.10.4 already includes
>>> a patch.
> 
> http://download.goldelico.com/letux-kernel/letux-4.10.4/
> http://git.goldelico.com/?p=gta04-kernel.git;a=shortlog;h=letux-4.10.4
> 
>>> 
>>> I can also flash the kernel and rootfs from user-space and the GTA04A4
>>> can boot to LXDE from NAND.
>>> 
>>> There are only two remaining issues for perfection:
>>> a) U-Boot complains a lot about a missing MMC and adds 20 seconds to boot time
>> Do you have some log from that issue? I didn't see it on my device
>> (tested with latest u-boot).
> 
> Yes here:
> 
> 
> U-Boot SPL 2016.11-00234-g095e2de-dirty (Mar 17 2017 - 17:42:26)
> Trying to boot from NAND
> spl: payload image: U-Boot 2016.11-00234-g095e2de-di load addr: 0x800fffc0 size: 407904
> Jumping to U-Boot
> loaded - jumping to U-Boot...
> 
> U-Boot 2016.11-00234-g095e2de-dirty (Mar 17 2017 - 17:42:26 +0100)
> 
> OMAP3630/3730-GP ES1.2, CPU-OPP2, L3-200MHz, Max CPU Clock 1 Ghz
> GTA04 + LPDDR/NAND
> I2C:   ready
> DRAM:  512 MiB
> NAND:  512 MiB
> MMC:   OMAP SD/MMC: 0
> OMAP die ID: 47b200029ff800000163810c17020004
> Found GTA04A4
> Device Tree: omap3-gta04a4.dtb
> Net:   usb_ether
> Error: usb_ether address not set.
> 
> Hit any key to stop autoboot:  0 
> Setting bus to 0
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> 
> NAND read: device 0 offset 0x1b0000, size 0x40000
> 262144 bytes read: OK
> did load bootscript from nand
> Running bootscript ...
> ## Executing script at 81800000
> *** if you boot from NAND don-t worry about error messages when U-Boot tries to read a non-existing MMC ***
> Setting bus to 0
> did init LED driver for TCA6507
> *** initializing LCM ***
> board_video_init() for JBT6K74-AS / TD028TTEC1
> did backlight_init() on GPIO_57
> did panel_reg_init()
> dss panel config
> dss enable
> did board_video_init()
> did jbt_init_regs()
> lcm backlight level set to 255 (0..255)
> *** loading splash from MMC ***
> Setting bus to 0
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> 
> NAND read: device 0 offset 0x1c0000, size 0x40000
> 262144 bytes read: OK
> Uncompressed size: 614400 = 0x96000
> *** booting Linux ***
> Setting bus to 0
> Card did not respond to voltage select!
> did set bootargs for nand
> trying partitions 1 2 3 4
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **
> fallback to NAND kernel
> 
> NAND read: device 0 offset 0x280000, size 0x5c0000
> 6029312 bytes read: OK
> NAND kernel found
> 
> NAND read: device 0 offset 0x840000, size 0x40000
> 262144 bytes read: OK
> NAND DTB found
> lcm state set to deep-standby
> display power off
> ## Booting kernel from Legacy Image at 82000000 ...
>   Image Name:   Linux-4.10.4-letux+
>   Image Type:   ARM Linux Kernel Image (uncompressed)
>   Data Size:    4760096 Bytes = 4.5 MiB
>   Load Address: 80008000
>   Entry Point:  80008000
>   Verifying Checksum ... OK
> ## Flattened Device Tree blob at 81c00000
>   Booting using the fdt blob at 0x81c00000
>   Loading Kernel Image ... OK
>   Using Device Tree in place at 81c00000, end 81c151e3
> 
> Starting kernel ...
> 
> [    0.000000] Booting Linux on physical CPU 0x0
> [    0.000000] Linux version 4.10.4-letux+ (hns at iMac.local) (gcc version 4.9.2 (GCC) ) #888 SMP PREEMPT Mon Mar 20 06:41:32 CET 2017
> [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
> [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
> [    0.000000] OF: fdt:Machine model: Goldelico GTA04A4/Letux 2804
> [    0.000000] debug: ignoring loglevel setting.
> [    0.000000] cma: Reserved 16 MiB at 0x9e800000
> [    0.000000] Memory policy: Data cache writeback
> [    0.000000] On node 0 totalpages: 130560
> [    0.000000] free_area_init_node: node 0, pgdat c0ca3f80, node_mem_map df9f1000
> [    0.000000]   Normal zone: 1024 pages used for memmap
> [    0.000000]   Normal zone: 0 pages reserved
> [    0.000000]   Normal zone: 130560 pages, LIFO batch:31
> [    0.000000] CPU: All CPU(s) started in SVC mode.
> [    0.000000] OMAP3630 ES1.2 (l2cache iva sgx neon isp 192mhz_clk)
> [    0.000000] percpu: Embedded 15 pages/cpu @df996000 s31680 r8192 d21568 u61440
> [    0.000000] pcpu-alloc: s31680 r8192 d21568 u61440 alloc=15*4096
> [    0.000000] pcpu-alloc: [0] 0 
> [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129536
> [    0.000000] Kernel command line: console=ttyO2,115200n8 mpurate=800 mux=GTA04A3+ vram=12M omapfb.vram=0:8M,1:4M omapfb.mode=dvi:640x480MR-16 at 60 omapfb.debug=y omapdss.def_disp=lcd ubi.mtd=4 root=ubi0:gta04-rootfs rootfstype=ubifs console=ttyO2,115200n8 vram=12M omapfb.vram=0:8M,1:4M omapfb.rotate_type=0 omapdss.def_disp=lcd rootwait twl4030_charger.allow_usb=1 musb_hdrc.preserve_vbus=1 log_buf_len=8M ignore_loglevel earlyprintk
> [    0.000000] log_buf_len: 8388608 bytes
> [    0.000000] early log buf free: 63824(97%)
> [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
> [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
> [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
> [    0.000000] Memory: 472664K/522240K available (7168K kernel code, 679K rwdata, 2204K rodata, 1024K init, 8060K bss, 33192K reserved, 16384K cma-reserved, 0K highmem)
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
> [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
> [    0.000000]     vmalloc : 0xe0800000 - 0xff800000   ( 496 MB)
> [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
> [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
> [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
> [    0.000000]       .text : 0xc0008000 - 0xc0800000   (8160 kB)
> [    0.000000]       .init : 0xc0b00000 - 0xc0c00000   (1024 kB)
> [    0.000000]       .data : 0xc0c00000 - 0xc0ca9ef8   ( 680 kB)
> [    0.000000]        .bss : 0xc0ca9ef8 - 0xc1488f1c   (8061 kB)
> [    0.000000] Running RCU self tests
> [    0.000000] Preemptible hierarchical RCU implementation.
> [    0.000000]  RCU lockdep checking is enabled.
> [    0.000000]  Build-time adjustment of leaf fanout to 32.
> [    0.000000]  RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1.
> [    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=1
> [    0.000000] NR_IRQS:16 nr_irqs:16 16
> [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts
> [    0.000000] Clocking rate (Crystal/Core/MPU): 26.0/400/600 MHz
> [    0.000000] OMAP clockevent source: timer1 at 32768 Hz
> [    0.000000] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
> [    0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 65535999984741ns
> [    0.000030] OMAP clocksource: 32k_counter at 32768 Hz
> [    0.002136] Console: colour dummy device 80x30
> [    0.002166] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
> [    0.002197] ... MAX_LOCKDEP_SUBCLASSES:  8
> [    0.002197] ... MAX_LOCK_DEPTH:          48
> [    0.002227] ... MAX_LOCKDEP_KEYS:        8191
> [    0.002227] ... CLASSHASH_SIZE:          4096
> [    0.002258] ... MAX_LOCKDEP_ENTRIES:     32768
> [    0.002258] ... MAX_LOCKDEP_CHAINS:      65536
> [    0.002258] ... CHAINHASH_SIZE:          32768
> [    0.002288]  memory used by lock dependency info: 5167 kB
> [    0.002288]  per task-struct memory footprint: 1536 bytes
> [    0.002349] Calibrating delay loop... 594.73 BogoMIPS (lpj=2973696)
> [    0.105224] pid_max: default: 32768 minimum: 301
> [    0.105743] Security Framework initialized
> [    0.105926] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
> [    0.105957] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
> [    0.111175] CPU: Testing write buffer coherency: ok
> [    0.114074] CPU0: thread -1, cpu 0, socket -1, mpidr 0
> [    0.135406] Setting up static identity map for 0x80100000 - 0x80100058
> [    0.205139] smp: Bringing up secondary CPUs ...
> [    0.205169] smp: Brought up 1 node, 1 CPU
> [    0.205200] SMP: Total of 1 processors activated (594.73 BogoMIPS).
> [    0.205200] CPU: All CPU(s) started in SVC mode.
> [    0.211151] devtmpfs: initialized
> [    0.375793] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
> [    0.415435] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
> [    0.415527] futex hash table entries: 256 (order: 2, 16384 bytes)
> [    0.418792] pinctrl core: initialized pinctrl subsystem
> [    0.431915] NET: Registered protocol family 16
> [    0.445526] DMA: preallocated 256 KiB pool for atomic coherent allocations
> [    0.568023] omap_hwmod: mcbsp2_sidetone using broken dt data from mcbsp
> [    0.571472] omap_hwmod: mcbsp3_sidetone using broken dt data from mcbsp
> [    0.761138] Reprogramming SDRC clock to 400000000 Hz
> [    0.809692] OMAP GPIO hardware version 2.5
> [    0.959197] omap-gpmc 6e000000.gpmc: GPMC revision 5.0
> [    0.959472] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
> [    1.024414] No ATAGs?
> [    1.024444] hw-breakpoint: debug architecture 0x4 unsupported.
> [    1.027313] omap4_sram_init:Unable to allocate sram needed to handle errata I688
> [    1.027343] omap4_sram_init:Unable to get sram pool needed to handle errata I688
> [    1.029663] OMAP DMA hardware revision 5.0
> [    1.378906] omap-dma-engine 48056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported)
> [    1.400817] omap-iommu 480bd400.mmu: 480bd400.mmu registered
> [    1.410827] SCSI subsystem initialized
> [    1.415466] libata version 3.00 loaded.
> [    1.420410] usbcore: registered new interface driver usbfs
> [    1.423492] usbcore: registered new interface driver hub
> [    1.424987] usbcore: registered new device driver usb
> [    1.426452] hsusb2_phy supply vcc not found, using dummy regulator
> [    1.427124] usb_add_phy_dev nop-xceiv
> [    1.438171] omap_i2c 48070000.i2c: bus 0 rev4.4 at 2600 kHz
> [    1.454040] omap_i2c 48072000.i2c: bus 1 rev4.4 at 400 kHz
> [    1.457550] omap_i2c 48060000.i2c: bus 2 rev4.4 at 100 kHz
> [    1.462310] Advanced Linux Sound Architecture Driver Initialized.
> [    1.485412] clocksource: Switched to clocksource 32k_counter
> [    1.710571] VFS: Disk quotas dquot_6.6.0
> [    1.710815] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
> [    1.833374] NET: Registered protocol family 2
> [    1.839355] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
> [    1.839508] TCP bind hash table entries: 4096 (order: 5, 147456 bytes)
> [    1.841766] TCP: Hash tables configured (established 4096 bind 4096)
> [    1.842071] UDP hash table entries: 256 (order: 2, 20480 bytes)
> [    1.842437] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes)
> [    1.843872] NET: Registered protocol family 1
> [    1.856964] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
> [    1.875976] audit: initializing netlink subsys (disabled)
> [    1.879272] audit: type=2000 audit(1.870:1): initialized
> [    1.898498] workingset: timestamp_bits=30 max_order=17 bucket_order=0
> [    1.911987] squashfs: version 4.0 (2009/01/31) Phillip Lougher
> [    1.928436] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
> [    1.928649] io scheduler noop registered
> [    1.928680] io scheduler deadline registered
> [    1.928771] io scheduler cfq registered (default)
> [    1.939453] pinctrl-single 48002030.pinmux: 284 pins at pa fa002030 size 568
> [    1.940521] pinctrl-single 48002a00.pinmux: 46 pins at pa fa002a00 size 92
> [    1.942443] pinctrl-single 480025a0.pinmux: 46 pins at pa fa0025a0 size 92
> [    1.942962] pinctrl-single 480022d8.pinmux: please update dts to use #pinctrl-cells = <2>
> [    1.943725] pinctrl-single 480022d8.pinmux: initialized with no interrupts
> [    1.943756] pinctrl-single 480022d8.pinmux: 4 pins at pa fa0022d8 size 4
> [    1.944122] pinctrl-single 48002274.pinmux: please update dts to use #pinctrl-cells = <2>
> [    1.944793] pinctrl-single 48002274.pinmux: initialized with no interrupts
> [    1.944824] pinctrl-single 48002274.pinmux: 4 pins at pa fa002274 size 4
> [    1.972778] DTR_gpio -2 inverted 0
> [    1.972778] DTR_gpio -22 inverted 0
> [    1.972839] omap_uart 4806a000.serial: no wakeirq for uart0
> [    1.975219] 4806a000.serial: ttyO0 at MMIO 0x4806a000 (irq = 88, base_baud = 3000000) is a OMAP UART0
> [    1.980102] DTR_gpio -2 inverted 0
> [    1.980133] DTR_gpio -22 inverted 0
> [    1.980163] omap_uart 4806c000.serial: no wakeirq for uart1
> [    1.980804] 4806c000.serial: ttyO1 at MMIO 0x4806c000 (irq = 89, base_baud = 3000000) is a OMAP UART1
> [    1.983917] DTR_gpio 21 inverted 0
> [    1.984069] DTR_gpio 21 inverted 0
> [    1.984100] omap_uart 49020000.serial: no wakeirq for uart2
> [    1.984466] 49020000.serial: ttyO2 at MMIO 0x49020000 (irq = 90, base_baud = 3000000) is a OMAP UART2
> [    2.618286] random: fast init done
> [    2.903076] console [ttyO2] enabled
> [    2.909667] DTR_gpio -2 inverted 0
> [    2.913238] DTR_gpio -22 inverted 0
> [    2.917572] omap_uart 49042000.serial: no wakeirq for uart3
> [    2.924072] 49042000.serial: ttyO3 at MMIO 0x49042000 (irq = 96, base_baud = 3000000) is a OMAP UART3
> [    3.197723] brd: module loaded
> [    3.334442] loop: module loaded
> [    3.387481] twl 0-0048: PIH (irq 23) chaining IRQs 338..346
> [    3.394012] twl 0-0048: power (irq 343) chaining IRQs 346..353
> [    3.425079] VAUX3: Bringing 2800000uV into 2500000-2500000uV
> [    3.481597] VMMC2: Bringing 2600000uV into 1800000-1800000uV
> [    3.488861] VMMC2: failed to apply 1800000-1800000uV constraint(-22)
> [    3.496185] twl4030_reg 48070000.i2c:twl at 48:regulator-vmmc2: can't register VMMC2, -22
> [    3.504669] twl4030_reg: probe of 48070000.i2c:twl at 48:regulator-vmmc2 failed with error -22
> [    3.539550] VSIM: Bringing 1800000uV into 2800000-2800000uV
> [    3.609863] mtdoops: mtd device (mtddev=name/number) must be supplied
> [    3.619476] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xbc
> [    3.626922] nand: Micron MT29F4G16ABBDA3W
> [    3.631164] nand: 512 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
> [    3.639587] nand: using OMAP_ECC_HAM1_CODE_HW
> [    3.644195] nand: WARNING: 30000000.nand: the ECC used on your system is too weak compared to the one required by the NAND chip
> [    3.656707] 6 ofpart partitions found on MTD device 30000000.nand
> [    3.663116] Creating 6 MTD partitions on "30000000.nand":
> [    3.668975] 0x000000000000-0x000000080000 : "X-Loader"
> [    3.699157] 0x000000080000-0x000000240000 : "U-Boot"
> [    3.726440] 0x000000240000-0x000000280000 : "U-Boot Env"
> [    3.751403] 0x000000280000-0x000000880000 : "Kernel"
> [    3.782775] 0x000000880000-0x000020000000 : "File System"
> 
> These messages take approx. 0.5 seconds each:
> 
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> Card did not respond to voltage select!
> ** Bad device mmc 0 **

I should mention that this happens only when booting from NAND with no µSD inserted.
Of course, detecting an error is ok, but it should not repeat and delay the device.

> 
>>> b) our Letux LXDE is still too big for NAND...
>> Hmm maybe can be shrink to feasible amount so it will boot from NAND?
>> Not sure if it's possible though.
> 
> Well, the flash-nand script already tries to shrink a lot but it does not suffice :(
> 
> BR,
> Nikolaus
> 
> _______________________________________________
> http://projects.goldelico.com/p/gta04-kernel/
> Letux-kernel mailing list
> Letux-kernel at openphoenux.org
> http://lists.goldelico.com/mailman/listinfo.cgi/letux-kernel



More information about the Letux-kernel mailing list