Post is pinned.Post has attachment
Electroactive v2.50 for android L and Electroactive v3.10 for android M-Preview/2. #Electroactive

New updates:

MSM-Thermal-X: Introduce 3-phase and cpu inputboost, with SoC temp limit and input/output control interface, and replace cancel_delayed_work with cancel_delayed_work_sync to cancel a delayed work and speed-up boot time. You can also control the thermal device-shutdown temperature. Any errors referring to the thermal driver IOCTL that were found to occur with the previous build have been fixed.

MSM MP-Decision Hotplug: Heavily modified in-kernel decision based on stock and showp mpdecision. Includes touch boost, single core while screen off, min/max cpus online, idle-frequency, boost frequency, StrictMode and EcoMode profiles. I've also created a strong integration between MSM MP-Decision and MSM-Thermal-X. The NwNs and TwTs thresholds values are now un-hardcoded to maximize tunability. 
*Note: touch-boost will temporarily raise cpu_min to a frequency determined by an mp_decision algorithm. If you would prefer to only use the input-event boost in MSM-Thermal-X rather than touch-boost then you can disable the mp_decision touch-boost by typing this in terminal as root (all other configurations are available in the OP):
echo "0" > /sys/kernel/msm_mpdecision/conf/boost_enabled

Electroactive CPU Governor: Revision 2 of cpufreq_electroactive. Will scale much more effeciently, and there is no more need for powersave_bias, as it seems to only be an ondemand feature and the new revision makes up for it anyway.

*NOTE: Before flashing, you MUST delete:
</etc/electroactive.conf>
</sbin/elecroactive.sh>
<sdcard/.electroactive.backup>

I hate to ask this, but is +Yusuf Mostafa​ alright? It's been nearly 6 weeks and I'm curious if he's on a break or what's happening. Anyway, love the kernel!

Great to see 3.10 is working on Marshmallow P3 =]

Huh. F2FS on Android M Preview 2 gives me the encryption error. :/

I guess Bug Reports is  the correct place as it's fine on LP. :P

MSM MP-Decision Hotplug Options

MP-Decision Enabled
Enables/Disables the hotplug. On disabled the backup cpu-control will be stock Qualcomm mp_decision
# 1 for enabled
# 0 for disabled
echo "1" > /sys/kernel/msm_mpdecision/conf/enabled

Touch Boost
Touch-boost will temporarily raise cpu_min to a frequency determined by an mp_decision algorithm.
# 1 for enabled
# 0 for disabled
echo "1" > /sys/kernel/msm_mpdecision/conf/boost_enabled

Idle Frequency
If the first core is below this frequency, then don't plug the other cores.
echo "300000" > /sys/kernel/msm_mpdecision/conf/idle_freq 

EcoMode
Ecomode tries to limit cores to just 2 unless there is a very heavy workload in which cores 3 and 4 are temporarily brought online and won't kick on until both CPUs are maxed out then it will allow for all 4 cores to come temporarily online. 
echo "99" > /sys/kernel/msm_mpdecision/conf/nwns_threshold_4

StrictMode
Strict mode functions so only 1 CPU tries to be online at first before bringing up cpu1 and cpu2 online. 
echo "85" > /sys/kernel/msm_mpdecision/conf/nwns_threshold_2
echo "99" > /sys/kernel/msm_mpdecision/conf/nwns_threshold_4

Max CPUs online
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).
echo "4" > /sys/kernel/msm_mpdecision/conf/max_cpus

Min CPUs online
Min cpus to be online, cannot be < 1.
echo "1" > /sys/kernel/msm_mpdecision/conf/min_cpus

Screen-off 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.
echo "1" > /sys/kernel/msm_mpdecision/conf/scroff_single_core

Pause
If something else plugs in the cpu, i.e. CPU-Governor or Thermal, fall asleep for <#>ms. 
echo "10000" > /sys/kernel/msm_mpdecision/conf/pause

StartDelay
Time until mpdecision starts to work.
echo "20000" > /sys/kernel/msm_mpdecision/conf/startdelay

Delay
Time between checks.
echo "130" > /sys/kernel/msm_mpdecision/conf/delay

Hot plug thresholds
This 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

echo "#" > /sys/kernel/msm_mpdecision/conf/nwns_threshold_X
echo "#" > /sys/kernel/msm_mpdecision/conf/twts_threshold_X
etc...
Some 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).

MSM Thermal-X Driver Options

MSM Thermal-X will throttle your cpu speed to keep it cool and unleash it if the cpu has cooled down enough. The input-event boost will temporarily boost the cpu frequency to prevent any lag and guarantee smoothness while at the same time not hogging up battery.

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!

This is a reference to the "minimum cpu frequency stuck issue". Just to make this clear, this is NOT a bug. It is only MSM MP-Decision's touchboost doing it's job. Here's a summary on it's usage:

Touch-boost will temporarily raise cpu_min to a frequency determined by an mp_decision algorithm. If you would prefer to only use the input-event boost built-in to MSM-Thermal-X rather than touch-boost then you can disable the mp_decision touch-boost by typing this in terminal as root (all other configurations are available in a separate post):

echo "0" > /sys/kernel/msm_mpdecision/conf/boost_enabled

I haven't been updating this kernel for a while because of my busy schedule but now that I'm back I will work on some big updates to the hotplug and thermal driver. For now keep calm and stay #Electroactive  

Can I somehow make the speakers louder without the kernel / Android resetting its volume? They keep resetting in Synapse :(

I have a bug sometimes the sound is heard from the handset rather than the speakerphone
Wait while more posts are being loaded