“* Based upon Google's msm 3.4 source * Various fixes, improvements and optimizatios (look @ github) * Compiled with gcc4.7.2 toolchain (linaro 09.12) * -O3 optimized * Snapdragon & CortexA15 optimizations * replaced qcom's hotplug binary with msm_mpdecision (IN-KERNEL, better battery life + performance) * Extensive sysfs interface for mpdecision with all the tuneables you want (/sys/kernel/msm_mpdecision/) * replaced qcom's thermal binary with my IN-KERNEL solution. (/sys/kernel/msm_thermal/) * export krait version to: /sys/kernel/debug/krait_variant * Allow OC up to 2,5Ghz * Allow UC to 96Mhz * Undervolting (faux123) * Default clocks: 300 Mhz min & 2265,6 Mhz max
Zip features: *** ON-THE-FLY-RAMDISK EDITS! *** THIS KERNEL USES YOUR RAMDISK, it will just modify it on the fly while flashing. These changes are not creating any incompatibilities with roms/other kernels. * removes min freq overrides from the ramdisk * removes governor overrides from the ramdisk * adds init.d support to your ramdisk (if not already supported) * modifies stock ondemand settings * add module insertion”
“ Kernel based 3-phase thermal control! This replaces your /system/bin/thermald binary which is renamed by the installer to thermald_bck. It will throttle your cpu speed to keep it cool and unleash it if the cpu has cooled down enough. (3 phases: low, mid and high)
Check /sys/kernel/msm_thermal/conf/ for the thermal configuration
allowed_max_high = highest threshold (phase 3) allowed_max_low = remove the throttling if we cooled down to this (clr_thrshold) allowed_max_freq = max frequency if throttled (limit)
[...]mid[...] = same as above, just for phase 2 [...]low[...] = Lowest threshold (phase 1)
check_interval_ms = how often shall we check? (sampling rate)
shutdown_temp = if we reach this shut down the device!
If you want to see msm_thermal doing it's job: Code: adb shell cat /proc/kmsg | grep 'thermal'”
“What is msm_mpdecision?
“ 100% kernel based multi core decision! (should cpu1/2/3 be online or not?) This replaces your /system/bin/mpdecision binary which is renamed by the installer to mpdecision_bck.
Check /sys/kernel/msm_mpdecision/conf/ for the configuration.
startdelay = time until mpdecision starts doing it's magic (20000) delay = time between checks (70) pause = if something else plugs in the cpu, fall asleep for 10000ms (10 secs) scroff_single_core = if the screen is off, don't plug in cpu1/2/3. Additionally: Unplug all cpus except cpu0 when screen is turned off (1) enabled = enable(1) or disable(0) mpdecision. This does not affect scroff_single_core! min_cpus = min cpus to be online, cannot be < 1. Default: 1 max_cpus = max cpus to be online, cannot be > 4. (if you set it to 2 and min_cpus to 1 you will basically have a dualcore) Default: 4 idle_freq = a value against that will be checked if a core +/- is requested. (486000) If cpu0 is below that value and a core up of another cpu is requested, nothing will happen. If any other cpu is above that value and a core down of that cpu is requested, nothing will happen. (otherwise it would now put down that cpu even though it is still working, which isn't what we want)
Hot plug thresholds (aka now it gets 'complicated') This small formula calculates which value will be used: (number_of_cpus_online - 1) * 2 The result of this formula will be the nwns_threshold where a new cpu is hotplugged. The result of this formula + 1 will be the nwns_threshold where a cpu is unplugged.
nwns_threshold_x = runqueue threshold, if this is reached cpuX will be hot/unplugged twts_threshold_x = time threshold, this amount of time must have passed for the related action to be taken (hot/unplug)
Example: One cpu is online. (1 - 1) * 2 = 0 ergo: nwns_threshold_0 = cpu1 will be hotplugged at this value ((1 - 1) * 2) + 1 = 1 nwns_threshold_1 = cpu0 will be unplugged at this value Since we can't unplug cpu0 this is '0'.
Two cpus are online. (2 - 1) * 2 = 2 ergo: nwns_threshold_2 = cpu2 will be hotplugged at this value ((2 - 1) * 2) + 1 = 3 nwns_threshold_3 = cpu1 will be unplugged at this value
The default values are: NwNs_Threshold: 12, 0, 25, 20, 32, 28, 0, 35 TwTs_Threshold: 140, 0, 140, 190, 140, 190, 0, 190 Where the position and function of the number equals the result of the above explained formula.
(all times are in ms) If you want to see the mpdecision magic happening: Code: adb shell cat /proc/kmsg | grep 'MPDEC'”
“ This will boost your min cpu speed if you touch the screen or press a button and gives you full control. In those events the min cpu freq will be risen to a predefined value (look below) on every online cpu. This boosts overall reaction times and smoothness a lot. (works similar to the qcom mpdecision binary) Configuration files: root@android:/sys/kernel/msm_mpdecision/conf # ls | grep boost boost_enabled boost_freqs boost_time
All of them work like the usual sysfs files, except one special case: boost_freqs will list all frequencies from cpu 0 to cpu x. Cpu 3 and any following cpu will share one frequency. To change those frequencies echo the cpu number + the frequency in khz. Example: To change the boost freq of cpu3 (and 4,5,6,7,8, etc) the echo would look as follows: Code: echo "3 960000" > /sys/kernel/msm_mpdecision/conf/boost_freqs for cpu0: Code: echo "0 960000" > /sys/kernel/msm_mpdecision/conf/boost_freqs Defaults: Code: cat /sys/kernel/msm_mpdecision/conf/boost_freqs 960000 960000 729600 576000”
“Why do I have no WLAN?
“ Due to this kernels very high optimization settings it is too big for our boot.img with WLAN included into the kernel, so it is built as a module. That means it needs to be inserted into the kernel upon boot up, which needs to be automated for maximum comfort.
The zip adds module insertion to your ramdisk, if that fails for some reason the wlan module cannot be inserted.
if Code: adb shell lsmod doesn't show this: Code: tun 14701 0 - Live 0x00000000 cifs 275399 0 - Live 0x00000000 bcmdhd 2964650 0 - Live 0x00000000 (C) Then something went horribly wrong. Chances are that I broke it and this should never happen. One post in the issue tracker will probably fix it with the next release
You can restore wlan for your current bootup by executing: Code: adb shell su insmod /system/lib/modules/bcmdhd.ko”
Dernière édition par Primokorn le Mer 13 Nov 2013 - 10:46, édité 1 fois