Am 26.07.2017 um 16:54 schrieb H. Nikolaus Schaller hns@goldelico.com:
Am 26.07.2017 um 16:48 schrieb Michael Mrozek EvilDragon@openpandora.org:
Am Mittwoch, den 26.07.2017, 13:04 +0200 schrieb H. Nikolaus Schaller:
Hi,
one idea we had on IRC a while ago: Maybe try a different clockspeed for the DRAM to see if that changes thing. It supports multiple ones.
Interesting idea.
If someone has a patch for me? I have no idea where this knob could be...
Ah, I got an idea where it is in the kernel: nowhere.
DRAM speed (EMIF) is set up in SPL, even before loading U-Boot.
But please consider in a theory that boot problems/hangup is only seen in kernel. I always got working DRAM in U-Boot to load the kernel at default DRAM speed.
Hi, finally I found enough undisturbed time to run the tests I had planned for a long time.
I tested with a single SD card with Letux-Debian8.9-LXDE rootfs and overwriting kernel/U-Boot as required by:
a) letux-4.13-rc2 standard kernel - http://download.goldelico.com/let ux-kernel/letux-4.13-rc2/ b) letux-4.13-rc2 LPAE kernel - http://download.goldelico.com/letux-k ernel/letux-4.13-rc2-lpae/
A) U-Boot with 2GB RAM config - http://download.goldelico.com/letux-u -boot/Pyra+LC15/latest/ B) U-Boot with 4GB RAM config - http://download.goldelico.com/letux-u -boot/Pyra+LC15-4GB/latest/
The 4GB EMIF config is here:
- 2GB Pyra (C22 + M04)
- 4GB Pyra (C48 + M28)
For each combination, I did try to boot, login and run "memtester 1500MB". memtester 3000MB is rejected for 2GB modes of course.
Here are the results:
Aa1) 2GB RAM visible, everything ok, memtester 1500M successful Aa2) 2GB RAM visible, boot sometimes hangs, memtester 1500M successful Ab1) 2GB RAM visible, everything ok, memtester 1500M successful Ab2) 2GB RAM visible, boot sometimes hangs, memtester 1500M successful Ba1) U-Boot rejects device (SDRAM: identified size not same as expected) Ba2) 2GB RAM visible, boot sometimes hangs, memtester 1500M successful Bb1) U-Boot rejects device (SDRAM: identified size not same as expected) Bb2) 4GB RAM visible, boot more often hangs, memtester 1500M successful, memtester 3000M sometimes hangs after requesting 3GB, sometimes successful
Now comes the difficult interpretation.
- generally this 4GB Pyra is less stable. Could be RAM induced
or something else. The test does not give a clear indication.
- the 2GB Pyra runs stable in all configurations
- 4GB and LPAE makes Linux boot fail more often
- it is possible to use the complete 4GB RAM, but not reliably
So I suspect a mixture of multiple effects. One makes the 4GB device I have tested less stable.
And the other could be an LPAE issue that makes 4GB only useable in certain good cases (I could imagine it depends on how the virtual paging mechanism randomly allocates RAM). But it could still be the 4GB RAM chips or config being less stable due to higher noise or power consumption or whatever.
Attached is an excerpt of the boot log and successful 3GB memtester output (the "BUG" occurs for non-lpae kernel as well - so it is not influencing the outcome).
BR, Nikolaus
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.13.0-rc2-letux-lpae+ (hns@iMac.local) (gcc version 4.9.2 (GCC)) #1297 SMP PREEMPT Mon Jul 24 13:08:10 CEST 2017 [ 0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache [ 0.000000] OF: fdt: Machine model: Pyra-Handheld-V5.1 [ 0.000000] debug: ignoring loglevel setting. [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] cma: Reserved 16 MiB at 0x00000000fe000000 [ 0.000000] OMAP4: Map 0x000000027fd00000 to fe600000 for dram barrier [ 0.000000] On node 0 totalpages: 1043712 [ 0.000000] free_area_init_node: node 0, pgdat c108c240, node_mem_map ebff7000 [ 0.000000] DMA zone: 1536 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 196608 pages, LIFO batch:31 [ 0.000000] HighMem zone: 847104 pages, LIFO batch:31 [ 0.000000] OMAP5432 ES2.0 [ 0.000000] percpu: Embedded 17 pages/cpu @ebf8f000 s40704 r8192 d20736 u69632 [ 0.000000] pcpu-alloc: s40704 r8192 d20736 u69632 alloc=17*4096 [ 0.000000] pcpu-alloc: [0] 0 [0] 1 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 1042176 [ 0.000000] Kernel command line: console= root=PARTUUID=6c9bc324- 02 rw rootfstype=ext4 rootwait 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: 63840(97%) [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Memory: 4093388K/4174848K available (8192K kernel code, 586K rwdata, 2240K rodata, 2048K init, 7999K bss, 65076K reserved, 16384K cma-reserved, 3372032K highmem) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xf0800000 - 0xff800000 ( 240 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf0000000 ( 768 MB) [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB) [ 0.000000] .text : 0xc0008000 - 0xc0a00000 (10208 kB) [ 0.000000] .init : 0xc0e00000 - 0xc1000000 (2048 kB) [ 0.000000] .data : 0xc1000000 - 0xc1092900 ( 587 kB) [ 0.000000] .bss : 0xc1092900 - 0xc1862684 (8000 kB) [ 0.000000] Running RCU self tests [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] RCU lockdep checking is enabled. [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] GIC: Using split EOI/Deactivate mode [ 0.000000] OMAP clockevent source: timer1 at 32768 Hz [ 0.000000] arch_timer: cp15 timer(s) running at 6.14MHz (phys). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x16ac02862, max_idle_ns: 440795202218 ns [ 0.000006] sched_clock: 56 bits at 6MHz, resolution 162ns, wraps every 4398046511085ns [ 0.000024] Switching to timer-based delay loop, resolution 162ns
...
[ 2.220127] Power Management for TI OMAP4+ devices. [ 2.225399] BUG: using smp_processor_id() in preemptible [00000000] code: swapper/0/1 [ 2.233704] caller is pwrdm_set_next_pwrst+0x48/0x1d8 [ 2.239024] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.13.0-rc2- letux-lpae+ #1297 [ 2.246970] Hardware name: Generic OMAP5 (Flattened Device Tree) [ 2.253288] [<c020eaf0>] (unwind_backtrace) from [<c020afec>] (show_stack+0x10/0x14) [ 2.261417] [<c020afec>] (show_stack) from [<c084c048>] (dump_stack+0x98/0xd0) [ 2.269000] [<c084c048>] (dump_stack) from [<c055270c>] (check_preemption_disabled+0xec/0x124) [ 2.278042] [<c055270c>] (check_preemption_disabled) from [<c022032c>] (pwrdm_set_next_pwrst+0x48/0x1d8) [ 2.287990] [<c022032c>] (pwrdm_set_next_pwrst) from [<c0e0cdd0>] (omap4_mpuss_init+0xb4/0x23c) [ 2.297123] [<c0e0cdd0>] (omap4_mpuss_init) from [<c0e0d1ec>] (omap4_pm_init+0xf4/0x164) [ 2.305611] [<c0e0d1ec>] (omap4_pm_init) from [<c0e0a3f4>] (omap5_init_late+0x10/0x18) [ 2.313920] [<c0e0a3f4>] (omap5_init_late) from [<c0e03560>] (init_machine_late+0x1c/0x90) [ 2.322595] [<c0e03560>] (init_machine_late) from [<c02018d8>] (do_one_initcall+0xa8/0x150) [ 2.331356] [<c02018d8>] (do_one_initcall) from [<c0e00d94>] (kernel_init_freeable+0x110/0x1d4) [ 2.340482] [<c0e00d94>] (kernel_init_freeable) from [<c085d678>] (kernel_init+0x8/0x10c) [ 2.349067] [<c085d678>] (kernel_init) from [<c0206ee8>] (ret_from_fork+0x14/0x2c) [ 2.357093] BUG: using smp_processor_id() in preemptible [00000000] code: swapper/0/1 [ 2.357491] ata1: SATA link down (SStatus 0 SControl 300)
...
letux login: root Password: Last login: Sat Jan 1 01:38:48 UTC 2000 on console Linux letux 4.13.0-rc2-letux-lpae+ #1297 SMP PREEMPT Mon Jul 24 13:08:10 CEST 2017 armv7l
The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@letux:~# cat /proc/meminfo MemTotal: 4111820 kB MemFree: 3840616 kB MemAvailable: 4022440 kB Buffers: 9284 kB Cached: 213588 kB SwapCached: 0 kB Active: 145492 kB Inactive: 91496 kB Active(anon): 14208 kB Inactive(anon): 5392 kB Active(file): 131284 kB Inactive(file): 86104 kB Unevictable: 0 kB Mlocked: 0 kB HighTotal: 3388416 kB HighFree: 3156312 kB LowTotal: 723404 kB LowFree: 684304 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 32 kB Writeback: 0 kB AnonPages: 14056 kB Mapped: 8260 kB Shmem: 5488 kB Slab: 32 kB SReclaimable: 0 kB SUnreclaim: 32 kB KernelStack: 720 kB PageTables: 280 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 2055908 kB Committed_AS: 47460 kB VmallocTotal: 245760 kB VmallocUsed: 0 kB VmallocChunk: 0 kB CmaTotal: 16384 kB CmaFree: 13704 kB root@letux:~# memtester 3000m memtester version 4.3.0 (32-bit) Copyright (C) 2001-2012 Charles Cazabon. Licensed under the GNU General Public License version 2 (only).
pagesize is 4096 pagesizemask is 0xfffff000 want 3000MB (3145728000 bytes) got 2924MB (3067002880 bytes), trying mlock ...locked. Loop 1: Stuck Address : ok Random Value : ok Compare XOR : ok Compare SUB : ok Compare MUL : ok Compare DIV : ok Compare OR : ok Compare AND : ok Sequential Increment: ok Solid Bits : ok Block Sequential : ok Checkerboard : ok Bit Spread : ok Bit Flip : ok Walking Ones : ok Walking Zeroes : ok 8-bit Writes : ok 16-bit Writes : ok
Loop 2: Stuck Address : setting 14^C root@letux:~# _______________________________________________ Kernel mailing list Kernel@pyra-handheld.com http://pyra-handheld.com/cgi-bin/mailman/listinfo/kernel
-- Mit freundlichen Grüßen,
Michael Mrozek
OpenPandora GmbH Geschäftsführer: Michael Mrozek
Schäffbräustr. 11 85049 Ingolstadt Deutschland Tel.: 0841 / 990 5548 http://www.openpandora.de/ HRB 4879, Amtsgericht Ingolstadt
eMail: mrozek@openpandora.org
http://projects.goldelico.com/p/gta04-kernel/ Letux-kernel mailing list Letux-kernel@openphoenux.org http://lists.goldelico.com/mailman/listinfo.cgi/letux-kernel