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

H. Nikolaus Schaller hns at goldelico.com
Wed Jul 26 13:04:46 CEST 2017


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/letux-kernel/letux-4.13-rc2/
b) letux-4.13-rc2 LPAE kernel - http://download.goldelico.com/letux-kernel/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/goldelico/letux-cortex15/lc15.c;h=280da2095da9a780475fe3d59e79d283b050f02d;hp=709865cbe0f10d389634924d3b57c5731c184429;hb=0c5e26e7886ea7d2d934f65e2e6cbf15a2b52bc8;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:~# 


More information about the Letux-kernel mailing list