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/BoardConfigCommon.mk, change TARGET_KERNEL_2G := true.

    Build android rootfs.

 

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

    Copy libEGL_imx51.so, libGLESv1_CM_imx51.so, libGLESv2_imx51.so and libOpenVG.so in gpulibs-2g-mapping.zip to system/lib/egl/.

    Copy others to system/lib/.

Original Attachment has been moved to: 39-gpulibs2gmapping.zip

Outcomes