AnsweredAssumed Answered

How to configure vmalloc size?

Question asked by Matthew Mckay-Davies on Jul 27, 2016
Latest reply on Jul 27, 2016 by Victor Linnik



I'm trying to get Manufacturing tool up and running on a bespoke iMX6 Solo board with 256 MB of DRAM.

I've started with the fsl-image-mfgtool-initramfs target on imx6dlsabresd as the base.


MACHINE=imx6dlsabresd source -b mfgToolTest

bitbake fsl-image-mfgtool-initramfs


I've modified U-Boot to boot with 256 MB and I've tested this configuration with the DDR stress tester, so I asume that the DRAM is correctly configured.


I've modified the device tree to reflect the board's hardware and Linux boots and the UTP client is started (as far as I can tell) though at this point the manufacturing tool says 'no device connected'.



I have reduced CMA size to 96 MB and I've configured the CONFIG_VMSPLIT_3G kernel config. I've got this in my device tree:


memory {

  reg = <0x10000000 0x10000000>;



and I've tried the vmalloc=size boot argument...


My problem is that when Linux boots, in the virtual memory layout I see that vmalloc is greater than 256 MB (744MB). Which can't be right as it should be less than 256 MB. lowmem is 256 MB and it prints "Memory: 143232K/262144K available" which looks correct, so why is vmalloc so big? How can I fix this?


I've been banging my head against this all morning, any help or pointers would be greatly appreciated.


cma: CMA: reserved 96 MiB at 1a000000

Memory policy: Data cache writeback

CPU: All CPU(s) started in SVC mode.

PERCPU: Embedded 8 pages/cpu @c9db0000 s8896 r8192 d15680 u32768

Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024

Kernel command line: console=ttymxc0,115200 rdinit=/linuxrc vmalloc=128MB g_mass

_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mas

s_storage.idProduct=0x37FF g_mass_storage.iSerialNumber= enable_wait_mode=off

PID hash table entries: 1024 (order: 0, 4096 bytes)

Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)

Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)

Memory: 143232K/262144K available (6601K kernel code, 334K rwdata, 5888K rodata,

300K init, 415K bss, 118912K reserved, 0K highmem)

Virtual kernel memory layout:

    vector  : 0xffff0000 - 0xffff1000   (   4 kB)

    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)

    vmalloc : 0xd0800000 - 0xff000000   ( 744 MB)

    lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)

    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)

    modules : 0xbf000000 - 0xbfe00000   (  14 MB)

      .text : 0xc0008000 - 0xc0c3a8e8   (12491 kB)

      .init : 0xc0c3b000 - 0xc0c862c0   ( 301 kB)

      .data : 0xc0c88000 - 0xc0cdbac0   ( 335 kB)

       .bss : 0xc0cdbacc - 0xc0d437f0   ( 416 kB)

SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1



blah blah blah...


Starting UTP

ln: /etc/mtab: File exists

disable turn off display

Starting the hotplug events dispatcher udevd

Synthesizing initial hotplug evenudevd (72): /proc/72/oom_adj is deprecated, ple

ase use /proc/72/oom_score_adj instead.


uuc 0.4 [built Aug 16 2013 01:24:08]

UTP: Waiting for device to appear

UTP: file/device node /dev/utp already exists

cpu_id is 0