[Letux-kernel] 2GB vs. 4GB Pyra RAM tests

H. Nikolaus Schaller hns at goldelico.com
Wed Jul 26 17:00:27 CEST 2017


> Am 26.07.2017 um 16:54 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> 
> 
>> Am 26.07.2017 um 16:48 schrieb Michael Mrozek <EvilDragon at 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:
>>> 
>>> <http://git.goldelico.com/?p=gta04-uboot.git;a=blobdiff;f=board/golde
>>> lico/letux-
>>> cortex15/lc15.c;h=280da2095da9a780475fe3d59e79d283b050f02d;hp=709865c
>>> be0f10d389634924d3b57c5731c184429;hb=0c5e26e7886ea7d2d934f65e2e6cbf15
>>> a2b52bc8;hpb=be096ca0c2b204897b84c45e709511184b3a4059>
>>> 
>>> 1) 2GB Pyra (C22 + M04)
>>> 2) 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 at 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 at 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 at 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 at letux:~# 
>>> _______________________________________________
>>> Kernel mailing list
>>> Kernel at 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 at openpandora.org
> 
> _______________________________________________
> 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