Shaojun Wang

Change user/kernel memory split from 3G/1G to 2G/2G in Android R10.3.2 -blog archive

Discussion created by Shaojun Wang Employee on Apr 25, 2012
Latest reply on Oct 31, 2012 by AdrianGancev

In R10.3.2, user/kernel memory split is set to 3G/1G, CONFIG_PAGE_OFFSET is 0xC0000000.

In MX53 SMD board, the 1GB DDR physical address allocation are 0x70000000 ~ 0x90000000(512MB), 0xB0000000 ~ 0xD0000000(512MB).


If enable 1GB ddr in u-boot, in Linux kernel, when convert physical address to virtual address, ddr bank in 0x70000000 ~ 0x90000000 is mapped to lowmem, ddr bank in 0xB0000000 ~ 0xD0000000 is mapped to highmem.

Some customer report if highmem is no zero, android lowmemorykiller cannot be triggered.


If change user/kernel memory split to 2G/2G, as the setting in R10.3.1, CONFIG_PAGE_OFFSET is 0x80000000, both ddr banks are mapped to lowmem. Highmem is zero. android lowmemorykiller can work.


Following are the steps about how to change user/kernel memory split from 3G/1G to 2G/2G in Android R10.3.2.


1. In kernel menuconfig, Kernel Features  ---> Memory split ---> 2G/2G user/kernel split.


2. In myandroid, modify device/fsl/imx5x/, change TARGET_KERNEL_2G := true.

    Build android rootfs.


3. Rebuild GPU lib for 2G/2G mapping. is the gpu lib which build from commit 3ba28cc279539f8a9af26cce62a7aff7f081833f in amd-gpu main branch.

    Copy,, and in to system/lib/egl/.

    Copy others to system/lib/.

Original Attachment has been moved to: