All credits going to ChronoMonochrome
Hi everybody!
Today I've experimented with kernel a bit and have found a way to increase accessible RAM up to 691.1 MB, at the cost of not working(or not fully working) camera, HW decoding and inablilty boot to recovery. The way is to modify cmdline:
https://github.com/ChronoMonochrome/...b762acd0def203
We use CONFIG_CMDLINE_FORCE=y to ignore cmdline passed by bootloader and use instead new one which contains defconfig.
The default cmdline is(JB bootloader with 624 MB - don't remember its baseband name)
Quote:
CONFIG_CMDLINE="cachepolicy=writealloc mpcore_wdt.mpcore_margin=359 root=/dev/ram0 rw rootwait crash_reboot=yes crash_dump=no init=init console='null' mem=96M@0 mem_mtrace=15M@96M mem_mshared=1M@111M mem_modem=16M@112M mem=128M@128M hwmem=84M@256M mem=43M@340M mem_issw=1M@383M mem_ram_console=1M@384M mem=382M@385M vmalloc=264M jig_smd=0 lpm_boot=0 checksum_pass=1 checksum_done=1 sec_debug.enable=0 sec_debug.enable_user=0 androidboot.serialno=47907233a768cf60 board_id=12 startup_graphics=1 logo. lcd sbl_copy=1"
and new one that's in config:
Quote:
CONFIG_CMDLINE="cachepolicy=writealloc mpcore_wdt.mpcore_margin=359 root=/dev/ram0 rw rootwait crash_reboot=yes crash_dump=no init=init console='null' mem=96M@0 mem_mtrace=15M@96M mem_mshared=1M@111M mem_modem=16M@112M mem=128M@128M hwmem=72M@256M mem=55M@328M mem_issw=1M@383M mem_ram_console=1M@384M mem=382M@385M vmalloc=264M jig_smd=0 lpm_boot=0 checksum_pass=1 checksum_done=1 sec_debug.enable=0 sec_debug.enable_user=0 androidboot.serialno=47907233a768cf60 board_id=12 startup_graphics=1 logo. lcd sbl_copy=1"
Take a look at "hwmem=72M@256M mem=55M@328M". 72M means size of HWMEM, "@256M" - its physical address. The same is for "mem" - 55M is size of nearest RAM bank.
Because we forcibly passed this cmdline and bootloader can't add parameter bootmode=2, it disallows to boot into recovery. Maybe later I'll be able to fix it.
Now about other side-effects of reduction of HWMEM - I've tested few sizes of HWMEM, and results as follows:
HWMEM=16M(699M) - camera, audio and hw decoding doesn't work at all
HWMEM=24M(691M) - camera and hw decoding doesn't work at all
HWMEM=48M - video recording and hw decoding doesn't work
HWMEM=64M - video recording still doesn't work, but camera doesn't FC when enabling video mode. May be some cameras will work.
HWMEM=72M - haven't found any bugs yet.
HWMEM=84M - default HWMEM size.
UPD. also uploaded kernel with HWMEM@127M - this decreases available RAM, but maybe for some app or game will be useful this plenty of HWMEM
http://xda.mister-freeze.eu/XDA-file...el/mem_repart/
I've also tried to decrease modem_mem and mem_trace, but unfortunately, it causes bootloop (tested 8MB of modem memory, and 10M of mem_trace, both of these settings separately)
Now few words about how to flash it when recovery is unavailable: extract boot.img to /sdcard and flash kernel via terminal. Script to flashing kernel is attached - if you not familiar with terminal commands I recommend just execute this script to automatize the process. To return to usual kernel, extract boot.img to the same place, flash it, reboot to recovery and flash installable kernel again.
Enjoy
Today I've experimented with kernel a bit and have found a way to increase accessible RAM up to 691.1 MB, at the cost of not working(or not fully working) camera, HW decoding and inablilty boot to recovery. The way is to modify cmdline:
https://github.com/ChronoMonochrome/...b762acd0def203
We use CONFIG_CMDLINE_FORCE=y to ignore cmdline passed by bootloader and use instead new one which contains defconfig.
The default cmdline is(JB bootloader with 624 MB - don't remember its baseband name)
Quote:
CONFIG_CMDLINE="cachepolicy=writealloc mpcore_wdt.mpcore_margin=359 root=/dev/ram0 rw rootwait crash_reboot=yes crash_dump=no init=init console='null' mem=96M@0 mem_mtrace=15M@96M mem_mshared=1M@111M mem_modem=16M@112M mem=128M@128M hwmem=84M@256M mem=43M@340M mem_issw=1M@383M mem_ram_console=1M@384M mem=382M@385M vmalloc=264M jig_smd=0 lpm_boot=0 checksum_pass=1 checksum_done=1 sec_debug.enable=0 sec_debug.enable_user=0 androidboot.serialno=47907233a768cf60 board_id=12 startup_graphics=1 logo. lcd sbl_copy=1"
and new one that's in config:
Quote:
CONFIG_CMDLINE="cachepolicy=writealloc mpcore_wdt.mpcore_margin=359 root=/dev/ram0 rw rootwait crash_reboot=yes crash_dump=no init=init console='null' mem=96M@0 mem_mtrace=15M@96M mem_mshared=1M@111M mem_modem=16M@112M mem=128M@128M hwmem=72M@256M mem=55M@328M mem_issw=1M@383M mem_ram_console=1M@384M mem=382M@385M vmalloc=264M jig_smd=0 lpm_boot=0 checksum_pass=1 checksum_done=1 sec_debug.enable=0 sec_debug.enable_user=0 androidboot.serialno=47907233a768cf60 board_id=12 startup_graphics=1 logo. lcd sbl_copy=1"
Take a look at "hwmem=72M@256M mem=55M@328M". 72M means size of HWMEM, "@256M" - its physical address. The same is for "mem" - 55M is size of nearest RAM bank.
Because we forcibly passed this cmdline and bootloader can't add parameter bootmode=2, it disallows to boot into recovery. Maybe later I'll be able to fix it.
Now about other side-effects of reduction of HWMEM - I've tested few sizes of HWMEM, and results as follows:
HWMEM=16M(699M) - camera, audio and hw decoding doesn't work at all
HWMEM=24M(691M) - camera and hw decoding doesn't work at all
HWMEM=48M - video recording and hw decoding doesn't work
HWMEM=64M - video recording still doesn't work, but camera doesn't FC when enabling video mode. May be some cameras will work.
HWMEM=72M - haven't found any bugs yet.
HWMEM=84M - default HWMEM size.
UPD. also uploaded kernel with HWMEM@127M - this decreases available RAM, but maybe for some app or game will be useful this plenty of HWMEM
http://xda.mister-freeze.eu/XDA-file...el/mem_repart/
I've also tried to decrease modem_mem and mem_trace, but unfortunately, it causes bootloop (tested 8MB of modem memory, and 10M of mem_trace, both of these settings separately)
Now few words about how to flash it when recovery is unavailable: extract boot.img to /sdcard and flash kernel via terminal. Script to flashing kernel is attached - if you not familiar with terminal commands I recommend just execute this script to automatize the process. To return to usual kernel, extract boot.img to the same place, flash it, reboot to recovery and flash installable kernel again.
Enjoy