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

H. Nikolaus Schaller hns at goldelico.com
Wed Jul 26 16:54:12 CEST 2017


> 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...

> 
>> 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



More information about the Letux-kernel mailing list