You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5856 lines
276 KiB
5856 lines
276 KiB
#! /vendor/bin/sh
|
|
|
|
# Copyright (c) 2012-2013, 2016-2020, The Linux Foundation. All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are met:
|
|
# * Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
# * Redistributions in binary form must reproduce the above copyright
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
# documentation and/or other materials provided with the distribution.
|
|
# * Neither the name of The Linux Foundation nor
|
|
# the names of its contributors may be used to endorse or promote
|
|
# products derived from this software without specific prior written
|
|
# permission.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#
|
|
|
|
function 8953_sched_dcvs_eas()
|
|
{
|
|
#governor settings
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/schedutil/down_rate_limit_us
|
|
#set the hispeed_freq
|
|
echo 1401600 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_freq
|
|
#default value for hispeed_load is 90, for 8953 and sdm450 it should be 85
|
|
echo 85 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_load
|
|
}
|
|
|
|
function 8917_sched_dcvs_eas()
|
|
{
|
|
#governor settings
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/schedutil/down_rate_limit_us
|
|
#set the hispeed_freq
|
|
echo 1094400 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_freq
|
|
#default value for hispeed_load is 90, for 8917 it should be 85
|
|
echo 85 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_load
|
|
}
|
|
|
|
function 8937_sched_dcvs_eas()
|
|
{
|
|
# enable governor for perf cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
#set the hispeed_freq
|
|
echo 1094400 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
#default value for hispeed_load is 90, for 8937 it should be 85
|
|
echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
|
|
## enable governor for power cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us
|
|
#set the hispeed_freq
|
|
echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
|
|
#default value for hispeed_load is 90, for 8937 it should be 85
|
|
echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
|
|
|
|
}
|
|
|
|
function configure_automotive_sku_parameters() {
|
|
|
|
echo 1036800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 1056000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
echo 1171200 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq
|
|
echo 1785600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
echo 902400000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
|
|
echo 902400000 > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/min_freq
|
|
echo 902400000 > /sys/class/devfreq/soc\:qcom,cpu7-cpu-l3-lat/min_freq
|
|
echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
|
|
echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/max_freq
|
|
echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu7-cpu-l3-lat/max_freq
|
|
#read feature id from nvram
|
|
reg_val=`cat /sys/devices/platform/soc/780130.qfprom/qfprom0/nvmem | od -An -t d4`
|
|
feature_id=$(((reg_val >> 20) & 0xFF))
|
|
log -t BOOT -p i "feature id '$feature_id'"
|
|
if [ $feature_id == 0 ]; then
|
|
echo " SKU Configured : SA8155P"
|
|
echo 2131200 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
|
|
echo 2419200 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
|
|
echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
|
|
elif [ $feature_id == 1 ]; then
|
|
echo "SKU Configured : SA8150P"
|
|
echo 1920000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
|
|
echo 2227200 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
|
|
echo 3 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
|
|
else
|
|
echo "unknown feature_id value" $feature_id
|
|
fi
|
|
}
|
|
|
|
function configure_sku_parameters() {
|
|
|
|
#read feature id from nvram
|
|
reg_val=`cat /sys/devices/platform/soc/780130.qfprom/qfprom0/nvmem | od -An -t d4`
|
|
feature_id=$(((reg_val >> 20) & 0xFF))
|
|
log -t BOOT -p i "feature id '$feature_id'"
|
|
if [ $feature_id == 6 ]; then
|
|
echo " SKU Configured : SA6145"
|
|
echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq
|
|
echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
|
|
echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq
|
|
echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq
|
|
echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
|
|
echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
|
|
echo 1017600000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
|
|
echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq
|
|
echo 1017600000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq
|
|
echo 3 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
|
|
echo {class:ddr, res:capped, val: 1016} > /sys/kernel/debug/aop_send_message
|
|
setprop vendor.sku_identified 1
|
|
setprop vendor.sku_name "SA6145"
|
|
elif [ $feature_id == 5 ]; then
|
|
echo "SKU Configured : SA6150"
|
|
echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq
|
|
echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
|
|
echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq
|
|
echo 998400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
echo 998400 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
|
|
echo 998400 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
|
|
echo 998400 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
|
|
echo 998400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
|
|
echo 998400 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq
|
|
echo 1708800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq
|
|
echo 1708800 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
|
|
echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
|
|
echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
|
|
echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq
|
|
echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq
|
|
echo 2 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
|
|
echo {class:ddr, res:capped, val: 1333} > /sys/kernel/debug/aop_send_message
|
|
setprop vendor.sku_identified 1
|
|
setprop vendor.sku_name "SA6150"
|
|
elif [ $feature_id == 4 ] || [ $feature_id == 3 ]; then
|
|
echo "SKU Configured : SA6155"
|
|
echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq
|
|
echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
|
|
echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq
|
|
echo 1900800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq
|
|
echo 1900800 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
|
|
echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
|
|
echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
|
|
echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq
|
|
echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq
|
|
echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
|
|
echo {class:ddr, res:capped, val: 1555} > /sys/kernel/debug/aop_send_message
|
|
setprop vendor.sku_identified 1
|
|
setprop vendor.sku_name "SA6155"
|
|
else
|
|
echo "SKU Configured : SA6155"
|
|
echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq
|
|
echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
|
|
echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
|
|
echo 1593600 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq
|
|
echo 1900800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq
|
|
echo 1900800 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
|
|
echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
|
|
echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
|
|
echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq
|
|
echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq
|
|
echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
|
|
echo {class:ddr, res:capped, val: 1555} > /sys/kernel/debug/aop_send_message
|
|
setprop vendor.sku_identified 1
|
|
setprop vendor.sku_name "SA6155"
|
|
fi
|
|
}
|
|
|
|
function 8953_sched_dcvs_hmp()
|
|
{
|
|
#scheduler settings
|
|
echo 3 > /proc/sys/kernel/sched_window_stats_policy
|
|
echo 3 > /proc/sys/kernel/sched_ravg_hist_size
|
|
#task packing settings
|
|
echo 0 > /sys/devices/system/cpu/cpu0/sched_static_cpu_pwr_cost
|
|
echo 0 > /sys/devices/system/cpu/cpu1/sched_static_cpu_pwr_cost
|
|
echo 0 > /sys/devices/system/cpu/cpu2/sched_static_cpu_pwr_cost
|
|
echo 0 > /sys/devices/system/cpu/cpu3/sched_static_cpu_pwr_cost
|
|
echo 0 > /sys/devices/system/cpu/cpu4/sched_static_cpu_pwr_cost
|
|
echo 0 > /sys/devices/system/cpu/cpu5/sched_static_cpu_pwr_cost
|
|
echo 0 > /sys/devices/system/cpu/cpu6/sched_static_cpu_pwr_cost
|
|
echo 0 > /sys/devices/system/cpu/cpu7/sched_static_cpu_pwr_cost
|
|
# spill load is set to 100% by default in the kernel
|
|
echo 3 > /proc/sys/kernel/sched_spill_nr_run
|
|
# Apply inter-cluster load balancer restrictions
|
|
echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill
|
|
# set sync wakee policy tunable
|
|
echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker
|
|
|
|
#governor settings
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "19000 1401600:39000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
|
|
echo 85 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
|
|
echo 1401600 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
|
|
echo "85 1401600:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
|
|
echo 39000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
|
|
echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
|
|
echo 19 > /proc/sys/kernel/sched_upmigrate_min_nice
|
|
# Enable sched guided freq control
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_migration_notif
|
|
echo 200000 > /proc/sys/kernel/sched_freq_inc_notify
|
|
echo 200000 > /proc/sys/kernel/sched_freq_dec_notify
|
|
|
|
}
|
|
|
|
function 8917_sched_dcvs_hmp()
|
|
{
|
|
# HMP scheduler settings
|
|
echo 3 > /proc/sys/kernel/sched_window_stats_policy
|
|
echo 3 > /proc/sys/kernel/sched_ravg_hist_size
|
|
echo 1 > /proc/sys/kernel/sched_restrict_tasks_spread
|
|
# HMP Task packing settings
|
|
echo 20 > /proc/sys/kernel/sched_small_task
|
|
echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
|
|
|
|
echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
|
|
|
|
echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle
|
|
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "19000 1094400:39000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
|
|
echo 85 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
|
|
echo 1094400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
|
|
echo "1 960000:85 1094400:90" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
|
|
echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
|
|
|
|
# Enable sched guided freq control
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_migration_notif
|
|
echo 50000 > /proc/sys/kernel/sched_freq_inc_notify
|
|
echo 50000 > /proc/sys/kernel/sched_freq_dec_notify
|
|
}
|
|
|
|
function 8937_sched_dcvs_hmp()
|
|
{
|
|
# HMP scheduler settings
|
|
echo 3 > /proc/sys/kernel/sched_window_stats_policy
|
|
echo 3 > /proc/sys/kernel/sched_ravg_hist_size
|
|
# HMP Task packing settings
|
|
echo 20 > /proc/sys/kernel/sched_small_task
|
|
echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load
|
|
|
|
echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run
|
|
|
|
echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle
|
|
# enable governor for perf cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "19000 1094400:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
|
|
echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
|
|
echo 1094400 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
|
|
echo "1 960000:85 1094400:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
|
|
echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor
|
|
|
|
# enable governor for power cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
|
|
echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
|
|
echo "1 768000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor
|
|
|
|
# Enable sched guided freq control
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
|
|
echo 50000 > /proc/sys/kernel/sched_freq_inc_notify
|
|
echo 50000 > /proc/sys/kernel/sched_freq_dec_notify
|
|
|
|
}
|
|
|
|
function sdm660_sched_interactive_dcvs() {
|
|
|
|
echo 0 > /proc/sys/kernel/sched_select_prev_cpu_us
|
|
echo 400000 > /proc/sys/kernel/sched_freq_inc_notify
|
|
echo 400000 > /proc/sys/kernel/sched_freq_dec_notify
|
|
echo 5 > /proc/sys/kernel/sched_spill_nr_run
|
|
echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill
|
|
echo 100000 > /proc/sys/kernel/sched_short_burst_ns
|
|
echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker
|
|
echo 20 > /proc/sys/kernel/sched_small_wakee_task_load
|
|
|
|
# disable thermal bcl hotplug to switch governor
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
# online CPU0
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
# configure governor settings for little cluster
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
|
|
echo "19000 1401600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
|
|
echo 1401600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
|
|
echo "85 1747200:95" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
|
|
echo 39000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
|
|
echo 633600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/fast_ramp_down
|
|
# online CPU4
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
# configure governor settings for big cluster
|
|
echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
|
|
echo "19000 1401600:39000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
|
|
echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
|
|
echo "85 1401600:90 2150400:95" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
|
|
echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
|
|
echo 59000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
|
|
echo 1113600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/ignore_hispeed_on_notif
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/fast_ramp_down
|
|
|
|
# bring all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
echo 1 > /sys/devices/system/cpu/cpu6/online
|
|
echo 1 > /sys/devices/system/cpu/cpu7/online
|
|
|
|
# configure LPM
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu0/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu1/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu2/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu3/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu4/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu5/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu6/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu7/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/perf-l2-ret/idle_enabled
|
|
|
|
# re-enable thermal and BCL hotplug
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
# Enable bus-dcvs
|
|
for cpubw in /sys/class/devfreq/*qcom,cpubw*
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 50 > $cpubw/polling_interval
|
|
echo 762 > $cpubw/min_freq
|
|
echo "1525 3143 5859 7759 9887 10327 11863 13763" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 85 > $cpubw/bw_hwmon/io_percent
|
|
echo 100 > $cpubw/bw_hwmon/decay_rate
|
|
echo 50 > $cpubw/bw_hwmon/bw_step
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps
|
|
echo 34 > $cpubw/bw_hwmon/low_power_io_percent
|
|
echo 20 > $cpubw/bw_hwmon/low_power_delay
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
|
|
}
|
|
|
|
function sdm660_sched_schedutil_dcvs() {
|
|
|
|
if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 19 ]; then
|
|
# configure governor settings for little cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
|
|
echo 1401600 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
|
|
echo 633600 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
|
|
echo 902400 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/rtg_boost_freq
|
|
|
|
# configure governor settings for big cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/down_rate_limit_us
|
|
echo 1401600 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/pl
|
|
echo 1113600 > /sys/devices/system/cpu/cpufreq/policy4/scaling_min_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/rtg_boost_freq
|
|
else
|
|
# configure governor settings for little cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1401600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
|
|
# configure governor settings for big cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
|
|
fi
|
|
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
|
|
#if the kernel version >=4.19,set input_boost_freq accordingly
|
|
if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 19 ]; then
|
|
echo "0:1401600" > /sys/devices/system/cpu/cpu_boost/input_boost_freq
|
|
echo 40 > /sys/devices/system/cpu/cpu_boost/input_boost_ms
|
|
else
|
|
echo "0:1401600" > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
fi
|
|
|
|
# sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
|
|
echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
|
|
echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
|
|
echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
|
|
|
|
# Enable bus-dcvs
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 50 > $cpubw/polling_interval
|
|
echo 762 > $cpubw/min_freq
|
|
echo "1525 3143 5859 7759 9887 10327 11863 13763" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 85 > $cpubw/bw_hwmon/io_percent
|
|
echo 100 > $cpubw/bw_hwmon/decay_rate
|
|
echo 50 > $cpubw/bw_hwmon/bw_step
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -le 14 ]; then
|
|
for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
|
|
for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor*
|
|
do
|
|
echo "compute" > $latfloor/governor
|
|
echo 10 > $latfloor/polling_interval
|
|
done
|
|
fi
|
|
done
|
|
|
|
if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 19 ]; then
|
|
# memlat specific settings are moved to seperate file under
|
|
# device/target specific folder
|
|
setprop vendor.dcvs.prop 1
|
|
fi
|
|
|
|
}
|
|
|
|
target=`getprop ro.board.platform`
|
|
|
|
KernelVersionStr=`cat /proc/sys/kernel/osrelease`
|
|
KernelVersionS=${KernelVersionStr:2:2}
|
|
KernelVersionA=${KernelVersionStr:0:1}
|
|
KernelVersionB=${KernelVersionS%.*}
|
|
|
|
function configure_zram_parameters() {
|
|
MemTotalStr=`cat /proc/meminfo | grep MemTotal`
|
|
MemTotal=${MemTotalStr:16:8}
|
|
|
|
low_ram=`getprop ro.config.low_ram`
|
|
|
|
# Zram disk - 75% for Go devices.
|
|
# For 512MB Go device, size = 384MB, set same for Non-Go.
|
|
# For 1GB Go device, size = 768MB, set same for Non-Go.
|
|
# For 2GB Go device, size = 1536MB, set same for Non-Go.
|
|
# For >2GB Non-Go devices, size = 50% of RAM size. Limit the size to 4GB.
|
|
# And enable lz4 zram compression for Go targets.
|
|
|
|
let RamSizeGB="( $MemTotal / 1048576 ) + 1"
|
|
diskSizeUnit=M
|
|
if [ $RamSizeGB -le 2 ]; then
|
|
let zRamSizeMB="( $RamSizeGB * 1024 ) * 3 / 4"
|
|
else
|
|
let zRamSizeMB="( $RamSizeGB * 1024 ) / 2"
|
|
fi
|
|
|
|
# use MB avoid 32 bit overflow
|
|
if [ $zRamSizeMB -gt 4096 ]; then
|
|
let zRamSizeMB=4096
|
|
fi
|
|
|
|
if [ "$low_ram" == "true" ]; then
|
|
echo lz4 > /sys/block/zram0/comp_algorithm
|
|
fi
|
|
|
|
if [ -f /sys/block/zram0/disksize ]; then
|
|
if [ -f /sys/block/zram0/use_dedup ]; then
|
|
echo 1 > /sys/block/zram0/use_dedup
|
|
fi
|
|
echo "$zRamSizeMB""$diskSizeUnit" > /sys/block/zram0/disksize
|
|
|
|
# ZRAM may use more memory than it saves if SLAB_STORE_USER
|
|
# debug option is enabled.
|
|
if [ -e /sys/kernel/slab/zs_handle ]; then
|
|
echo 0 > /sys/kernel/slab/zs_handle/store_user
|
|
fi
|
|
if [ -e /sys/kernel/slab/zspage ]; then
|
|
echo 0 > /sys/kernel/slab/zspage/store_user
|
|
fi
|
|
|
|
mkswap /dev/block/zram0
|
|
swapon /dev/block/zram0 -p 32758
|
|
fi
|
|
}
|
|
|
|
function configure_read_ahead_kb_values() {
|
|
MemTotalStr=`cat /proc/meminfo | grep MemTotal`
|
|
MemTotal=${MemTotalStr:16:8}
|
|
|
|
dmpts=$(ls /sys/block/*/queue/read_ahead_kb | grep -e dm -e mmc)
|
|
|
|
# Set 128 for <= 3GB &
|
|
# set 512 for >= 4GB targets.
|
|
if [ $MemTotal -le 3145728 ]; then
|
|
echo 128 > /sys/block/mmcblk0/bdi/read_ahead_kb
|
|
echo 128 > /sys/block/mmcblk0rpmb/bdi/read_ahead_kb
|
|
for dm in $dmpts; do
|
|
echo 128 > $dm
|
|
done
|
|
else
|
|
echo 512 > /sys/block/mmcblk0/bdi/read_ahead_kb
|
|
echo 512 > /sys/block/mmcblk0rpmb/bdi/read_ahead_kb
|
|
for dm in $dmpts; do
|
|
echo 512 > $dm
|
|
done
|
|
fi
|
|
}
|
|
|
|
function disable_core_ctl() {
|
|
if [ -f /sys/devices/system/cpu/cpu0/core_ctl/enable ]; then
|
|
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
|
|
else
|
|
echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/disable
|
|
fi
|
|
}
|
|
|
|
function enable_swap() {
|
|
MemTotalStr=`cat /proc/meminfo | grep MemTotal`
|
|
MemTotal=${MemTotalStr:16:8}
|
|
|
|
SWAP_ENABLE_THRESHOLD=1048576
|
|
swap_enable=`getprop ro.vendor.qti.config.swap`
|
|
|
|
# Enable swap initially only for 1 GB targets
|
|
if [ "$MemTotal" -le "$SWAP_ENABLE_THRESHOLD" ] && [ "$swap_enable" == "true" ]; then
|
|
# Static swiftness
|
|
echo 1 > /proc/sys/vm/swap_ratio_enable
|
|
echo 70 > /proc/sys/vm/swap_ratio
|
|
|
|
# Swap disk - 200MB size
|
|
if [ ! -f /data/vendor/swap/swapfile ]; then
|
|
dd if=/dev/zero of=/data/vendor/swap/swapfile bs=1m count=200
|
|
fi
|
|
mkswap /data/vendor/swap/swapfile
|
|
swapon /data/vendor/swap/swapfile -p 32758
|
|
fi
|
|
}
|
|
|
|
function configure_memory_parameters() {
|
|
return # do not run this function at all
|
|
# Set Memory parameters.
|
|
#
|
|
# Set per_process_reclaim tuning parameters
|
|
# All targets will use vmpressure range 50-70,
|
|
# All targets will use 512 pages swap size.
|
|
#
|
|
# Set Low memory killer minfree parameters
|
|
# 32 bit Non-Go, all memory configurations will use 15K series
|
|
# 32 bit Go, all memory configurations will use uLMK + Memcg
|
|
# 64 bit will use Google default LMK series.
|
|
#
|
|
# Set ALMK parameters (usually above the highest minfree values)
|
|
# vmpressure_file_min threshold is always set slightly higher
|
|
# than LMK minfree's last bin value for all targets. It is calculated as
|
|
# vmpressure_file_min = (last bin - second last bin ) + last bin
|
|
#
|
|
# Set allocstall_threshold to 0 for all targets.
|
|
#
|
|
|
|
ProductName=`getprop ro.product.name`
|
|
low_ram=`getprop ro.config.low_ram`
|
|
|
|
if [ "$ProductName" == "msmnile" ] || [ "$ProductName" == "kona" ] || [ "$ProductName" == "sdmshrike_au" ]; then
|
|
# Enable ZRAM
|
|
configure_zram_parameters
|
|
configure_read_ahead_kb_values
|
|
echo 0 > /proc/sys/vm/page-cluster
|
|
echo 100 > /proc/sys/vm/swappiness
|
|
else
|
|
arch_type=`uname -m`
|
|
|
|
# Set parameters for 32-bit Go targets.
|
|
if [ "$low_ram" == "true" ]; then
|
|
# Disable KLMK, ALMK, PPR & Core Control for Go devices
|
|
echo 0 > /sys/module/lowmemorykiller/parameters/enable_lmk
|
|
echo 0 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk
|
|
echo 0 > /sys/module/process_reclaim/parameters/enable_process_reclaim
|
|
disable_core_ctl
|
|
# Enable oom_reaper for Go devices
|
|
if [ -f /proc/sys/vm/reap_mem_on_sigkill ]; then
|
|
echo 1 > /proc/sys/vm/reap_mem_on_sigkill
|
|
fi
|
|
else
|
|
|
|
# Read adj series and set adj threshold for PPR and ALMK.
|
|
# This is required since adj values change from framework to framework.
|
|
adj_series=`cat /sys/module/lowmemorykiller/parameters/adj`
|
|
adj_1="${adj_series#*,}"
|
|
set_almk_ppr_adj="${adj_1%%,*}"
|
|
|
|
# PPR and ALMK should not act on HOME adj and below.
|
|
# Normalized ADJ for HOME is 6. Hence multiply by 6
|
|
# ADJ score represented as INT in LMK params, actual score can be in decimal
|
|
# Hence add 6 considering a worst case of 0.9 conversion to INT (0.9*6).
|
|
# For uLMK + Memcg, this will be set as 6 since adj is zero.
|
|
set_almk_ppr_adj=$(((set_almk_ppr_adj * 6) + 6))
|
|
echo $set_almk_ppr_adj > /sys/module/lowmemorykiller/parameters/adj_max_shift
|
|
|
|
# Calculate vmpressure_file_min as below & set for 64 bit:
|
|
# vmpressure_file_min = last_lmk_bin + (last_lmk_bin - last_but_one_lmk_bin)
|
|
if [ "$arch_type" == "aarch64" ]; then
|
|
minfree_series=`cat /sys/module/lowmemorykiller/parameters/minfree`
|
|
minfree_1="${minfree_series#*,}" ; rem_minfree_1="${minfree_1%%,*}"
|
|
minfree_2="${minfree_1#*,}" ; rem_minfree_2="${minfree_2%%,*}"
|
|
minfree_3="${minfree_2#*,}" ; rem_minfree_3="${minfree_3%%,*}"
|
|
minfree_4="${minfree_3#*,}" ; rem_minfree_4="${minfree_4%%,*}"
|
|
minfree_5="${minfree_4#*,}"
|
|
|
|
vmpres_file_min=$((minfree_5 + (minfree_5 - rem_minfree_4)))
|
|
echo $vmpres_file_min > /sys/module/lowmemorykiller/parameters/vmpressure_file_min
|
|
else
|
|
# Set LMK series, vmpressure_file_min for 32 bit non-go targets.
|
|
# Disable Core Control, enable KLMK for non-go 8909.
|
|
if [ "$ProductName" == "msm8909" ]; then
|
|
disable_core_ctl
|
|
echo 1 > /sys/module/lowmemorykiller/parameters/enable_lmk
|
|
fi
|
|
echo "15360,19200,23040,26880,34415,43737" > /sys/module/lowmemorykiller/parameters/minfree
|
|
echo 53059 > /sys/module/lowmemorykiller/parameters/vmpressure_file_min
|
|
fi
|
|
|
|
# Enable adaptive LMK for all targets &
|
|
# use Google default LMK series for all 64-bit targets >=2GB.
|
|
echo 1 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk
|
|
|
|
# Enable oom_reaper
|
|
if [ -f /sys/module/lowmemorykiller/parameters/oom_reaper ]; then
|
|
echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper
|
|
fi
|
|
|
|
if [[ "$ProductName" != "bengal"* ]]; then
|
|
#bengal has appcompaction enabled. So not needed
|
|
# Set PPR parameters for other targets
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
case "$soc_id" in
|
|
# Do not set PPR parameters for premium targets
|
|
# sdm845 - 321, 341
|
|
# msm8998 - 292, 319
|
|
# msm8996 - 246, 291, 305, 312
|
|
"321" | "341" | "292" | "319" | "246" | "291" | "305" | "312")
|
|
;;
|
|
*)
|
|
#Set PPR parameters for all other targets.
|
|
echo $set_almk_ppr_adj > /sys/module/process_reclaim/parameters/min_score_adj
|
|
echo 1 > /sys/module/process_reclaim/parameters/enable_process_reclaim
|
|
echo 50 > /sys/module/process_reclaim/parameters/pressure_min
|
|
echo 70 > /sys/module/process_reclaim/parameters/pressure_max
|
|
echo 30 > /sys/module/process_reclaim/parameters/swap_opt_eff
|
|
echo 512 > /sys/module/process_reclaim/parameters/per_swap_size
|
|
;;
|
|
esac
|
|
fi
|
|
fi
|
|
|
|
if [[ "$ProductName" == "bengal"* ]]; then
|
|
#Set PPR nomap parameters for bengal targets
|
|
echo 1 > /sys/module/process_reclaim/parameters/enable_process_reclaim
|
|
echo 50 > /sys/module/process_reclaim/parameters/pressure_min
|
|
echo 70 > /sys/module/process_reclaim/parameters/pressure_max
|
|
echo 30 > /sys/module/process_reclaim/parameters/swap_opt_eff
|
|
echo 0 > /sys/module/process_reclaim/parameters/per_swap_size
|
|
echo 7680 > /sys/module/process_reclaim/parameters/tsk_nomap_swap_sz
|
|
fi
|
|
|
|
# Set allocstall_threshold to 0 for all targets.
|
|
# Set swappiness to 100 for all targets
|
|
echo 0 > /sys/module/vmpressure/parameters/allocstall_threshold
|
|
echo 100 > /proc/sys/vm/swappiness
|
|
|
|
# Disable wsf for all targets beacause we are using efk.
|
|
# wsf Range : 1..1000 So set to bare minimum value 1.
|
|
echo 1 > /proc/sys/vm/watermark_scale_factor
|
|
|
|
configure_zram_parameters
|
|
|
|
configure_read_ahead_kb_values
|
|
|
|
enable_swap
|
|
fi
|
|
}
|
|
|
|
function enable_memory_features()
|
|
{
|
|
MemTotalStr=`cat /proc/meminfo | grep MemTotal`
|
|
MemTotal=${MemTotalStr:16:8}
|
|
|
|
if [ $MemTotal -le 2097152 ]; then
|
|
#Enable B service adj transition for 2GB or less memory
|
|
setprop ro.vendor.qti.sys.fw.bservice_enable true
|
|
setprop ro.vendor.qti.sys.fw.bservice_limit 5
|
|
setprop ro.vendor.qti.sys.fw.bservice_age 5000
|
|
|
|
#Enable Delay Service Restart
|
|
setprop ro.vendor.qti.am.reschedule_service true
|
|
fi
|
|
}
|
|
|
|
function start_hbtp()
|
|
{
|
|
# Start the Host based Touch processing but not in the power off mode.
|
|
# bootmode=`getprop ro.bootmode`
|
|
# if [ "charger" != $bootmode ]; then
|
|
# start vendor.hbtp
|
|
# fi
|
|
echo "do not start hbtp"
|
|
}
|
|
|
|
case "$target" in
|
|
"msm7201a_ffa" | "msm7201a_surf" | "msm7627_ffa" | "msm7627_6x" | "msm7627a" | "msm7627_surf" | \
|
|
"qsd8250_surf" | "qsd8250_ffa" | "msm7630_surf" | "msm7630_1x" | "msm7630_fusion" | "qsd8650a_st1x")
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm7201a_ffa" | "msm7201a_surf")
|
|
echo 500000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm7630_surf" | "msm7630_1x" | "msm7630_fusion")
|
|
echo 75000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
echo 1 > /sys/module/pm2/parameters/idle_sleep_mode
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm7201a_ffa" | "msm7201a_surf" | "msm7627_ffa" | "msm7627_6x" | "msm7627_surf" | "msm7630_surf" | "msm7630_1x" | "msm7630_fusion" | "msm7627a" )
|
|
echo 245760 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8660")
|
|
echo 1 > /sys/module/rpm_resources/enable_low_power/L2_cache
|
|
echo 1 > /sys/module/rpm_resources/enable_low_power/pxo
|
|
echo 2 > /sys/module/rpm_resources/enable_low_power/vdd_dig
|
|
echo 2 > /sys/module/rpm_resources/enable_low_power/vdd_mem
|
|
echo 1 > /sys/module/rpm_resources/enable_low_power/rpm_cpu
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
|
|
echo 4 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
|
|
echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 384000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
|
|
chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
|
|
chown -h root.system /sys/devices/system/cpu/mfreq
|
|
chmod -h 220 /sys/devices/system/cpu/mfreq
|
|
chown -h root.system /sys/devices/system/cpu/cpu1/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu1/online
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8960")
|
|
echo 1 > /sys/module/rpm_resources/enable_low_power/L2_cache
|
|
echo 1 > /sys/module/rpm_resources/enable_low_power/pxo
|
|
echo 1 > /sys/module/rpm_resources/enable_low_power/vdd_dig
|
|
echo 1 > /sys/module/rpm_resources/enable_low_power/vdd_mem
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
|
|
echo 4 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
|
|
echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
|
|
echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core
|
|
echo 3 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core
|
|
echo 918000 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq
|
|
echo 1026000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq
|
|
echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load
|
|
chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
|
|
chown -h system /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
|
|
echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 384000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
|
|
echo 384000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
|
|
echo 384000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
|
|
chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
|
|
chown -h system /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
|
|
chown -h system /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
|
|
chown -h system /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
|
|
chown -h system /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
chown -h root.system /sys/devices/system/cpu/mfreq
|
|
chmod -h 220 /sys/devices/system/cpu/mfreq
|
|
chown -h root.system /sys/devices/system/cpu/cpu1/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu2/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu3/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu1/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu2/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu3/online
|
|
# set DCVS parameters for CPU
|
|
echo 40000 > /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us
|
|
echo 40000 > /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us
|
|
echo 100000 > /sys/module/msm_dcvs/cores/cpu0/em_win_size_min_us
|
|
echo 500000 > /sys/module/msm_dcvs/cores/cpu0/em_win_size_max_us
|
|
echo 0 > /sys/module/msm_dcvs/cores/cpu0/slack_mode_dynamic
|
|
echo 1000000 > /sys/module/msm_dcvs/cores/cpu0/disable_pc_threshold
|
|
echo 25000 > /sys/module/msm_dcvs/cores/cpu1/slack_time_max_us
|
|
echo 25000 > /sys/module/msm_dcvs/cores/cpu1/slack_time_min_us
|
|
echo 100000 > /sys/module/msm_dcvs/cores/cpu1/em_win_size_min_us
|
|
echo 500000 > /sys/module/msm_dcvs/cores/cpu1/em_win_size_max_us
|
|
echo 0 > /sys/module/msm_dcvs/cores/cpu1/slack_mode_dynamic
|
|
echo 1000000 > /sys/module/msm_dcvs/cores/cpu1/disable_pc_threshold
|
|
echo 25000 > /sys/module/msm_dcvs/cores/cpu2/slack_time_max_us
|
|
echo 25000 > /sys/module/msm_dcvs/cores/cpu2/slack_time_min_us
|
|
echo 100000 > /sys/module/msm_dcvs/cores/cpu2/em_win_size_min_us
|
|
echo 500000 > /sys/module/msm_dcvs/cores/cpu2/em_win_size_max_us
|
|
echo 0 > /sys/module/msm_dcvs/cores/cpu2/slack_mode_dynamic
|
|
echo 1000000 > /sys/module/msm_dcvs/cores/cpu2/disable_pc_threshold
|
|
echo 25000 > /sys/module/msm_dcvs/cores/cpu3/slack_time_max_us
|
|
echo 25000 > /sys/module/msm_dcvs/cores/cpu3/slack_time_min_us
|
|
echo 100000 > /sys/module/msm_dcvs/cores/cpu3/em_win_size_min_us
|
|
echo 500000 > /sys/module/msm_dcvs/cores/cpu3/em_win_size_max_us
|
|
echo 0 > /sys/module/msm_dcvs/cores/cpu3/slack_mode_dynamic
|
|
echo 1000000 > /sys/module/msm_dcvs/cores/cpu3/disable_pc_threshold
|
|
# set DCVS parameters for GPU
|
|
echo 20000 > /sys/module/msm_dcvs/cores/gpu0/slack_time_max_us
|
|
echo 20000 > /sys/module/msm_dcvs/cores/gpu0/slack_time_min_us
|
|
echo 0 > /sys/module/msm_dcvs/cores/gpu0/slack_mode_dynamic
|
|
# set msm_mpdecision parameters
|
|
echo 45000 > /sys/module/msm_mpdecision/slack_time_max_us
|
|
echo 15000 > /sys/module/msm_mpdecision/slack_time_min_us
|
|
echo 100000 > /sys/module/msm_mpdecision/em_win_size_min_us
|
|
echo 1000000 > /sys/module/msm_mpdecision/em_win_size_max_us
|
|
echo 3 > /sys/module/msm_mpdecision/online_util_pct_min
|
|
echo 25 > /sys/module/msm_mpdecision/online_util_pct_max
|
|
echo 97 > /sys/module/msm_mpdecision/em_max_util_pct
|
|
echo 2 > /sys/module/msm_mpdecision/rq_avg_poll_ms
|
|
echo 10 > /sys/module/msm_mpdecision/mp_em_rounding_point_min
|
|
echo 85 > /sys/module/msm_mpdecision/mp_em_rounding_point_max
|
|
echo 50 > /sys/module/msm_mpdecision/iowait_threshold_pct
|
|
#set permissions for the nodes needed by display on/off hook
|
|
chown -h system /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us
|
|
chown -h system /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us
|
|
chown -h system /sys/module/msm_mpdecision/slack_time_max_us
|
|
chown -h system /sys/module/msm_mpdecision/slack_time_min_us
|
|
chmod -h 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us
|
|
chmod -h 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us
|
|
chmod -h 664 /sys/module/msm_mpdecision/slack_time_max_us
|
|
chmod -h 664 /sys/module/msm_mpdecision/slack_time_min_us
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
case "$soc_id" in
|
|
"130")
|
|
echo 230 > /sys/class/gpio/export
|
|
echo 228 > /sys/class/gpio/export
|
|
echo 229 > /sys/class/gpio/export
|
|
echo "in" > /sys/class/gpio/gpio230/direction
|
|
echo "rising" > /sys/class/gpio/gpio230/edge
|
|
echo "in" > /sys/class/gpio/gpio228/direction
|
|
echo "rising" > /sys/class/gpio/gpio228/edge
|
|
echo "in" > /sys/class/gpio/gpio229/direction
|
|
echo "rising" > /sys/class/gpio/gpio229/edge
|
|
echo 253 > /sys/class/gpio/export
|
|
echo 254 > /sys/class/gpio/export
|
|
echo 257 > /sys/class/gpio/export
|
|
echo 258 > /sys/class/gpio/export
|
|
echo 259 > /sys/class/gpio/export
|
|
echo "out" > /sys/class/gpio/gpio253/direction
|
|
echo "out" > /sys/class/gpio/gpio254/direction
|
|
echo "out" > /sys/class/gpio/gpio257/direction
|
|
echo "out" > /sys/class/gpio/gpio258/direction
|
|
echo "out" > /sys/class/gpio/gpio259/direction
|
|
chown -h media /sys/class/gpio/gpio253/value
|
|
chown -h media /sys/class/gpio/gpio254/value
|
|
chown -h media /sys/class/gpio/gpio257/value
|
|
chown -h media /sys/class/gpio/gpio258/value
|
|
chown -h media /sys/class/gpio/gpio259/value
|
|
chown -h media /sys/class/gpio/gpio253/direction
|
|
chown -h media /sys/class/gpio/gpio254/direction
|
|
chown -h media /sys/class/gpio/gpio257/direction
|
|
chown -h media /sys/class/gpio/gpio258/direction
|
|
chown -h media /sys/class/gpio/gpio259/direction
|
|
echo 0 > /sys/module/rpm_resources/enable_low_power/vdd_dig
|
|
echo 0 > /sys/module/rpm_resources/enable_low_power/vdd_mem
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8974")
|
|
echo 4 > /sys/module/lpm_levels/enable_low_power/l2
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
case "$soc_id" in
|
|
"208" | "211" | "214" | "217" | "209" | "212" | "215" | "218" | "194" | "210" | "213" | "216")
|
|
for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor
|
|
do
|
|
echo "cpubw_hwmon" > $devfreq_gov
|
|
done
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "interactive" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
|
|
echo "interactive" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
|
|
echo "interactive" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
|
|
echo "20000 1400000:40000 1700000:20000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
|
|
echo 1190400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
|
|
echo "85 1500000:90 1800000:70" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
|
|
echo 20 > /sys/module/cpu_boost/parameters/boost_ms
|
|
echo 1728000 > /sys/module/cpu_boost/parameters/sync_threshold
|
|
echo 100000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
|
|
echo 1497600 > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
;;
|
|
*)
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
|
|
echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
|
|
echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
|
|
echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core
|
|
echo 3 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core
|
|
echo 960000 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq
|
|
echo 960000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq
|
|
echo 1190400 > /sys/devices/system/cpu/cpufreq/ondemand/input_boost
|
|
echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load
|
|
;;
|
|
esac
|
|
echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
|
|
echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
|
|
echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
chown -h root.system /sys/devices/system/cpu/mfreq
|
|
chmod -h 220 /sys/devices/system/cpu/mfreq
|
|
chown -h root.system /sys/devices/system/cpu/cpu1/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu2/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu3/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu1/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu2/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /dev/cpuctl/apps/cpu.notify_on_migrate
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8916")
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
case "$soc_id" in
|
|
"206")
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 2 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus
|
|
;;
|
|
"247" | "248" | "249" | "250")
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
;;
|
|
"239" | "241" | "263")
|
|
if [ -f /sys/devices/soc0/revision ]; then
|
|
revision=`cat /sys/devices/soc0/revision`
|
|
else
|
|
revision=`cat /sys/devices/system/soc/soc0/revision`
|
|
fi
|
|
echo 10 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus
|
|
if [ -f /sys/devices/soc0/platform_subtype_id ]; then
|
|
platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
|
|
fi
|
|
if [ -f /sys/devices/soc0/hw_platform ]; then
|
|
hw_platform=`cat /sys/devices/soc0/hw_platform`
|
|
fi
|
|
case "$soc_id" in
|
|
"239")
|
|
case "$hw_platform" in
|
|
"Surf")
|
|
case "$platform_subtype_id" in
|
|
"1" | "2")
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
;;
|
|
"MTP")
|
|
case "$platform_subtype_id" in
|
|
"3")
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
;;
|
|
"268" | "269" | "270" | "271")
|
|
echo 10 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus
|
|
;;
|
|
"233" | "240" | "242")
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8226")
|
|
echo 4 > /sys/module/lpm_levels/enable_low_power/l2
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
|
|
echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
|
|
echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
|
|
echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core
|
|
echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core
|
|
echo 787200 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq
|
|
echo 300000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq
|
|
echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load
|
|
echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
chown -h root.system /sys/devices/system/cpu/cpu1/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu2/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu3/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu1/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu2/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu3/online
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8610")
|
|
echo 4 > /sys/module/lpm_levels/enable_low_power/l2
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
|
|
echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
|
|
echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
|
|
echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core
|
|
echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core
|
|
echo 787200 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq
|
|
echo 300000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq
|
|
echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load
|
|
echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
setprop ro.qualcomm.perf.min_freq 7
|
|
echo 1 > /sys/kernel/mm/ksm/deferred_timer
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
chown -h root.system /sys/devices/system/cpu/cpu1/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu2/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu3/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu1/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu2/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu3/online
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8916")
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
# HMP scheduler settings for 8916, 8936, 8939, 8929
|
|
echo 3 > /proc/sys/kernel/sched_window_stats_policy
|
|
echo 3 > /proc/sys/kernel/sched_ravg_hist_size
|
|
|
|
# Apply governor settings for 8916
|
|
case "$soc_id" in
|
|
"206" | "247" | "248" | "249" | "250")
|
|
|
|
# HMP scheduler load tracking settings
|
|
echo 3 > /proc/sys/kernel/sched_ravg_hist_size
|
|
|
|
# HMP Task packing settings for 8916
|
|
echo 20 > /proc/sys/kernel/sched_small_task
|
|
echo 30 > /proc/sys/kernel/sched_mostly_idle_load
|
|
echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run
|
|
|
|
# disable thermal core_control to update scaling_min_freq
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
# enable thermal core_control now
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
echo "25000 1094400:50000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
|
|
echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
|
|
echo 998400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
|
|
echo "1 800000:85 998400:90 1094400:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
;;
|
|
esac
|
|
|
|
# Apply governor settings for 8936
|
|
case "$soc_id" in
|
|
"233" | "240" | "242")
|
|
|
|
# HMP scheduler load tracking settings
|
|
echo 3 > /proc/sys/kernel/sched_ravg_hist_size
|
|
|
|
# HMP Task packing settings for 8936
|
|
echo 50 > /proc/sys/kernel/sched_small_task
|
|
echo 50 > /proc/sys/kernel/sched_mostly_idle_load
|
|
echo 10 > /proc/sys/kernel/sched_mostly_idle_nr_run
|
|
|
|
# disable thermal core_control to update scaling_min_freq, interactive gov
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
# enable thermal core_control now
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
echo "25000 1113600:50000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
|
|
echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
|
|
echo 960000 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
|
|
echo "1 800000:85 1113600:90 1267200:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
|
|
# Enable low power modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent
|
|
do
|
|
echo 40 > $gpu_bimc_io_percent
|
|
done
|
|
;;
|
|
esac
|
|
|
|
# Apply governor settings for 8939
|
|
case "$soc_id" in
|
|
"239" | "241" | "263" | "268" | "269" | "270" | "271")
|
|
|
|
if [ `cat /sys/devices/soc0/revision` != "3.0" ]; then
|
|
# Apply 1.0 and 2.0 specific Sched & Governor settings
|
|
|
|
# HMP scheduler load tracking settings
|
|
echo 5 > /proc/sys/kernel/sched_ravg_hist_size
|
|
|
|
# HMP Task packing settings for 8939, 8929
|
|
echo 20 > /proc/sys/kernel/sched_small_task
|
|
|
|
for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor
|
|
do
|
|
echo "cpufreq" > $devfreq_gov
|
|
done
|
|
|
|
for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor
|
|
do
|
|
echo "bw_hwmon" > $devfreq_gov
|
|
for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent
|
|
do
|
|
echo 20 > $cpu_io_percent
|
|
done
|
|
done
|
|
|
|
for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent
|
|
do
|
|
echo 40 > $gpu_bimc_io_percent
|
|
done
|
|
# disable thermal core_control to update interactive gov settings
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
# enable governor for perf cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "20000 1113600:50000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
|
|
echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
|
|
echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
|
|
echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
|
|
echo 50000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
|
|
echo 50000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor
|
|
echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# enable governor for power cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo "25000 800000:50000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
|
|
echo 998400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
|
|
echo "1 800000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor
|
|
echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
|
|
# enable thermal core_control now
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
echo 1 > /sys/devices/system/cpu/cpu6/online
|
|
echo 1 > /sys/devices/system/cpu/cpu7/online
|
|
|
|
# Enable low power modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
# HMP scheduler (big.Little cluster related) settings
|
|
echo 75 > /proc/sys/kernel/sched_upmigrate
|
|
echo 60 > /proc/sys/kernel/sched_downmigrate
|
|
|
|
# cpu idle load threshold
|
|
echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load
|
|
|
|
# cpu idle nr run threshold
|
|
echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run
|
|
|
|
else
|
|
# Apply 3.0 specific Sched & Governor settings
|
|
# HMP scheduler settings for 8939 V3.0
|
|
echo 3 > /proc/sys/kernel/sched_window_stats_policy
|
|
echo 3 > /proc/sys/kernel/sched_ravg_hist_size
|
|
echo 20000000 > /proc/sys/kernel/sched_ravg_window
|
|
|
|
# HMP Task packing settings for 8939 V3.0
|
|
echo 20 > /proc/sys/kernel/sched_small_task
|
|
echo 30 > /proc/sys/kernel/sched_mostly_idle_load
|
|
echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run
|
|
|
|
echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle
|
|
|
|
for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor
|
|
do
|
|
echo "cpufreq" > $devfreq_gov
|
|
done
|
|
|
|
for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor
|
|
do
|
|
echo "bw_hwmon" > $devfreq_gov
|
|
for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent
|
|
do
|
|
echo 20 > $cpu_io_percent
|
|
done
|
|
done
|
|
|
|
for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent
|
|
do
|
|
echo 40 > $gpu_bimc_io_percent
|
|
done
|
|
# disable thermal core_control to update interactive gov settings
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
# enable governor for perf cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "19000 1113600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
|
|
echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
|
|
echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
|
|
echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
|
|
echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor
|
|
echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# enable governor for power cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
|
|
echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
|
|
echo "1 800000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor
|
|
echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
|
|
# enable thermal core_control now
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
echo 1 > /sys/devices/system/cpu/cpu6/online
|
|
echo 1 > /sys/devices/system/cpu/cpu7/online
|
|
|
|
# Enable low power modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
# HMP scheduler (big.Little cluster related) settings
|
|
echo 93 > /proc/sys/kernel/sched_upmigrate
|
|
echo 83 > /proc/sys/kernel/sched_downmigrate
|
|
|
|
# Enable sched guided freq control
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
|
|
echo 50000 > /proc/sys/kernel/sched_freq_inc_notify
|
|
echo 50000 > /proc/sys/kernel/sched_freq_dec_notify
|
|
|
|
# Enable core control
|
|
# insmod /system/lib/modules/core_ctl.ko
|
|
echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus
|
|
echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
|
|
case "$revision" in
|
|
"3.0")
|
|
# Enable dynamic clock gatin
|
|
echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating
|
|
;;
|
|
esac
|
|
fi
|
|
;;
|
|
esac
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8952")
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
case "$soc_id" in
|
|
"264" | "289")
|
|
# Apply Scheduler and Governor settings for 8952
|
|
|
|
# HMP scheduler settings
|
|
echo 3 > /proc/sys/kernel/sched_window_stats_policy
|
|
echo 3 > /proc/sys/kernel/sched_ravg_hist_size
|
|
echo 20000000 > /proc/sys/kernel/sched_ravg_window
|
|
|
|
# HMP Task packing settings
|
|
echo 20 > /proc/sys/kernel/sched_small_task
|
|
echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load
|
|
|
|
echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run
|
|
|
|
echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle
|
|
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor
|
|
do
|
|
echo "cpufreq" > $devfreq_gov
|
|
done
|
|
|
|
for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor
|
|
do
|
|
echo "bw_hwmon" > $devfreq_gov
|
|
for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent
|
|
do
|
|
echo 20 > $cpu_io_percent
|
|
done
|
|
for cpu_guard_band in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/guard_band_mbps
|
|
do
|
|
echo 30 > $cpu_guard_band
|
|
done
|
|
done
|
|
|
|
for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent
|
|
do
|
|
echo 40 > $gpu_bimc_io_percent
|
|
done
|
|
# disable thermal & BCL core_control to update interactive gov settings
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
bcl_hotplug_mask=`cat $hotplug_mask`
|
|
echo 0 > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
|
|
echo 0 > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
|
|
# enable governor for perf cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "19000 1113600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
|
|
echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
|
|
echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
|
|
echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
|
|
echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor
|
|
echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# enable governor for power cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
|
|
echo 806400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
|
|
echo "1 806400:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor
|
|
echo 806400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
echo 1 > /sys/devices/system/cpu/cpu6/online
|
|
echo 1 > /sys/devices/system/cpu/cpu7/online
|
|
|
|
# Enable Low power modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
# HMP scheduler (big.Little cluster related) settings
|
|
echo 93 > /proc/sys/kernel/sched_upmigrate
|
|
echo 83 > /proc/sys/kernel/sched_downmigrate
|
|
|
|
# Enable sched guided freq control
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
|
|
echo 50000 > /proc/sys/kernel/sched_freq_inc_notify
|
|
echo 50000 > /proc/sys/kernel/sched_freq_dec_notify
|
|
|
|
# Enable core control
|
|
echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus
|
|
echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
|
|
echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
|
|
|
|
# re-enable thermal & BCL core_control now
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
echo $bcl_hotplug_mask > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
|
|
# Enable dynamic clock gating
|
|
echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating
|
|
# Enable timer migration to little cluster
|
|
echo 1 > /proc/sys/kernel/power_aware_timer_migration
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
;;
|
|
*)
|
|
panel=`cat /sys/class/graphics/fb0/modes`
|
|
if [ "${panel:5:1}" == "x" ]; then
|
|
panel=${panel:2:3}
|
|
else
|
|
panel=${panel:2:4}
|
|
fi
|
|
|
|
# Apply Scheduler and Governor settings for 8976
|
|
# SoC IDs are 266, 274, 277, 278
|
|
|
|
# HMP scheduler (big.Little cluster related) settings
|
|
echo 95 > /proc/sys/kernel/sched_upmigrate
|
|
echo 85 > /proc/sys/kernel/sched_downmigrate
|
|
|
|
echo 2 > /proc/sys/kernel/sched_window_stats_policy
|
|
echo 5 > /proc/sys/kernel/sched_ravg_hist_size
|
|
|
|
echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run
|
|
|
|
for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor
|
|
do
|
|
echo "cpufreq" > $devfreq_gov
|
|
done
|
|
|
|
for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor
|
|
do
|
|
echo "bw_hwmon" > $devfreq_gov
|
|
for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent
|
|
do
|
|
echo 20 > $cpu_io_percent
|
|
done
|
|
for cpu_guard_band in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/guard_band_mbps
|
|
do
|
|
echo 30 > $cpu_guard_band
|
|
done
|
|
done
|
|
|
|
for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent
|
|
do
|
|
echo 40 > $gpu_bimc_io_percent
|
|
done
|
|
# disable thermal & BCL core_control to update interactive gov settings
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
bcl_hotplug_mask=`cat $hotplug_mask`
|
|
echo 0 > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
|
|
echo 0 > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
|
|
# enable governor for power cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
|
|
echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
|
|
echo 691200 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# enable governor for perf cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor
|
|
echo 883200 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
echo 60000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
|
|
|
|
if [ $panel -gt 1080 ]; then
|
|
#set texture cache size for resolution greater than 1080p
|
|
setprop ro.hwui.texture_cache_size 72
|
|
fi
|
|
|
|
echo 59000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
|
|
echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
|
|
echo "1 691200:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
|
|
echo 1382400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
|
|
echo "19000 1382400:39000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
|
|
echo "85 1382400:90 1747200:80" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
|
|
# HMP Task packing settings for 8976
|
|
echo 30 > /proc/sys/kernel/sched_small_task
|
|
echo 20 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
|
|
echo 20 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
|
|
echo 20 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
|
|
echo 20 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
|
|
echo 20 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load
|
|
echo 20 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load
|
|
echo 20 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load
|
|
echo 20 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load
|
|
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
echo 1 > /sys/devices/system/cpu/cpu6/online
|
|
echo 1 > /sys/devices/system/cpu/cpu7/online
|
|
|
|
#Disable CPU retention modes for 32bit builds
|
|
ProductName=`getprop ro.product.name`
|
|
if [ "$ProductName" == "msm8952_32" ] || [ "$ProductName" == "msm8952_32_LMT" ]; then
|
|
echo N > /sys/module/lpm_levels/system/a72/cpu4/retention/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/a72/cpu5/retention/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/a72/cpu6/retention/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/a72/cpu7/retention/idle_enabled
|
|
fi
|
|
|
|
if [ `cat /sys/devices/soc0/revision` == "1.0" ]; then
|
|
# Disable l2-pc and l2-gdhs low power modes
|
|
echo N > /sys/module/lpm_levels/system/a53/a53-l2-gdhs/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/a72/a72-l2-gdhs/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/a53/a53-l2-pc/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/a72/a72-l2-pc/idle_enabled
|
|
fi
|
|
|
|
# Enable LPM Prediction
|
|
echo 1 > /sys/module/lpm_levels/parameters/lpm_prediction
|
|
|
|
# Enable Low power modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
# Disable L2 GDHS on 8976
|
|
echo N > /sys/module/lpm_levels/system/a53/a53-l2-gdhs/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/a72/a72-l2-gdhs/idle_enabled
|
|
|
|
# Enable sched guided freq control
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
|
|
echo 50000 > /proc/sys/kernel/sched_freq_inc_notify
|
|
echo 50000 > /proc/sys/kernel/sched_freq_dec_notify
|
|
|
|
# Enable core control
|
|
#for 8976
|
|
echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
|
|
echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/max_cpus
|
|
echo 68 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
|
|
echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster
|
|
|
|
# re-enable thermal & BCL core_control now
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
echo $bcl_hotplug_mask > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
|
|
# Enable timer migration to little cluster
|
|
echo 1 > /proc/sys/kernel/power_aware_timer_migration
|
|
|
|
case "$soc_id" in
|
|
"277" | "278")
|
|
# Start energy-awareness for 8976
|
|
start energy-awareness
|
|
;;
|
|
esac
|
|
|
|
#enable sched colocation and colocation inheritance
|
|
echo 130 > /proc/sys/kernel/sched_grp_upmigrate
|
|
echo 110 > /proc/sys/kernel/sched_grp_downmigrate
|
|
echo 1 > /proc/sys/kernel/sched_enable_thread_grouping
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
;;
|
|
esac
|
|
#Enable Memory Features
|
|
enable_memory_features
|
|
restorecon -R /sys/devices/system/cpu
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8953")
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/hw_platform ]; then
|
|
hw_platform=`cat /sys/devices/soc0/hw_platform`
|
|
else
|
|
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/platform_subtype_id ]; then
|
|
platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
|
|
fi
|
|
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
case "$soc_id" in
|
|
"293" | "304" | "338" | "351")
|
|
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"MTP" | "Surf" | "RCM" )
|
|
#if this directory is present, it means that a
|
|
#1200p panel is connected to the device.
|
|
dir="/sys/bus/i2c/devices/3-0038"
|
|
if [ ! -d "$dir" ]; then
|
|
start_hbtp
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
if [ $soc_id -eq "338" ]; then
|
|
case "$hw_platform" in
|
|
"QRD" )
|
|
if [ $platform_subtype_id -eq "1" ]; then
|
|
start_hbtp
|
|
fi
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
#init task load, restrict wakeups to preferred cluster
|
|
echo 15 > /proc/sys/kernel/sched_init_task_load
|
|
|
|
for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor
|
|
do
|
|
echo "cpufreq" > $devfreq_gov
|
|
done
|
|
|
|
for devfreq_gov in /sys/class/devfreq/soc:qcom,cpubw/governor
|
|
do
|
|
echo "bw_hwmon" > $devfreq_gov
|
|
for cpu_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent
|
|
do
|
|
echo 34 > $cpu_io_percent
|
|
done
|
|
for cpu_guard_band in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps
|
|
do
|
|
echo 0 > $cpu_guard_band
|
|
done
|
|
for cpu_hist_memory in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hist_memory
|
|
do
|
|
echo 20 > $cpu_hist_memory
|
|
done
|
|
for cpu_hyst_length in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_length
|
|
do
|
|
echo 10 > $cpu_hyst_length
|
|
done
|
|
for cpu_idle_mbps in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/idle_mbps
|
|
do
|
|
echo 1600 > $cpu_idle_mbps
|
|
done
|
|
for cpu_low_power_delay in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/low_power_delay
|
|
do
|
|
echo 20 > $cpu_low_power_delay
|
|
done
|
|
for cpu_low_power_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/low_power_io_percent
|
|
do
|
|
echo 34 > $cpu_low_power_io_percent
|
|
done
|
|
for cpu_mbps_zones in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/mbps_zones
|
|
do
|
|
echo "1611 3221 5859 6445 7104" > $cpu_mbps_zones
|
|
done
|
|
for cpu_sample_ms in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/sample_ms
|
|
do
|
|
echo 4 > $cpu_sample_ms
|
|
done
|
|
for cpu_up_scale in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/up_scale
|
|
do
|
|
echo 250 > $cpu_up_scale
|
|
done
|
|
for cpu_min_freq in /sys/class/devfreq/soc:qcom,cpubw/min_freq
|
|
do
|
|
echo 1611 > $cpu_min_freq
|
|
done
|
|
done
|
|
|
|
for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent
|
|
do
|
|
echo 40 > $gpu_bimc_io_percent
|
|
done
|
|
|
|
# disable thermal & BCL core_control to update interactive gov settings
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
bcl_hotplug_mask=`cat $hotplug_mask`
|
|
echo 0 > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
|
|
echo 0 > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
|
|
#if the kernel version >=4.9,use the schedutil governor
|
|
if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 9 ]; then
|
|
8953_sched_dcvs_eas
|
|
else
|
|
8953_sched_dcvs_hmp
|
|
fi
|
|
echo 652800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
echo 1 > /sys/devices/system/cpu/cpu6/online
|
|
echo 1 > /sys/devices/system/cpu/cpu7/online
|
|
|
|
# Enable low power modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
# re-enable thermal & BCL core_control now
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
echo $bcl_hotplug_mask > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
|
|
# SMP scheduler
|
|
echo 85 > /proc/sys/kernel/sched_upmigrate
|
|
echo 85 > /proc/sys/kernel/sched_downmigrate
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
;;
|
|
esac
|
|
case "$soc_id" in
|
|
"349" | "350")
|
|
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"MTP" | "Surf" | "RCM" | "QRD" )
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
|
|
for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor
|
|
do
|
|
echo "cpufreq" > $devfreq_gov
|
|
done
|
|
for cpubw in /sys/class/devfreq/*qcom,cpubw*
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 50 > $cpubw/polling_interval
|
|
echo "1611 3221 5859 6445 7104" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 34 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
# Configure DCC module to capture critical register contents when device crashes
|
|
for DCC_PATH in /sys/bus/platform/devices/*.dcc*
|
|
do
|
|
echo 0 > $DCC_PATH/enable
|
|
echo cap > $DCC_PATH/func_type
|
|
echo sram > $DCC_PATH/data_sink
|
|
echo 1 > $DCC_PATH/config_reset
|
|
|
|
# Register specifies APC CPR closed-loop settled voltage for current voltage corner
|
|
echo 0xb1d2c18 1 > $DCC_PATH/config
|
|
|
|
# Register specifies SW programmed open-loop voltage for current voltage corner
|
|
echo 0xb1d2900 1 > $DCC_PATH/config
|
|
|
|
# Register specifies APM switch settings and APM FSM state
|
|
echo 0xb1112b0 1 > $DCC_PATH/config
|
|
|
|
# Register specifies CPR mode change state and also #online cores input to CPR HW
|
|
echo 0xb018798 1 > $DCC_PATH/config
|
|
|
|
echo 1 > $DCC_PATH/enable
|
|
done
|
|
|
|
# disable thermal & BCL core_control to update interactive gov settings
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
bcl_hotplug_mask=`cat $hotplug_mask`
|
|
echo 0 > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
|
|
echo 0 > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
|
|
# configure governor settings for little cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1363200 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
#default value for hispeed_load is 90, for sdm632 it should be 85
|
|
echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
|
|
# sched_load_boost as -6 is equivalent to target load as 85.
|
|
echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
|
|
|
|
# configure governor settings for big cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
|
|
#default value for hispeed_load is 90, for sdm632 it should be 85
|
|
echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
|
|
# sched_load_boost as -6 is equivalent to target load as 85.
|
|
echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
|
|
|
|
echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 633600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
|
|
# cpuset settings
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
# choose idle CPU for top app tasks
|
|
echo 1 > /dev/stune/top-app/schedtune.prefer_idle
|
|
|
|
# re-enable thermal & BCL core_control now
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
echo $bcl_hotplug_mask > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
|
|
# Disable Core control
|
|
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
|
|
echo 0 > /sys/devices/system/cpu/cpu4/core_ctl/enable
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
echo 1 > /sys/devices/system/cpu/cpu6/online
|
|
echo 1 > /sys/devices/system/cpu/cpu7/online
|
|
|
|
# Enable low power modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 76 > /proc/sys/kernel/sched_downmigrate
|
|
echo 86 > /proc/sys/kernel/sched_upmigrate
|
|
echo 80 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 90 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
|
|
# Enable min frequency adjustment for big cluster
|
|
if [ -f /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster ]; then
|
|
echo "4-7" > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster
|
|
fi
|
|
echo 1 > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_adjust
|
|
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8937")
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/hw_platform ]; then
|
|
hw_platform=`cat /sys/devices/soc0/hw_platform`
|
|
else
|
|
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
|
|
fi
|
|
if [ -f /sys/devices/soc0/platform_subtype_id ]; then
|
|
platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
|
|
fi
|
|
|
|
# Socid 386 = Pukeena
|
|
case "$soc_id" in
|
|
"303" | "307" | "308" | "309" | "320" | "386" | "436")
|
|
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"MTP" )
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
|
|
case "$hw_platform" in
|
|
"Surf" | "RCM" )
|
|
if [ $platform_subtype_id -ne "4" ]; then
|
|
start_hbtp
|
|
fi
|
|
;;
|
|
esac
|
|
# Apply Scheduler and Governor settings for 8917 / 8920
|
|
|
|
echo 20000000 > /proc/sys/kernel/sched_ravg_window
|
|
|
|
#disable sched_boost in 8917
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# core_ctl is not needed for 8917. Disable it.
|
|
disable_core_ctl
|
|
|
|
for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor
|
|
do
|
|
echo "cpufreq" > $devfreq_gov
|
|
done
|
|
|
|
for devfreq_gov in /sys/class/devfreq/soc:qcom,cpubw/governor
|
|
do
|
|
echo "bw_hwmon" > $devfreq_gov
|
|
for cpu_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent
|
|
do
|
|
echo 20 > $cpu_io_percent
|
|
done
|
|
for cpu_guard_band in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps
|
|
do
|
|
echo 30 > $cpu_guard_band
|
|
done
|
|
done
|
|
|
|
for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent
|
|
do
|
|
echo 40 > $gpu_bimc_io_percent
|
|
done
|
|
|
|
# disable thermal core_control to update interactive gov settings
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 9 ]; then
|
|
8917_sched_dcvs_eas
|
|
else
|
|
8917_sched_dcvs_hmp
|
|
fi
|
|
echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
# re-enable thermal core_control now
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
# Disable L2-GDHS low power modes
|
|
echo N > /sys/module/lpm_levels/perf/perf-l2-gdhs/idle_enabled
|
|
echo N > /sys/module/lpm_levels/perf/perf-l2-gdhs/suspend_enabled
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
|
|
# Enable low power modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
# Set rps mask
|
|
echo 2 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus
|
|
|
|
# Enable dynamic clock gating
|
|
echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating
|
|
# Enable timer migration to little cluster
|
|
echo 1 > /proc/sys/kernel/power_aware_timer_migration
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
case "$soc_id" in
|
|
"294" | "295" | "313" )
|
|
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"MTP" | "Surf" | "RCM" )
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
|
|
# Apply Scheduler and Governor settings for 8937/8940
|
|
|
|
# HMP scheduler settings
|
|
echo 3 > /proc/sys/kernel/sched_window_stats_policy
|
|
echo 3 > /proc/sys/kernel/sched_ravg_hist_size
|
|
echo 20000000 > /proc/sys/kernel/sched_ravg_window
|
|
|
|
#disable sched_boost in 8937
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor
|
|
do
|
|
echo "cpufreq" > $devfreq_gov
|
|
done
|
|
|
|
for devfreq_gov in /sys/class/devfreq/soc:qcom,cpubw/governor
|
|
do
|
|
echo "bw_hwmon" > $devfreq_gov
|
|
for cpu_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent
|
|
do
|
|
echo 20 > $cpu_io_percent
|
|
done
|
|
for cpu_guard_band in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps
|
|
do
|
|
echo 30 > $cpu_guard_band
|
|
done
|
|
done
|
|
|
|
for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent
|
|
do
|
|
echo 40 > $gpu_bimc_io_percent
|
|
done
|
|
|
|
# disable thermal core_control to update interactive gov and core_ctl settings
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 9 ]; then
|
|
8937_sched_dcvs_eas
|
|
else
|
|
8937_sched_dcvs_hmp
|
|
fi
|
|
echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
# Disable L2-GDHS low power modes
|
|
echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/suspend_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/suspend_enabled
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
echo 1 > /sys/devices/system/cpu/cpu6/online
|
|
echo 1 > /sys/devices/system/cpu/cpu7/online
|
|
|
|
# Enable low power modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
# HMP scheduler (big.Little cluster related) settings
|
|
echo 93 > /proc/sys/kernel/sched_upmigrate
|
|
echo 83 > /proc/sys/kernel/sched_downmigrate
|
|
|
|
# Enable core control
|
|
echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus
|
|
echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
|
|
echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
|
|
|
|
# re-enable thermal core_control
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
# Enable dynamic clock gating
|
|
echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating
|
|
# Enable timer migration to little cluster
|
|
echo 1 > /proc/sys/kernel/power_aware_timer_migration
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
;;
|
|
*)
|
|
|
|
;;
|
|
esac
|
|
|
|
case "$soc_id" in
|
|
"354" | "364" | "353" | "363" )
|
|
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"MTP" | "Surf" | "RCM" | "QRD" )
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
|
|
# Apply settings for sdm429/sda429/sdm439/sda439
|
|
|
|
for cpubw in /sys/class/devfreq/*qcom,mincpubw*
|
|
do
|
|
echo "cpufreq" > $cpubw/governor
|
|
done
|
|
|
|
for cpubw in /sys/class/devfreq/*qcom,cpubw*
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 20 > $cpubw/bw_hwmon/io_percent
|
|
echo 30 > $cpubw/bw_hwmon/guard_band_mbps
|
|
done
|
|
|
|
for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent
|
|
do
|
|
echo 40 > $gpu_bimc_io_percent
|
|
done
|
|
|
|
case "$soc_id" in
|
|
"353" | "363" )
|
|
# Apply settings for sdm439/sda439
|
|
# configure schedutil governor settings
|
|
# enable governor for perf cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
|
|
#set the hispeed_freq
|
|
echo 1497600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
|
|
echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
# sched_load_boost as -6 is equivalent to target load as 85.
|
|
echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
|
|
|
|
## enable governor for power cluster
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us
|
|
|
|
#set the hispeed_freq
|
|
echo 998400 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
|
|
echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
|
|
echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
# sched_load_boost as -6 is equivalent to target load as 85.
|
|
echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
|
|
|
|
# EAS scheduler (big.Little cluster related) settings
|
|
echo 93 > /proc/sys/kernel/sched_upmigrate
|
|
echo 83 > /proc/sys/kernel/sched_downmigrate
|
|
echo 140 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 120 > /proc/sys/kernel/sched_group_downmigrate
|
|
|
|
# cpuset settings
|
|
#echo 0-3 > /dev/cpuset/background/cpus
|
|
#echo 0-3 > /dev/cpuset/system-background/cpus
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
echo 1 > /sys/devices/system/cpu/cpu6/online
|
|
echo 1 > /sys/devices/system/cpu/cpu7/online
|
|
|
|
# Enable core control
|
|
echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus
|
|
echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
|
|
echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
|
|
|
|
# Big cluster min frequency adjust settings
|
|
if [ -f /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster ]; then
|
|
echo "0-3" > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster
|
|
fi
|
|
echo 1305600 > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_floor
|
|
;;
|
|
*)
|
|
# Apply settings for sdm429/sda429
|
|
# configure schedutil governor settings
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
|
|
#set the hispeed_freq
|
|
echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
|
|
echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
# sched_load_boost as -6 is equivalent to target load as 85.
|
|
echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
;;
|
|
esac
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
#disable sched_boost
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Disable L2-GDHS low power modes
|
|
echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/suspend_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/suspend_enabled
|
|
|
|
# Enable low power modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
case "$soc_id" in
|
|
"353" | "363" )
|
|
echo 1 > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_adjust
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$soc_id" in
|
|
"386" | "436")
|
|
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"QRD" )
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"sdm660")
|
|
|
|
# Set the default IRQ affinity to the primary cluster. When a
|
|
# CPU is isolated/hotplugged, the IRQ affinity is adjusted
|
|
# to one of the CPU from the default IRQ affinity mask.
|
|
echo f > /proc/irq/default_smp_affinity
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/hw_platform ]; then
|
|
hw_platform=`cat /sys/devices/soc0/hw_platform`
|
|
else
|
|
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
|
|
fi
|
|
|
|
panel=`cat /sys/class/graphics/fb0/modes`
|
|
if [ "${panel:5:1}" == "x" ]; then
|
|
panel=${panel:2:3}
|
|
else
|
|
panel=${panel:2:4}
|
|
fi
|
|
|
|
if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -le 14 ]; then
|
|
if [ $panel -gt 1080 ]; then
|
|
echo 2 > /proc/sys/kernel/sched_window_stats_policy
|
|
echo 5 > /proc/sys/kernel/sched_ravg_hist_size
|
|
else
|
|
echo 3 > /proc/sys/kernel/sched_window_stats_policy
|
|
echo 3 > /proc/sys/kernel/sched_ravg_hist_size
|
|
fi
|
|
fi
|
|
#Apply settings for sdm660, sdm636,sda636
|
|
case "$soc_id" in
|
|
"317" | "324" | "325" | "326" | "345" | "346" )
|
|
|
|
echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
|
|
echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
|
|
echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster
|
|
echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 96 > /proc/sys/kernel/sched_upmigrate
|
|
echo 90 > /proc/sys/kernel/sched_downmigrate
|
|
echo 140 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 120 > /proc/sys/kernel/sched_group_downmigrate
|
|
|
|
# cpuset settings
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
|
|
#if the kernel version >=4.14,use the schedutil governor
|
|
if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 14 ]; then
|
|
sdm660_sched_schedutil_dcvs
|
|
else
|
|
sdm660_sched_interactive_dcvs
|
|
fi
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
# enable LPM
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
# Start cdsprpcd only for sdm660 and disable for sdm630
|
|
start vendor.cdsprpcd
|
|
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"MTP" | "Surf" | "RCM" | "QRD" )
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
#Apply settings for sdm630 and Tahaa
|
|
case "$soc_id" in
|
|
"318" | "327" | "385" )
|
|
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"MTP" | "Surf" | "RCM" | "QRD" )
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 85 > /proc/sys/kernel/sched_upmigrate
|
|
echo 85 > /proc/sys/kernel/sched_downmigrate
|
|
echo 900 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 900 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 0 > /proc/sys/kernel/sched_select_prev_cpu_us
|
|
echo 400000 > /proc/sys/kernel/sched_freq_inc_notify
|
|
echo 400000 > /proc/sys/kernel/sched_freq_dec_notify
|
|
echo 3 > /proc/sys/kernel/sched_spill_nr_run
|
|
|
|
#init task load, restrict wakeups to preferred cluster
|
|
echo 15 > /proc/sys/kernel/sched_init_task_load
|
|
echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill
|
|
echo 50000 > /proc/sys/kernel/sched_short_burst_ns
|
|
|
|
# cpuset settings
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
|
|
# disable thermal bcl hotplug to switch governor
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
bcl_hotplug_mask=`cat $hotplug_mask`
|
|
echo 0 > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
|
|
echo 0 > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
|
|
# online CPU0
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
# configure governor settings for Big cluster(CPU0 to CPU3)
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
|
|
echo "19000 1344000:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
|
|
echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
|
|
echo 1344000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
|
|
echo "85 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
|
|
echo 39000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
|
|
echo 787200 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
|
|
|
|
# online CPU4
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
# configure governor settings for Little cluster(CPU4 to CPU7)
|
|
echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
|
|
echo "19000 1094400:39000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
|
|
echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
|
|
echo 1094400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
|
|
echo "85 1094400:80" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
|
|
echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
|
|
echo 614400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/ignore_hispeed_on_notif
|
|
|
|
# bring all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
echo 1 > /sys/devices/system/cpu/cpu6/online
|
|
echo 1 > /sys/devices/system/cpu/cpu7/online
|
|
|
|
# configure LPM
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu0/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu1/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu2/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu3/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu4/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu5/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu6/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu7/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled
|
|
# enable LPM
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
# re-enable thermal and BCL hotplug
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
echo $bcl_hotplug_mask > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
# Enable bus-dcvs
|
|
for cpubw in /sys/class/devfreq/*qcom,cpubw*
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 50 > $cpubw/polling_interval
|
|
echo 762 > $cpubw/min_freq
|
|
echo "1525 3143 4173 5195 5859 7759 9887 10327" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 85 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 100 > $cpubw/bw_hwmon/decay_rate
|
|
echo 50 > $cpubw/bw_hwmon/bw_step
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps
|
|
echo 50 > $cpubw/bw_hwmon/low_power_io_percent
|
|
echo 20 > $cpubw/bw_hwmon/low_power_delay
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
|
|
echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"sdm710")
|
|
|
|
#Apply settings for sdm710
|
|
# Set the default IRQ affinity to the silver cluster. When a
|
|
# CPU is isolated/hotplugged, the IRQ affinity is adjusted
|
|
# to one of the CPU from the default IRQ affinity mask.
|
|
echo 3f > /proc/irq/default_smp_affinity
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/hw_platform ]; then
|
|
hw_platform=`cat /sys/devices/soc0/hw_platform`
|
|
else
|
|
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
|
|
fi
|
|
|
|
case "$soc_id" in
|
|
"336" | "337" | "347" | "360" | "393" )
|
|
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"MTP" | "Surf" | "RCM" | "QRD" )
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
|
|
# Core control parameters on silver
|
|
echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
|
|
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
|
|
echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 96 > /proc/sys/kernel/sched_upmigrate
|
|
echo 90 > /proc/sys/kernel/sched_downmigrate
|
|
echo 140 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 120 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
|
|
# configure governor settings for little cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us
|
|
echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# configure governor settings for big cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/rate_limit_us
|
|
echo 1344000 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
|
|
echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
|
|
|
|
# sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
|
|
echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
|
|
echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
|
|
|
|
echo "0:1209600" > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
# Enable bus-dcvs
|
|
for cpubw in /sys/class/devfreq/*qcom,cpubw*
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 50 > $cpubw/polling_interval
|
|
echo "1144 1720 2086 2929 3879 5931 6881" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 68 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
#Enable mem_latency governor for DDR scaling
|
|
for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
|
|
#Enable mem_latency governor for L3 scaling
|
|
for memlat in /sys/class/devfreq/*qcom,l3-cpu*
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
|
|
#Enable userspace governor for L3 cdsp nodes
|
|
for l3cdsp in /sys/class/devfreq/*qcom,l3-cdsp*
|
|
do
|
|
echo "userspace" > $l3cdsp/governor
|
|
chown -h system $l3cdsp/userspace/set_freq
|
|
done
|
|
|
|
echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
|
|
|
|
# Disable CPU Retention
|
|
echo N > /sys/module/lpm_levels/L3/cpu0/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu1/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu2/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu3/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu4/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu5/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu6/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu7/ret/idle_enabled
|
|
|
|
# cpuset parameters
|
|
echo 0-5 > /dev/cpuset/background/cpus
|
|
echo 0-5 > /dev/cpuset/system-background/cpus
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Turn on sleep modes.
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"trinket")
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
case "$soc_id" in
|
|
"394" )
|
|
|
|
# Core control parameters on big
|
|
echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
|
|
echo 40 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
|
|
echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
|
|
echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster
|
|
echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 67 > /proc/sys/kernel/sched_downmigrate
|
|
echo 77 > /proc/sys/kernel/sched_upmigrate
|
|
echo 85 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
|
|
# cpuset settings
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
|
|
|
|
# configure governor settings for little cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# configure governor settings for big cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
|
|
echo 1056000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
|
|
# sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
|
|
echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
|
|
echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
|
|
echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
# Enable bus-dcvs
|
|
ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type`
|
|
ddr_type4="07"
|
|
ddr_type3="05"
|
|
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 762 > $cpubw/min_freq
|
|
if [ ${ddr_type:4:2} == $ddr_type4 ]; then
|
|
# LPDDR4
|
|
echo "2288 3440 4173 5195 5859 7759 10322 11863 13763" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 85 > $cpubw/bw_hwmon/io_percent
|
|
fi
|
|
if [ ${ddr_type:4:2} == $ddr_type3 ]; then
|
|
# LPDDR3
|
|
echo "1525 3440 5195 5859 7102" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 34 > $cpubw/bw_hwmon/io_percent
|
|
fi
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 90 > $cpubw/bw_hwmon/decay_rate
|
|
echo 190 > $cpubw/bw_hwmon/bw_step
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
echo 50 > $cpubw/polling_interval
|
|
done
|
|
|
|
done
|
|
|
|
# memlat specific settings are moved to seperate file under
|
|
# device/target specific folder
|
|
setprop vendor.dcvs.prop 1
|
|
|
|
# colcoation v3 disabled
|
|
echo 0 > /proc/sys/kernel/sched_min_task_util_for_boost
|
|
echo 0 > /proc/sys/kernel/sched_min_task_util_for_colocation
|
|
echo 0 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Turn on sleep modes.
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"sm6150")
|
|
|
|
#Apply settings for sm6150
|
|
# Set the default IRQ affinity to the silver cluster. When a
|
|
# CPU is isolated/hotplugged, the IRQ affinity is adjusted
|
|
# to one of the CPU from the default IRQ affinity mask.
|
|
echo 3f > /proc/irq/default_smp_affinity
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
case "$soc_id" in
|
|
"355" | "369" | "377" | "380" | "384" )
|
|
target_type=`getprop ro.hardware.type`
|
|
if [ "$target_type" == "automotive" ]; then
|
|
# update frequencies
|
|
configure_sku_parameters
|
|
sku_identified=`getprop vendor.sku_identified`
|
|
else
|
|
sku_identified=0
|
|
fi
|
|
|
|
# Core control parameters on silver
|
|
echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
|
|
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
|
|
echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
|
|
echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable
|
|
|
|
|
|
# Setting b.L scheduler parameters
|
|
# default sched up and down migrate values are 90 and 85
|
|
echo 65 > /proc/sys/kernel/sched_downmigrate
|
|
echo 71 > /proc/sys/kernel/sched_upmigrate
|
|
# default sched up and down migrate values are 100 and 95
|
|
echo 85 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
|
|
# colocation v3 settings
|
|
echo 740000 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz
|
|
|
|
|
|
# configure governor settings for little cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
if [ $sku_identified != 1 ]; then
|
|
echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
fi
|
|
|
|
# configure governor settings for big cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1209600 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
|
|
if [ $sku_identified != 1 ]; then
|
|
echo 768000 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
|
|
fi
|
|
|
|
# sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
|
|
echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
|
|
echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
|
|
|
|
echo "0:1209600" > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
|
|
# performance tuning
|
|
chmod 0664 /sys/class/devfreq/soc:qcom,cpu6-cpu-ddr-latfloor/min_freq
|
|
chmod 0664 /sys/class/devfreq/soc:qcom,cpu6-cpu-ddr-latfloor/max_freq
|
|
chmod 0664 /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/min_freq
|
|
chmod 0664 /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/max_freq
|
|
chmod 0664 /sys/class/devfreq/soc:qcom,cpu6-cpu-l3-lat/min_freq
|
|
chmod 0664 /sys/class/devfreq/soc:qcom,cpu6-cpu-l3-lat/max_freq
|
|
|
|
chown system.system /sys/class/devfreq/soc:qcom,cpu6-cpu-ddr-latfloor/min_freq
|
|
chown system.system /sys/class/devfreq/soc:qcom,cpu6-cpu-ddr-latfloor/max_freq
|
|
chown system.system /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/min_freq
|
|
chown system.system /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/max_freq
|
|
chown system.system /sys/class/devfreq/soc:qcom,cpu6-cpu-l3-lat/min_freq
|
|
chown system.system /sys/class/devfreq/soc:qcom,cpu6-cpu-l3-lat/max_freq
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
# Enable bus-dcvs
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 68 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
echo 50 > $cpubw/polling_interval
|
|
done
|
|
|
|
for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $llccbw/governor
|
|
echo "1144 1720 2086 2929 3879 5931 6881" > $llccbw/bw_hwmon/mbps_zones
|
|
echo 4 > $llccbw/bw_hwmon/sample_ms
|
|
echo 68 > $llccbw/bw_hwmon/io_percent
|
|
echo 20 > $llccbw/bw_hwmon/hist_memory
|
|
echo 0 > $llccbw/bw_hwmon/hyst_length
|
|
echo 80 > $llccbw/bw_hwmon/down_thres
|
|
echo 0 > $llccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $llccbw/bw_hwmon/up_scale
|
|
echo 1600 > $llccbw/bw_hwmon/idle_mbps
|
|
echo 40 > $llccbw/polling_interval
|
|
done
|
|
done
|
|
|
|
# memlat specific settings are moved to seperate file under
|
|
# device/target specific folder
|
|
setprop vendor.dcvs.prop 1
|
|
|
|
# cpuset parameters
|
|
echo 0-5 > /dev/cpuset/background/cpus
|
|
echo 0-5 > /dev/cpuset/system-background/cpus
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Turn on sleep modes.
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
;;
|
|
esac
|
|
|
|
#Apply settings for moorea
|
|
case "$soc_id" in
|
|
"365" | "366" )
|
|
|
|
# Core control parameters on silver
|
|
echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
|
|
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
|
|
echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
|
|
echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable
|
|
|
|
# Setting b.L scheduler parameters
|
|
# default sched up and down migrate values are 71 and 65
|
|
echo 65 > /proc/sys/kernel/sched_downmigrate
|
|
echo 71 > /proc/sys/kernel/sched_upmigrate
|
|
# default sched up and down migrate values are 100 and 95
|
|
echo 85 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
|
|
#colocation v3 settings
|
|
echo 740000 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz
|
|
|
|
# configure governor settings for little cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# configure governor settings for big cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1324600 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
|
|
echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
|
|
|
|
# sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
|
|
echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
|
|
echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
|
|
|
|
# configure governor permissions for little cluster
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_load
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_load
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
|
|
|
|
# configure governor permissions for big cluster
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_freq
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_load
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy6/schedutil/pl
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_freq
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_load
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy6/schedutil/pl
|
|
|
|
echo "0:1248000" > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
# Enable bus-dcvs
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 68 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
echo 50 > $cpubw/polling_interval
|
|
done
|
|
|
|
for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $llccbw/governor
|
|
echo "1144 1720 2086 2929 3879 5931 6881" > $llccbw/bw_hwmon/mbps_zones
|
|
echo 4 > $llccbw/bw_hwmon/sample_ms
|
|
echo 68 > $llccbw/bw_hwmon/io_percent
|
|
echo 20 > $llccbw/bw_hwmon/hist_memory
|
|
echo 0 > $llccbw/bw_hwmon/hyst_length
|
|
echo 80 > $llccbw/bw_hwmon/down_thres
|
|
echo 0 > $llccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $llccbw/bw_hwmon/up_scale
|
|
echo 1600 > $llccbw/bw_hwmon/idle_mbps
|
|
echo 40 > $llccbw/polling_interval
|
|
done
|
|
|
|
for npubw in $device/*npu-npu-ddr-bw/devfreq/*npu-npu-ddr-bw
|
|
do
|
|
echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
echo "bw_hwmon" > $npubw/governor
|
|
echo "1144 1720 2086 2929 3879 5931 6881" > $npubw/bw_hwmon/mbps_zones
|
|
echo 4 > $npubw/bw_hwmon/sample_ms
|
|
echo 80 > $npubw/bw_hwmon/io_percent
|
|
echo 20 > $npubw/bw_hwmon/hist_memory
|
|
echo 10 > $npubw/bw_hwmon/hyst_length
|
|
echo 30 > $npubw/bw_hwmon/down_thres
|
|
echo 0 > $npubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $npubw/bw_hwmon/up_scale
|
|
echo 0 > $npubw/bw_hwmon/idle_mbps
|
|
echo 40 > $npubw/polling_interval
|
|
echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
done
|
|
done
|
|
|
|
# memlat specific settings are moved to seperate file under
|
|
# device/target specific folder
|
|
setprop vendor.dcvs.prop 1
|
|
|
|
# cpuset parameters
|
|
echo 0-5 > /dev/cpuset/background/cpus
|
|
echo 0-5 > /dev/cpuset/system-background/cpus
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Turn on sleep modes.
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
;;
|
|
esac
|
|
|
|
# configure governor permissions for little cluster
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_load
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_load
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
|
|
|
|
# configure governor permissions for big cluster
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_freq
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_load
|
|
chown root.system /sys/devices/system/cpu/cpufreq/policy6/schedutil/pl
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_freq
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_load
|
|
chmod 0664 /sys/devices/system/cpu/cpufreq/policy6/schedutil/pl
|
|
|
|
# Change power debug parameters permission
|
|
chown radio.system /sys/module/qpnp_power_on/parameters/reset_enabled
|
|
chown radio.system /sys/module/qpnp_power_on/parameters/wake_enabled
|
|
chown radio.system /sys/module/lpm_levels/parameters/secdebug
|
|
chown radio.system /sys/module/qpnp_power_on/parameters/pmic_dump
|
|
chmod 664 /sys/module/qpnp_power_on/parameters/reset_enabled
|
|
chmod 664 /sys/module/qpnp_power_on/parameters/wake_enabled
|
|
chmod 664 /sys/module/lpm_levels/parameters/secdebug
|
|
chmod 664 /sys/module/qpnp_power_on/parameters/pmic_dump
|
|
chown radio.system /sys/power/volkey_wakeup
|
|
chmod 0660 /sys/power/volkey_wakeup
|
|
|
|
# Volume down key(connect to PMIC RESIN) wakeup enable/disable
|
|
echo 0 > /sys/power/volkey_wakeup
|
|
;;
|
|
esac
|
|
|
|
|
|
case "$target" in
|
|
"lito")
|
|
|
|
#Apply settings for lito
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
fi
|
|
|
|
case "$soc_id" in
|
|
"400" | "440" | "476" )
|
|
# Core control parameters on silver
|
|
echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
|
|
echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
|
|
|
|
# Disable Core control on gold, prime
|
|
echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable
|
|
echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/enable
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 65 85 > /proc/sys/kernel/sched_downmigrate
|
|
echo 71 95 > /proc/sys/kernel/sched_upmigrate
|
|
echo 85 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_ns
|
|
echo 0 > /proc/sys/kernel/sched_coloc_busy_hysteresis_enable_cpus
|
|
echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_max_ms
|
|
|
|
# disable unfiltering
|
|
echo 20000000 > /proc/sys/kernel/sched_task_unfilter_period
|
|
echo 1 > /proc/sys/kernel/sched_task_unfilter_nr_windows
|
|
|
|
# configure governor settings for silver cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
|
|
echo 1228800 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
|
|
echo 576000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
|
|
echo 650000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/rtg_boost_freq
|
|
|
|
# configure governor settings for gold cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/down_rate_limit_us
|
|
echo 1228800 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_freq
|
|
echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
|
|
echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/pl
|
|
echo 672000 > /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/rtg_boost_freq
|
|
|
|
# configure governor settings for gold+ cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/down_rate_limit_us
|
|
echo 1228800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
|
|
echo 85 > /sys/devices/system/cpu/cpu7/cpufreq/schedutil/hispeed_load
|
|
echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl
|
|
echo 672000 > /sys/devices/system/cpu/cpufreq/policy7/scaling_min_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/rtg_boost_freq
|
|
|
|
# colocation v3 settings
|
|
echo 51 > /proc/sys/kernel/sched_min_task_util_for_boost
|
|
echo 35 > /proc/sys/kernel/sched_min_task_util_for_colocation
|
|
|
|
# Enable conservative pl
|
|
echo 1 > /proc/sys/kernel/sched_conservative_pl
|
|
|
|
echo "0:1228800" > /sys/devices/system/cpu/cpu_boost/input_boost_freq
|
|
echo 120 > /sys/devices/system/cpu/cpu_boost/input_boost_ms
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
if [ `cat /sys/devices/soc0/revision` == "2.0" ]; then
|
|
# r2.0 related changes
|
|
echo "0:1075200" > /sys/devices/system/cpu/cpu_boost/input_boost_freq
|
|
echo 610000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/rtg_boost_freq
|
|
echo 1075200 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
|
|
echo 1152000 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_freq
|
|
echo 1401600 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
|
|
echo 614400 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
|
|
echo 652800 > /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq
|
|
echo 806400 > /sys/devices/system/cpu/cpufreq/policy7/scaling_min_freq
|
|
echo 83 > /proc/sys/kernel/sched_asym_cap_sibling_freq_match_pct
|
|
fi
|
|
|
|
# Enable bus-dcvs
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo "2288 4577 7110 9155 12298 14236 16265" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 68 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
echo 50 > $cpubw/polling_interval
|
|
done
|
|
|
|
for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $llccbw/governor
|
|
echo "1144 1720 2086 2929 3879 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones
|
|
echo 4 > $llccbw/bw_hwmon/sample_ms
|
|
echo 68 > $llccbw/bw_hwmon/io_percent
|
|
echo 20 > $llccbw/bw_hwmon/hist_memory
|
|
echo 0 > $llccbw/bw_hwmon/hyst_length
|
|
echo 80 > $llccbw/bw_hwmon/down_thres
|
|
echo 0 > $llccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $llccbw/bw_hwmon/up_scale
|
|
echo 1600 > $llccbw/bw_hwmon/idle_mbps
|
|
echo 50 > $llccbw/polling_interval
|
|
done
|
|
|
|
for npubw in $device/*npu*-ddr-bw/devfreq/*npu*-ddr-bw
|
|
do
|
|
echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
echo "bw_hwmon" > $npubw/governor
|
|
echo "1144 1720 2086 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones
|
|
echo 4 > $npubw/bw_hwmon/sample_ms
|
|
echo 80 > $npubw/bw_hwmon/io_percent
|
|
echo 20 > $npubw/bw_hwmon/hist_memory
|
|
echo 10 > $npubw/bw_hwmon/hyst_length
|
|
echo 30 > $npubw/bw_hwmon/down_thres
|
|
echo 0 > $npubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $npubw/bw_hwmon/up_scale
|
|
echo 0 > $npubw/bw_hwmon/idle_mbps
|
|
echo 40 > $npubw/polling_interval
|
|
echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
done
|
|
|
|
for npullccbw in $device/*npu*-llcc-bw/devfreq/*npu*-llcc-bw
|
|
do
|
|
echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
echo "bw_hwmon" > $npullccbw/governor
|
|
echo "2288 4577 7110 9155 12298 14236 16265" > $npullccbw/bw_hwmon/mbps_zones
|
|
echo 4 > $npullccbw/bw_hwmon/sample_ms
|
|
echo 100 > $npullccbw/bw_hwmon/io_percent
|
|
echo 20 > $npullccbw/bw_hwmon/hist_memory
|
|
echo 10 > $npullccbw/bw_hwmon/hyst_length
|
|
echo 30 > $npullccbw/bw_hwmon/down_thres
|
|
echo 0 > $npullccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $npullccbw/bw_hwmon/up_scale
|
|
echo 40 > $npullccbw/polling_interval
|
|
echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
done
|
|
done
|
|
# memlat specific settings are moved to seperate file under
|
|
# device/target specific folder
|
|
setprop vendor.dcvs.prop 0
|
|
setprop vendor.dcvs.prop 1
|
|
|
|
# cpuset parameters
|
|
echo 0-5 > /dev/cpuset/background/cpus
|
|
echo 0-5 > /dev/cpuset/system-background/cpus
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Turn on sleep modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
;;
|
|
esac
|
|
|
|
#Apply settings for lagoon
|
|
case "$soc_id" in
|
|
"434" | "459" )
|
|
|
|
# Core control parameters on silver
|
|
echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
|
|
echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
|
|
|
|
# Disable Core control on gold
|
|
echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable
|
|
|
|
|
|
# disable unfiltering
|
|
echo 20000000 > /proc/sys/kernel/sched_task_unfilter_period
|
|
|
|
# Setting b.L scheduler parameters
|
|
# default sched up and down migrate values are 95 and 85
|
|
echo 65 > /proc/sys/kernel/sched_downmigrate
|
|
echo 71 > /proc/sys/kernel/sched_upmigrate
|
|
|
|
# default sched up and down migrate values are 100 and 95
|
|
echo 85 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_ns
|
|
echo 0 > /proc/sys/kernel/sched_coloc_busy_hysteresis_enable_cpus
|
|
echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_max_ms
|
|
|
|
# configure governor settings for little cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# configure governor settings for big cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1248000 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
|
|
echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
|
|
|
|
#colocation v3 settings
|
|
echo 740000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/rtg_boost_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/rtg_boost_freq
|
|
echo 51 > /proc/sys/kernel/sched_min_task_util_for_boost
|
|
|
|
# sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
|
|
echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
|
|
echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
|
|
|
|
# Enable conservative pl
|
|
echo 1 > /proc/sys/kernel/sched_conservative_pl
|
|
|
|
echo "0:1248000" > /sys/devices/system/cpu/cpu_boost/input_boost_freq
|
|
echo 120 > /sys/devices/system/cpu/cpu_boost/input_boost_ms
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
# Enable bus-dcvs
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 68 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
echo 50 > $cpubw/polling_interval
|
|
done
|
|
|
|
for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $llccbw/governor
|
|
echo "1144 1720 2086 2929 3879 5931 6881 8137" > $llccbw/bw_hwmon/mbps_zones
|
|
echo 4 > $llccbw/bw_hwmon/sample_ms
|
|
echo 68 > $llccbw/bw_hwmon/io_percent
|
|
echo 20 > $llccbw/bw_hwmon/hist_memory
|
|
echo 0 > $llccbw/bw_hwmon/hyst_length
|
|
echo 80 > $llccbw/bw_hwmon/down_thres
|
|
echo 0 > $llccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $llccbw/bw_hwmon/up_scale
|
|
echo 1600 > $llccbw/bw_hwmon/idle_mbps
|
|
echo 40 > $llccbw/polling_interval
|
|
done
|
|
|
|
for npubw in $device/*npu*-ddr-bw/devfreq/*npu*-ddr-bw
|
|
do
|
|
echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
echo "bw_hwmon" > $npubw/governor
|
|
echo "1144 1720 2086 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones
|
|
echo 4 > $npubw/bw_hwmon/sample_ms
|
|
echo 80 > $npubw/bw_hwmon/io_percent
|
|
echo 20 > $npubw/bw_hwmon/hist_memory
|
|
echo 10 > $npubw/bw_hwmon/hyst_length
|
|
echo 30 > $npubw/bw_hwmon/down_thres
|
|
echo 0 > $npubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $npubw/bw_hwmon/up_scale
|
|
echo 0 > $npubw/bw_hwmon/idle_mbps
|
|
echo 40 > $npubw/polling_interval
|
|
echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
done
|
|
|
|
for npullccbw in $device/*npu*-llcc-bw/devfreq/*npu*-llcc-bw
|
|
do
|
|
echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
echo "bw_hwmon" > $npullccbw/governor
|
|
echo "2288 4577 7110 9155 12298 14236 16265" > $npullccbw/bw_hwmon/mbps_zones
|
|
echo 4 > $npullccbw/bw_hwmon/sample_ms
|
|
echo 100 > $npullccbw/bw_hwmon/io_percent
|
|
echo 20 > $npullccbw/bw_hwmon/hist_memory
|
|
echo 10 > $npullccbw/bw_hwmon/hyst_length
|
|
echo 30 > $npullccbw/bw_hwmon/down_thres
|
|
echo 0 > $npullccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $npullccbw/bw_hwmon/up_scale
|
|
echo 40 > $npullccbw/polling_interval
|
|
echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
done
|
|
done
|
|
# memlat specific settings are moved to seperate file under
|
|
# device/target specific folder
|
|
setprop vendor.dcvs.prop 1
|
|
|
|
# cpuset parameters
|
|
echo 0-5 > /dev/cpuset/background/cpus
|
|
echo 0-5 > /dev/cpuset/system-background/cpus
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Turn off sleep modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
;;
|
|
esac
|
|
esac
|
|
|
|
case "$target" in
|
|
"bengal")
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
case "$soc_id" in
|
|
"417" | "420" | "444" | "445" | "469" | "470" )
|
|
|
|
# Core control is temporarily disabled till bring up
|
|
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
|
|
echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
|
|
# Core control parameters on big
|
|
echo 40 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
|
|
echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
|
|
echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 67 > /proc/sys/kernel/sched_downmigrate
|
|
echo 77 > /proc/sys/kernel/sched_upmigrate
|
|
echo 85 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
|
|
# cpuset settings
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
|
|
|
|
# configure governor settings for little cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rtg_boost_freq
|
|
|
|
# configure governor settings for big cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
|
|
echo 1056000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/rtg_boost_freq
|
|
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
|
|
# sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
|
|
echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
|
|
echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
|
|
echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
# Enable bus-dcvs
|
|
ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type`
|
|
ddr_type4="07"
|
|
ddr_type3="05"
|
|
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 50 > $cpubw/polling_interval
|
|
echo 762 > $cpubw/min_freq
|
|
if [ ${ddr_type:4:2} == $ddr_type4 ]; then
|
|
# LPDDR4
|
|
echo "2288 3440 4173 5195 5859 7759 10322 11863 13763" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 85 > $cpubw/bw_hwmon/io_percent
|
|
fi
|
|
if [ ${ddr_type:4:2} == $ddr_type3 ]; then
|
|
# LPDDR3
|
|
echo "1525 3440 5195 5859 7102" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 34 > $cpubw/bw_hwmon/io_percent
|
|
fi
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 90 > $cpubw/bw_hwmon/decay_rate
|
|
echo 190 > $cpubw/bw_hwmon/bw_step
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
done
|
|
# memlat specific settings are moved to seperate file under
|
|
# device/target specific folder
|
|
setprop vendor.dcvs.prop 1
|
|
|
|
# colcoation v3 disabled
|
|
echo 0 > /proc/sys/kernel/sched_min_task_util_for_boost
|
|
echo 0 > /proc/sys/kernel/sched_min_task_util_for_colocation
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Turn on sleep modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
;;
|
|
esac
|
|
|
|
# Scuba perf/power tunings
|
|
case "$soc_id" in
|
|
"441" )
|
|
|
|
# Quad-core device. disable core_ctl
|
|
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
|
|
|
|
# Configure schedutil governor settings
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rtg_boost_freq
|
|
|
|
# sched_load_boost as -6 is equivalent to target load as 85.
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
|
|
echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
# Enable bus-dcvs
|
|
ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type`
|
|
ddr_type4="07"
|
|
ddr_type3="05"
|
|
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 50 > $cpubw/polling_interval
|
|
echo 762 > $cpubw/min_freq
|
|
if [ ${ddr_type:4:2} == $ddr_type4 ]; then
|
|
# LPDDR4
|
|
echo "2288 3440 4173 5195 5859 7759 10322 11863 13763" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 85 > $cpubw/bw_hwmon/io_percent
|
|
fi
|
|
if [ ${ddr_type:4:2} == $ddr_type3 ]; then
|
|
# LPDDR3
|
|
echo "1525 3440 5195 5859 7102" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 34 > $cpubw/bw_hwmon/io_percent
|
|
fi
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 90 > $cpubw/bw_hwmon/decay_rate
|
|
echo 190 > $cpubw/bw_hwmon/bw_step
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
|
|
for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor*
|
|
do
|
|
echo "compute" > $latfloor/governor
|
|
echo 10 > $latfloor/polling_interval
|
|
done
|
|
done
|
|
|
|
# Disable low power modes. Enable it after LPM stable
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
esac
|
|
|
|
|
|
#Apply settings for atoll
|
|
case "$target" in
|
|
"atoll")
|
|
|
|
# Core control parameters on silver
|
|
echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
|
|
echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
|
|
echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable
|
|
|
|
# Setting b.L scheduler parameters
|
|
# default sched up and down migrate values are 95 and 85
|
|
echo 65 > /proc/sys/kernel/sched_downmigrate
|
|
echo 71 > /proc/sys/kernel/sched_upmigrate
|
|
# default sched up and down migrate values are 100 and 95
|
|
echo 85 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
|
|
#colocation v3 settings
|
|
echo 740000 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz
|
|
|
|
# configure governor settings for little cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# configure governor settings for big cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us
|
|
echo 1267200 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
|
|
echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
|
|
|
|
# sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
|
|
echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
|
|
echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
|
|
echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
|
|
|
|
echo "0:1248000" > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
|
|
# Enable bus-dcvs
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 68 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
echo 50 > $cpubw/polling_interval
|
|
done
|
|
|
|
for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $llccbw/governor
|
|
echo "1144 1720 2086 2929 3879 5931 6881 8137" > $llccbw/bw_hwmon/mbps_zones
|
|
echo 4 > $llccbw/bw_hwmon/sample_ms
|
|
echo 68 > $llccbw/bw_hwmon/io_percent
|
|
echo 20 > $llccbw/bw_hwmon/hist_memory
|
|
echo 0 > $llccbw/bw_hwmon/hyst_length
|
|
echo 80 > $llccbw/bw_hwmon/down_thres
|
|
echo 0 > $llccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $llccbw/bw_hwmon/up_scale
|
|
echo 1600 > $llccbw/bw_hwmon/idle_mbps
|
|
echo 40 > $llccbw/polling_interval
|
|
done
|
|
|
|
for npubw in $device/*npu*-npu-ddr-bw/devfreq/*npu*-npu-ddr-bw
|
|
do
|
|
echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
echo "bw_hwmon" > $npubw/governor
|
|
echo "1144 1720 2086 2929 3879 5931 6881 8137" > $npubw/bw_hwmon/mbps_zones
|
|
echo 4 > $npubw/bw_hwmon/sample_ms
|
|
echo 80 > $npubw/bw_hwmon/io_percent
|
|
echo 20 > $npubw/bw_hwmon/hist_memory
|
|
echo 10 > $npubw/bw_hwmon/hyst_length
|
|
echo 30 > $npubw/bw_hwmon/down_thres
|
|
echo 0 > $npubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $npubw/bw_hwmon/up_scale
|
|
echo 0 > $npubw/bw_hwmon/idle_mbps
|
|
echo 40 > $npubw/polling_interval
|
|
echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
done
|
|
|
|
done
|
|
|
|
# memlat specific settings are moved to seperate file under
|
|
# device/target specific folder
|
|
setprop vendor.dcvs.prop 1
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Turn on sleep modes
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
# Change power debug parameters permission
|
|
chown radio.system /sys/module/qpnp_power_on/parameters/reset_enabled
|
|
chown radio.system /sys/module/qpnp_power_on/parameters/wake_enabled
|
|
chown radio.system /sys/module/lpm_levels/parameters/secdebug
|
|
chown radio.system /sys/module/qpnp_power_on/parameters/pmic_dump
|
|
chmod 664 /sys/module/qpnp_power_on/parameters/reset_enabled
|
|
chmod 664 /sys/module/qpnp_power_on/parameters/wake_enabled
|
|
chmod 664 /sys/module/lpm_levels/parameters/secdebug
|
|
chmod 664 /sys/module/qpnp_power_on/parameters/pmic_dump
|
|
chown radio.system /sys/power/volkey_wakeup
|
|
chmod 0660 /sys/power/volkey_wakeup
|
|
|
|
# Volume down key(connect to PMIC RESIN) wakeup enable/disable
|
|
echo 0 > /sys/power/volkey_wakeup
|
|
;;
|
|
esac
|
|
|
|
|
|
case "$target" in
|
|
"qcs605")
|
|
|
|
#Apply settings for qcs605
|
|
# Set the default IRQ affinity to the silver cluster. When a
|
|
# CPU is isolated/hotplugged, the IRQ affinity is adjusted
|
|
# to one of the CPU from the default IRQ affinity mask.
|
|
echo 3f > /proc/irq/default_smp_affinity
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/hw_platform ]; then
|
|
hw_platform=`cat /sys/devices/soc0/hw_platform`
|
|
else
|
|
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/platform_subtype_id ]; then
|
|
platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
|
|
fi
|
|
|
|
case "$soc_id" in
|
|
"347" )
|
|
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"Surf" | "RCM" | "QRD" )
|
|
start_hbtp
|
|
;;
|
|
"MTP" )
|
|
if [ $platform_subtype_id != 5 ]; then
|
|
start_hbtp
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
# Core control parameters on silver
|
|
echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
|
|
echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
|
|
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
|
|
echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 96 > /proc/sys/kernel/sched_upmigrate
|
|
echo 90 > /proc/sys/kernel/sched_downmigrate
|
|
echo 140 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 120 > /proc/sys/kernel/sched_group_downmigrate
|
|
|
|
# configure governor settings for little cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us
|
|
echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# configure governor settings for big cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/rate_limit_us
|
|
echo 1344000 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
|
|
echo 825600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
|
|
|
|
echo "0:1209600" > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
|
|
# Enable bus-dcvs
|
|
for cpubw in /sys/class/devfreq/*qcom,cpubw*
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 50 > $cpubw/polling_interval
|
|
echo "1144 1720 2086 2929 3879 5931 6881" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 68 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 0 > $cpubw/bw_hwmon/hyst_length
|
|
echo 80 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps
|
|
echo 68 > $cpubw/bw_hwmon/low_power_io_percent
|
|
echo 20 > $cpubw/bw_hwmon/low_power_delay
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
#Enable mem_latency governor for DDR scaling
|
|
for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
|
|
#Enable mem_latency governor for L3 scaling
|
|
for memlat in /sys/class/devfreq/*qcom,l3-cpu*
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
|
|
echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
|
|
|
|
# cpuset parameters
|
|
echo 0-5 > /dev/cpuset/background/cpus
|
|
echo 0-5 > /dev/cpuset/system-background/cpus
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Turn on sleep modes.
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
echo 100 > /proc/sys/vm/swappiness
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"apq8084")
|
|
echo 4 > /sys/module/lpm_levels/enable_low_power/l2
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor
|
|
do
|
|
echo "cpubw_hwmon" > $devfreq_gov
|
|
done
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "interactive" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
|
|
echo "interactive" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
|
|
echo "interactive" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
|
|
echo "20000 1400000:40000 1700000:20000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
|
|
echo 1497600 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
|
|
echo "85 1500000:90 1800000:70" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
|
|
echo 20 > /sys/module/cpu_boost/parameters/boost_ms
|
|
echo 1728000 > /sys/module/cpu_boost/parameters/sync_threshold
|
|
echo 100000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
|
|
echo 1497600 > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
echo 1 > /dev/cpuctl/apps/cpu.notify_on_migrate
|
|
echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
|
|
echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
|
|
echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
chown -h root.system /sys/devices/system/cpu/mfreq
|
|
chmod -h 220 /sys/devices/system/cpu/mfreq
|
|
chown -h root.system /sys/devices/system/cpu/cpu1/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu2/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu3/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu1/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu2/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu3/online
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"mpq8092")
|
|
echo 4 > /sys/module/lpm_levels/enable_low_power/l2
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled
|
|
echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
|
|
echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
|
|
echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
|
|
echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
|
|
echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
|
|
chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
chown -h root.system /sys/devices/system/cpu/mfreq
|
|
chmod -h 220 /sys/devices/system/cpu/mfreq
|
|
chown -h root.system /sys/devices/system/cpu/cpu1/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu2/online
|
|
chown -h root.system /sys/devices/system/cpu/cpu3/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu1/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu2/online
|
|
chmod -h 664 /sys/devices/system/cpu/cpu3/online
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8992")
|
|
# disable thermal bcl hotplug to switch governor
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
echo -n disable > /sys/devices/soc.*/qcom,bcl.*/mode
|
|
bcl_hotplug_mask=`cat /sys/devices/soc.*/qcom,bcl.*/hotplug_mask`
|
|
echo 0 > /sys/devices/soc.*/qcom,bcl.*/hotplug_mask
|
|
echo -n enable > /sys/devices/soc.*/qcom,bcl.*/mode
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
# configure governor settings for little cluster
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
|
|
echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
|
|
echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
|
|
echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
|
|
echo 80000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
|
|
echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
# online CPU4
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
# configure governor settings for big cluster
|
|
echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
|
|
echo 19000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
|
|
echo 1536000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
|
|
echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
|
|
echo 80000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
|
|
echo 384000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
# re-enable thermal and BCL hotplug
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
echo -n disable > /sys/devices/soc.*/qcom,bcl.*/mode
|
|
echo $bcl_hotplug_mask > /sys/devices/soc.*/qcom,bcl.*/hotplug_mask
|
|
echo $bcl_soc_hotplug_mask > /sys/devices/soc.*/qcom,bcl.*/hotplug_soc_mask
|
|
echo -n enable > /sys/devices/soc.*/qcom,bcl.*/mode
|
|
# plugin remaining A57s
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
# input boost configuration
|
|
echo 0:1248000 > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
# Enable task migration fixups in the scheduler
|
|
echo 1 > /proc/sys/kernel/sched_migration_fixup
|
|
for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor
|
|
do
|
|
echo "bw_hwmon" > $devfreq_gov
|
|
done
|
|
#enable rps static configuration
|
|
echo 8 > /sys/class/net/rmnet_ipa0/queues/rx-0/rps_cpus
|
|
echo 30 > /proc/sys/kernel/sched_small_task
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8994")
|
|
# ensure at most one A57 is online when thermal hotplug is disabled
|
|
echo 0 > /sys/devices/system/cpu/cpu5/online
|
|
echo 0 > /sys/devices/system/cpu/cpu6/online
|
|
echo 0 > /sys/devices/system/cpu/cpu7/online
|
|
# in case CPU4 is online, limit its frequency
|
|
echo 960000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
|
|
# Limit A57 max freq from msm_perf module in case CPU 4 is offline
|
|
echo "4:960000 5:960000 6:960000 7:960000" > /sys/module/msm_performance/parameters/cpu_max_freq
|
|
# disable thermal bcl hotplug to switch governor
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
bcl_hotplug_mask=`cat $hotplug_mask`
|
|
echo 0 > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
|
|
echo 0 > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
# configure governor settings for little cluster
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
|
|
echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
|
|
echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
|
|
echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
|
|
echo 80000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
|
|
echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
# online CPU4
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
# Best effort limiting for first time boot if msm_performance module is absent
|
|
echo 960000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
|
|
# configure governor settings for big cluster
|
|
echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
|
|
echo "19000 1400000:39000 1700000:19000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
|
|
echo 1248000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
|
|
echo "85 1500000:90 1800000:70" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
|
|
echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
|
|
echo 80000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
|
|
echo 384000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
# restore A57's max
|
|
cat /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_max_freq > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
|
|
# re-enable thermal and BCL hotplug
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n disable > $mode
|
|
done
|
|
for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
|
|
do
|
|
echo $bcl_hotplug_mask > $hotplug_mask
|
|
done
|
|
for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
|
|
do
|
|
echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
|
|
done
|
|
for mode in /sys/devices/soc.0/qcom,bcl.*/mode
|
|
do
|
|
echo -n enable > $mode
|
|
done
|
|
# plugin remaining A57s
|
|
echo 1 > /sys/devices/system/cpu/cpu5/online
|
|
echo 1 > /sys/devices/system/cpu/cpu6/online
|
|
echo 1 > /sys/devices/system/cpu/cpu7/online
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
# Restore CPU 4 max freq from msm_performance
|
|
echo "4:4294967295 5:4294967295 6:4294967295 7:4294967295" > /sys/module/msm_performance/parameters/cpu_max_freq
|
|
# input boost configuration
|
|
echo 0:1344000 > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
# Setting b.L scheduler parameters
|
|
echo 1 > /proc/sys/kernel/sched_migration_fixup
|
|
echo 30 > /proc/sys/kernel/sched_small_task
|
|
echo 20 > /proc/sys/kernel/sched_mostly_idle_load
|
|
echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run
|
|
echo 99 > /proc/sys/kernel/sched_upmigrate
|
|
echo 85 > /proc/sys/kernel/sched_downmigrate
|
|
echo 400000 > /proc/sys/kernel/sched_freq_inc_notify
|
|
echo 400000 > /proc/sys/kernel/sched_freq_dec_notify
|
|
#enable rps static configuration
|
|
echo 8 > /sys/class/net/rmnet_ipa0/queues/rx-0/rps_cpus
|
|
for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor
|
|
do
|
|
echo "bw_hwmon" > $devfreq_gov
|
|
done
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8996")
|
|
# disable thermal bcl hotplug to switch governor
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
echo -n disable > /sys/devices/soc/soc:qcom,bcl/mode
|
|
bcl_hotplug_mask=`cat /sys/devices/soc/soc:qcom,bcl/hotplug_mask`
|
|
echo 0 > /sys/devices/soc/soc:qcom,bcl/hotplug_mask
|
|
bcl_soc_hotplug_mask=`cat /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask`
|
|
echo 0 > /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask
|
|
echo -n enable > /sys/devices/soc/soc:qcom,bcl/mode
|
|
# set sync wakee policy tunable
|
|
echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker
|
|
# configure governor settings for little cluster
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
|
|
echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
|
|
echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
|
|
echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
|
|
echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
|
|
echo 79000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
|
|
echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
|
|
# online CPU2
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
# configure governor settings for big cluster
|
|
echo "interactive" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_migration_notif
|
|
echo "19000 1400000:39000 1700000:19000 2100000:79000" > /sys/devices/system/cpu/cpu2/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/timer_rate
|
|
echo 1248000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/io_is_busy
|
|
echo "85 1500000:90 1800000:70 2100000:95" > /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
|
|
echo 19000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/min_sample_time
|
|
echo 79000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/max_freq_hysteresis
|
|
echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/ignore_hispeed_on_notif
|
|
# re-enable thermal and BCL hotplug
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
echo -n disable > /sys/devices/soc/soc:qcom,bcl/mode
|
|
echo $bcl_hotplug_mask > /sys/devices/soc/soc:qcom,bcl/hotplug_mask
|
|
echo $bcl_soc_hotplug_mask > /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask
|
|
echo -n enable > /sys/devices/soc/soc:qcom,bcl/mode
|
|
# input boost configuration
|
|
echo "0:1324800 2:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
# Setting b.L scheduler parameters
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
echo 1 > /proc/sys/kernel/sched_migration_fixup
|
|
echo 45 > /proc/sys/kernel/sched_downmigrate
|
|
echo 45 > /proc/sys/kernel/sched_upmigrate
|
|
echo 400000 > /proc/sys/kernel/sched_freq_inc_notify
|
|
echo 400000 > /proc/sys/kernel/sched_freq_dec_notify
|
|
echo 3 > /proc/sys/kernel/sched_spill_nr_run
|
|
echo 100 > /proc/sys/kernel/sched_init_task_load
|
|
# Enable bus-dcvs
|
|
for cpubw in /sys/class/devfreq/*qcom,cpubw*
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 50 > $cpubw/polling_interval
|
|
echo 1525 > $cpubw/min_freq
|
|
echo "1525 5195 11863 13763" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 34 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 10 > $cpubw/bw_hwmon/hyst_length
|
|
echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps
|
|
echo 34 > $cpubw/bw_hwmon/low_power_io_percent
|
|
echo 20 > $cpubw/bw_hwmon/low_power_delay
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
done
|
|
echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
|
|
|
|
soc_revision=`cat /sys/devices/soc0/revision`
|
|
if [ "$soc_revision" == "2.0" ]; then
|
|
#Disable suspend for v2.0
|
|
echo pwr_dbg > /sys/power/wake_lock
|
|
elif [ "$soc_revision" == "2.1" ]; then
|
|
# Enable C4.D4.E4.M3 LPM modes
|
|
# Disable D3 state
|
|
echo 0 > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/idle_enabled
|
|
echo 0 > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/idle_enabled
|
|
# Disable DEF-FPC mode
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu0/fpc-def/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu1/fpc-def/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu2/fpc-def/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu3/fpc-def/idle_enabled
|
|
else
|
|
# Enable all LPMs by default
|
|
# This will enable C4, D4, D3, E4 and M3 LPMs
|
|
echo N > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
fi
|
|
echo N > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
# Starting io prefetcher service
|
|
start iop
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"sdm845")
|
|
|
|
# Set the default IRQ affinity to the silver cluster. When a
|
|
# CPU is isolated/hotplugged, the IRQ affinity is adjusted
|
|
# to one of the CPU from the default IRQ affinity mask.
|
|
echo f > /proc/irq/default_smp_affinity
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/hw_platform ]; then
|
|
hw_platform=`cat /sys/devices/soc0/hw_platform`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/platform_subtype_id ]; then
|
|
platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
|
|
fi
|
|
|
|
case "$soc_id" in
|
|
"321" | "341")
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"QRD" )
|
|
case "$platform_subtype_id" in
|
|
"32") #QVR845 do nothing
|
|
;;
|
|
*)
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
# Core control parameters
|
|
echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
|
|
echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
|
|
echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster
|
|
echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 95 > /proc/sys/kernel/sched_upmigrate
|
|
echo 85 > /proc/sys/kernel/sched_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 95 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
|
|
# configure governor settings for little cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us
|
|
echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/pl
|
|
echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
|
|
# configure governor settings for big cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/rate_limit_us
|
|
echo 1574400 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/pl
|
|
echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 120 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
# Limit the min frequency to 825MHz
|
|
echo 825000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
|
|
# Enable oom_reaper
|
|
echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper
|
|
|
|
# Enable bus-dcvs
|
|
for cpubw in /sys/class/devfreq/*qcom,cpubw*
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 50 > $cpubw/polling_interval
|
|
echo "2288 4577 6500 8132 9155 10681" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 50 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 10 > $cpubw/bw_hwmon/hyst_length
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
for llccbw in /sys/class/devfreq/*qcom,llccbw*
|
|
do
|
|
echo "bw_hwmon" > $llccbw/governor
|
|
echo 50 > $llccbw/polling_interval
|
|
echo "1720 2929 3879 5931 6881" > $llccbw/bw_hwmon/mbps_zones
|
|
echo 4 > $llccbw/bw_hwmon/sample_ms
|
|
echo 80 > $llccbw/bw_hwmon/io_percent
|
|
echo 20 > $llccbw/bw_hwmon/hist_memory
|
|
echo 10 > $llccbw/bw_hwmon/hyst_length
|
|
echo 0 > $llccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $llccbw/bw_hwmon/up_scale
|
|
echo 1600 > $llccbw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
#Enable mem_latency governor for DDR scaling
|
|
for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
|
|
#Enable mem_latency governor for L3 scaling
|
|
for memlat in /sys/class/devfreq/*qcom,l3-cpu*
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
|
|
#Enable userspace governor for L3 cdsp nodes
|
|
for l3cdsp in /sys/class/devfreq/*qcom,l3-cdsp*
|
|
do
|
|
echo "userspace" > $l3cdsp/governor
|
|
chown -h system $l3cdsp/userspace/set_freq
|
|
done
|
|
|
|
#Gold L3 ratio ceil
|
|
echo 4000 > /sys/class/devfreq/soc:qcom,l3-cpu4/mem_latency/ratio_ceil
|
|
|
|
echo "compute" > /sys/class/devfreq/soc:qcom,mincpubw/governor
|
|
echo 10 > /sys/class/devfreq/soc:qcom,mincpubw/polling_interval
|
|
|
|
# cpuset parameters
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
# Disable CPU Retention
|
|
echo N > /sys/module/lpm_levels/L3/cpu0/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu1/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu2/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu3/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu4/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu5/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu6/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/cpu7/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/L3/l3-dyn-ret/idle_enabled
|
|
# Turn on sleep modes.
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
echo 100 > /proc/sys/vm/swappiness
|
|
echo 120 > /proc/sys/vm/watermark_scale_factor
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msmnile")
|
|
# Core control parameters for gold
|
|
echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
|
|
echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
|
|
echo 3 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
|
|
|
|
# Core control parameters for gold+
|
|
echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu7/core_ctl/busy_up_thres
|
|
echo 30 > /sys/devices/system/cpu/cpu7/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu7/core_ctl/offline_delay_ms
|
|
echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/task_thres
|
|
# Controls how many more tasks should be eligible to run on gold CPUs
|
|
# w.r.t number of gold CPUs available to trigger assist (max number of
|
|
# tasks eligible to run on previous cluster minus number of CPUs in
|
|
# the previous cluster).
|
|
#
|
|
# Setting to 1 by default which means there should be at least
|
|
# 4 tasks eligible to run on gold cluster (tasks running on gold cores
|
|
# plus misfit tasks on silver cores) to trigger assitance from gold+.
|
|
echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/nr_prev_assist_thresh
|
|
|
|
# Disable Core control on silver
|
|
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 95 95 > /proc/sys/kernel/sched_upmigrate
|
|
echo 85 85 > /proc/sys/kernel/sched_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 10 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
|
|
# cpuset parameters
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# configure governor settings for silver cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
|
|
echo 1209600 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
|
|
echo 576000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
|
|
|
|
# configure governor settings for gold cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
|
|
echo 1612800 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/pl
|
|
|
|
# configure governor settings for gold+ cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
|
|
echo 1612800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl
|
|
|
|
# configure input boost settings
|
|
echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 120 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
|
|
# Disable wsf, beacause we are using efk.
|
|
# wsf Range : 1..1000 So set to bare minimum value 1.
|
|
echo 1 > /proc/sys/vm/watermark_scale_factor
|
|
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
|
|
# Enable oom_reaper
|
|
if [ -f /sys/module/lowmemorykiller/parameters/oom_reaper ]; then
|
|
echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper
|
|
else
|
|
echo 1 > /proc/sys/vm/reap_mem_on_sigkill
|
|
fi
|
|
|
|
# Enable bus-dcvs
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo "2288 4577 7110 9155 12298 14236 15258" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 50 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 10 > $cpubw/bw_hwmon/hyst_length
|
|
echo 30 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
echo 14236 > $cpubw/max_freq
|
|
echo 40 > $cpubw/polling_interval
|
|
done
|
|
|
|
for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $llccbw/governor
|
|
echo "1720 2929 3879 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones
|
|
echo 4 > $llccbw/bw_hwmon/sample_ms
|
|
echo 80 > $llccbw/bw_hwmon/io_percent
|
|
echo 20 > $llccbw/bw_hwmon/hist_memory
|
|
echo 10 > $llccbw/bw_hwmon/hyst_length
|
|
echo 30 > $llccbw/bw_hwmon/down_thres
|
|
echo 0 > $llccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $llccbw/bw_hwmon/up_scale
|
|
echo 1600 > $llccbw/bw_hwmon/idle_mbps
|
|
echo 6881 > $llccbw/max_freq
|
|
echo 40 > $llccbw/polling_interval
|
|
done
|
|
|
|
for npubw in $device/*npu-npu-ddr-bw/devfreq/*npu-npu-ddr-bw
|
|
do
|
|
echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
echo "bw_hwmon" > $npubw/governor
|
|
echo "1720 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones
|
|
echo 4 > $npubw/bw_hwmon/sample_ms
|
|
echo 80 > $npubw/bw_hwmon/io_percent
|
|
echo 20 > $npubw/bw_hwmon/hist_memory
|
|
echo 6 > $npubw/bw_hwmon/hyst_length
|
|
echo 30 > $npubw/bw_hwmon/down_thres
|
|
echo 0 > $npubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $npubw/bw_hwmon/up_scale
|
|
echo 0 > $npubw/bw_hwmon/idle_mbps
|
|
echo 40 > $npubw/polling_interval
|
|
echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
done
|
|
done
|
|
|
|
# memlat specific settings are moved to seperate file under
|
|
# device/target specific folder
|
|
setprop vendor.dcvs.prop 1
|
|
|
|
if [ -f /sys/devices/soc0/hw_platform ]; then
|
|
hw_platform=`cat /sys/devices/soc0/hw_platform`
|
|
else
|
|
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/platform_subtype_id ]; then
|
|
platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
|
|
fi
|
|
|
|
case "$hw_platform" in
|
|
"MTP" | "Surf" | "RCM" )
|
|
# Start Host based Touch processing
|
|
case "$platform_subtype_id" in
|
|
"0" | "1" | "2" | "3" | "4")
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
;;
|
|
"HDK" )
|
|
if [ -d /sys/kernel/hbtpsensor ] ; then
|
|
start_hbtp
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
configure_memory_parameters
|
|
target_type=`getprop ro.hardware.type`
|
|
if [ "$target_type" == "automotive" ]; then
|
|
# update frequencies
|
|
configure_automotive_sku_parameters
|
|
fi
|
|
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"sdmshrike")
|
|
# Core control parameters for gold
|
|
echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
|
|
echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
|
|
echo 3 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
|
|
|
|
# Core control parameters for gold+
|
|
echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu7/core_ctl/busy_up_thres
|
|
echo 30 > /sys/devices/system/cpu/cpu7/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu7/core_ctl/offline_delay_ms
|
|
echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/task_thres
|
|
# Controls how many more tasks should be eligible to run on gold CPUs
|
|
# w.r.t number of gold CPUs available to trigger assist (max number of
|
|
# tasks eligible to run on previous cluster minus number of CPUs in
|
|
# the previous cluster).
|
|
#
|
|
# Setting to 1 by default which means there should be at least
|
|
# 4 tasks eligible to run on gold cluster (tasks running on gold cores
|
|
# plus misfit tasks on silver cores) to trigger assitance from gold+.
|
|
echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/nr_prev_assist_thresh
|
|
|
|
# Disable Core control on silver
|
|
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 95 95 > /proc/sys/kernel/sched_upmigrate
|
|
echo 85 85 > /proc/sys/kernel/sched_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 10 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
|
|
# cpuset parameters
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# configure governor settings for silver cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
|
|
echo 1209600 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
|
|
echo 576000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
|
|
|
|
# configure governor settings for gold cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/down_rate_limit_us
|
|
echo 1612800 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/pl
|
|
|
|
# configure governor settings for gold+ cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/down_rate_limit_us
|
|
echo 1612800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl
|
|
|
|
# configure input boost settings
|
|
echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 120 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
|
|
# Disable wsf, beacause we are using efk.
|
|
# wsf Range : 1..1000 So set to bare minimum value 1.
|
|
echo 1 > /proc/sys/vm/watermark_scale_factor
|
|
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
|
|
# Enable oom_reaper
|
|
if [ -f /sys/module/lowmemorykiller/parameters/oom_reaper ]; then
|
|
echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper
|
|
else
|
|
echo 1 > /proc/sys/vm/reap_mem_on_sigkill
|
|
fi
|
|
|
|
# Enable bus-dcvs
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 40 > $cpubw/polling_interval
|
|
echo "2288 4577 7110 9155 12298 14236 15258" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 50 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 10 > $cpubw/bw_hwmon/hyst_length
|
|
echo 30 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
echo 14236 > $cpubw/max_freq
|
|
done
|
|
|
|
for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $llccbw/governor
|
|
echo 40 > $llccbw/polling_interval
|
|
echo "1720 2929 3879 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones
|
|
echo 4 > $llccbw/bw_hwmon/sample_ms
|
|
echo 80 > $llccbw/bw_hwmon/io_percent
|
|
echo 20 > $llccbw/bw_hwmon/hist_memory
|
|
echo 10 > $llccbw/bw_hwmon/hyst_length
|
|
echo 30 > $llccbw/bw_hwmon/down_thres
|
|
echo 0 > $llccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $llccbw/bw_hwmon/up_scale
|
|
echo 1600 > $llccbw/bw_hwmon/idle_mbps
|
|
echo 6881 > $llccbw/max_freq
|
|
done
|
|
|
|
for npubw in $device/*npu-npu-ddr-bw/devfreq/*npu-npu-ddr-bw
|
|
do
|
|
echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
echo "bw_hwmon" > $npubw/governor
|
|
echo 40 > $npubw/polling_interval
|
|
echo "1720 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones
|
|
echo 4 > $npubw/bw_hwmon/sample_ms
|
|
echo 80 > $npubw/bw_hwmon/io_percent
|
|
echo 20 > $npubw/bw_hwmon/hist_memory
|
|
echo 6 > $npubw/bw_hwmon/hyst_length
|
|
echo 30 > $npubw/bw_hwmon/down_thres
|
|
echo 0 > $npubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $npubw/bw_hwmon/up_scale
|
|
echo 0 > $npubw/bw_hwmon/idle_mbps
|
|
echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
done
|
|
|
|
#Enable mem_latency governor for L3, LLCC, and DDR scaling
|
|
for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
|
|
#Enable userspace governor for L3 cdsp nodes
|
|
for l3cdsp in $device/*cdsp-cdsp-l3-lat/devfreq/*cdsp-cdsp-l3-lat
|
|
do
|
|
echo "cdspl3" > $l3cdsp/governor
|
|
done
|
|
|
|
#Enable compute governor for gold latfloor
|
|
for latfloor in $device/*cpu-ddr-latfloor*/devfreq/*cpu-ddr-latfloor*
|
|
do
|
|
echo "compute" > $latfloor/governor
|
|
echo 10 > $latfloor/polling_interval
|
|
done
|
|
|
|
#Gold L3 ratio ceil
|
|
for l3gold in $device/*cpu4-cpu-l3-lat/devfreq/*cpu4-cpu-l3-lat
|
|
do
|
|
echo 4000 > $l3gold/mem_latency/ratio_ceil
|
|
done
|
|
|
|
#Prime L3 ratio ceil
|
|
for l3prime in $device/*cpu7-cpu-l3-lat/devfreq/*cpu7-cpu-l3-lat
|
|
do
|
|
echo 20000 > $l3prime/mem_latency/ratio_ceil
|
|
done
|
|
done
|
|
|
|
if [ -f /sys/devices/soc0/hw_platform ]; then
|
|
hw_platform=`cat /sys/devices/soc0/hw_platform`
|
|
else
|
|
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/platform_subtype_id ]; then
|
|
platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
|
|
fi
|
|
|
|
case "$hw_platform" in
|
|
"MTP" | "Surf" | "RCM" )
|
|
# Start Host based Touch processing
|
|
case "$platform_subtype_id" in
|
|
"0" | "1")
|
|
start_hbtp
|
|
;;
|
|
esac
|
|
;;
|
|
"HDK" )
|
|
if [ -d /sys/kernel/hbtpsensor ] ; then
|
|
start_hbtp
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
#Setting the min and max supported frequencies
|
|
reg_val=`cat /sys/devices/platform/soc/780130.qfprom/qfprom0/nvmem | od -An -t d4`
|
|
feature_id=$(((reg_val >> 20) & 0xFF))
|
|
|
|
#Setting the min supported frequencies
|
|
echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 1171200 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
|
|
echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/min_freq
|
|
echo 1651200000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
|
|
echo 1651200000 > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/max_freq
|
|
#setting min gpu freq to 392 MHz
|
|
echo 4 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel
|
|
if [ $feature_id == 0 ]; then
|
|
echo "feature_id is 0 for SA8195AA"
|
|
|
|
#setting max cpu freq to 2.496GHz
|
|
echo 2496000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
|
|
#setting max gpu freq to 530 MHz
|
|
echo 3 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
|
|
echo {class:ddr, res:capped, val: 1804} > /sys/kernel/debug/aop_send_message
|
|
elif [ $feature_id == 1 ] || [ $feature_id == 2 ]; then
|
|
echo "feature_id is 1 for external SA8195AB"
|
|
echo "feature_id is 2 for internal SA8195AB"
|
|
|
|
#setting max cpu freq to 2.496GHz
|
|
echo 2496000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
|
|
#setting max gpu freq to 670 MHz
|
|
echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
|
|
echo {class:ddr, res:capped, val: 2092} > /sys/kernel/debug/aop_send_message
|
|
elif [ $feature_id == 3 ]; then
|
|
echo "feature_id is 3 for external SA8195AC"
|
|
else
|
|
echo "unknown feature_id value" $feature_id
|
|
fi
|
|
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
configure_memory_parameters
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"kona")
|
|
rev=`cat /sys/devices/soc0/revision`
|
|
ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type`
|
|
ddr_type4="07"
|
|
ddr_type5="08"
|
|
|
|
# Core control parameters for gold
|
|
echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
|
|
echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
|
|
echo 3 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
|
|
|
|
# Core control parameters for gold+
|
|
echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu7/core_ctl/busy_up_thres
|
|
echo 30 > /sys/devices/system/cpu/cpu7/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu7/core_ctl/offline_delay_ms
|
|
echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/task_thres
|
|
# Controls how many more tasks should be eligible to run on gold CPUs
|
|
# w.r.t number of gold CPUs available to trigger assist (max number of
|
|
# tasks eligible to run on previous cluster minus number of CPUs in
|
|
# the previous cluster).
|
|
#
|
|
# Setting to 1 by default which means there should be at least
|
|
# 4 tasks eligible to run on gold cluster (tasks running on gold cores
|
|
# plus misfit tasks on silver cores) to trigger assitance from gold+.
|
|
echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/nr_prev_assist_thresh
|
|
|
|
# Disable Core control on silver
|
|
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 95 95 > /proc/sys/kernel/sched_upmigrate
|
|
echo 85 85 > /proc/sys/kernel/sched_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 85 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
|
|
echo 400000000 > /proc/sys/kernel/sched_coloc_downmigrate_ns
|
|
|
|
# cpuset parameters
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
|
|
# Turn off scheduler boost at the end
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# configure governor settings for silver cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us
|
|
if [ $rev == "2.0" ] || [ $rev == "2.1" ]; then
|
|
echo 1248000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
|
|
else
|
|
echo 1228800 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
|
|
fi
|
|
echo 691200 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
|
|
|
|
# configure input boost settings
|
|
echo "0:1324800" > /sys/devices/system/cpu/cpu_boost/input_boost_freq
|
|
echo 120 > /sys/devices/system/cpu/cpu_boost/input_boost_ms
|
|
|
|
# configure governor settings for gold cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/down_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us
|
|
echo 1574400 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/pl
|
|
|
|
# configure governor settings for gold+ cluster
|
|
echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/down_rate_limit_us
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us
|
|
if [ $rev == "2.0" ] || [ $rev == "2.1" ]; then
|
|
echo 1632000 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
|
|
else
|
|
echo 1612800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
|
|
fi
|
|
echo 1 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl
|
|
|
|
# Enable bus-dcvs
|
|
for device in /sys/devices/platform/soc
|
|
do
|
|
for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo "4577 7110 9155 12298 14236 15258" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 50 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 10 > $cpubw/bw_hwmon/hyst_length
|
|
echo 30 > $cpubw/bw_hwmon/down_thres
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
echo 14236 > $cpubw/max_freq
|
|
echo 40 > $cpubw/polling_interval
|
|
done
|
|
|
|
for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
|
|
do
|
|
echo "bw_hwmon" > $llccbw/governor
|
|
if [ ${ddr_type:4:2} == $ddr_type4 ]; then
|
|
echo "1720 2086 2929 3879 5161 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones
|
|
elif [ ${ddr_type:4:2} == $ddr_type5 ]; then
|
|
echo "1720 2086 2929 3879 5931 6881 7980 10437" > $llccbw/bw_hwmon/mbps_zones
|
|
fi
|
|
echo 4 > $llccbw/bw_hwmon/sample_ms
|
|
echo 80 > $llccbw/bw_hwmon/io_percent
|
|
echo 20 > $llccbw/bw_hwmon/hist_memory
|
|
echo 10 > $llccbw/bw_hwmon/hyst_length
|
|
echo 30 > $llccbw/bw_hwmon/down_thres
|
|
echo 0 > $llccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $llccbw/bw_hwmon/up_scale
|
|
echo 1600 > $llccbw/bw_hwmon/idle_mbps
|
|
echo 6881 > $llccbw/max_freq
|
|
echo 40 > $llccbw/polling_interval
|
|
done
|
|
|
|
for npubw in $device/*npu*-ddr-bw/devfreq/*npu*-ddr-bw
|
|
do
|
|
echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
echo "bw_hwmon" > $npubw/governor
|
|
if [ ${ddr_type:4:2} == $ddr_type4 ]; then
|
|
echo "1720 2086 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones
|
|
elif [ ${ddr_type:4:2} == $ddr_type5 ]; then
|
|
echo "1720 2086 2929 3879 5931 6881 7980 10437" > $npubw/bw_hwmon/mbps_zones
|
|
fi
|
|
echo 4 > $npubw/bw_hwmon/sample_ms
|
|
echo 160 > $npubw/bw_hwmon/io_percent
|
|
echo 20 > $npubw/bw_hwmon/hist_memory
|
|
echo 10 > $npubw/bw_hwmon/hyst_length
|
|
echo 30 > $npubw/bw_hwmon/down_thres
|
|
echo 0 > $npubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $npubw/bw_hwmon/up_scale
|
|
echo 1600 > $npubw/bw_hwmon/idle_mbps
|
|
echo 40 > $npubw/polling_interval
|
|
echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
done
|
|
|
|
for npullccbw in $device/*npu*-llcc-bw/devfreq/*npu*-llcc-bw
|
|
do
|
|
echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
echo "bw_hwmon" > $npullccbw/governor
|
|
echo "4577 7110 9155 12298 14236 15258" > $npullccbw/bw_hwmon/mbps_zones
|
|
echo 4 > $npullccbw/bw_hwmon/sample_ms
|
|
echo 160 > $npullccbw/bw_hwmon/io_percent
|
|
echo 20 > $npullccbw/bw_hwmon/hist_memory
|
|
echo 10 > $npullccbw/bw_hwmon/hyst_length
|
|
echo 30 > $npullccbw/bw_hwmon/down_thres
|
|
echo 0 > $npullccbw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $npullccbw/bw_hwmon/up_scale
|
|
echo 1600 > $npullccbw/bw_hwmon/idle_mbps
|
|
echo 40 > $npullccbw/polling_interval
|
|
echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
|
|
done
|
|
done
|
|
# memlat specific settings are moved to seperate file under
|
|
# device/target specific folder
|
|
setprop vendor.dcvs.prop 0
|
|
setprop vendor.dcvs.prop 1
|
|
echo N > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
configure_memory_parameters
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8998" | "apq8098_latv")
|
|
|
|
echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
|
|
echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
|
|
echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
|
|
echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
|
|
echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster
|
|
echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
|
|
|
|
# Setting b.L scheduler parameters
|
|
echo 1 > /proc/sys/kernel/sched_migration_fixup
|
|
echo 95 > /proc/sys/kernel/sched_upmigrate
|
|
echo 90 > /proc/sys/kernel/sched_downmigrate
|
|
echo 100 > /proc/sys/kernel/sched_group_upmigrate
|
|
echo 95 > /proc/sys/kernel/sched_group_downmigrate
|
|
echo 0 > /proc/sys/kernel/sched_select_prev_cpu_us
|
|
echo 400000 > /proc/sys/kernel/sched_freq_inc_notify
|
|
echo 400000 > /proc/sys/kernel/sched_freq_dec_notify
|
|
echo 5 > /proc/sys/kernel/sched_spill_nr_run
|
|
echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill
|
|
echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker
|
|
start iop
|
|
|
|
# disable thermal bcl hotplug to switch governor
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
# online CPU0
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
# configure governor settings for little cluster
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
|
|
echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
|
|
echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
|
|
echo "83 1804800:95" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
|
|
echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
|
|
echo 79000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
|
|
echo 518400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
|
|
# online CPU4
|
|
echo 1 > /sys/devices/system/cpu/cpu4/online
|
|
# configure governor settings for big cluster
|
|
echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
|
|
echo 19000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
|
|
echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
|
|
echo 1574400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
|
|
echo "83 1939200:90 2016000:95" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
|
|
echo 19000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
|
|
echo 79000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
|
|
echo 806400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
|
|
echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/ignore_hispeed_on_notif
|
|
|
|
# re-enable thermal and BCL hotplug
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
# Enable input boost configuration
|
|
echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq
|
|
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
|
|
# Enable bus-dcvs
|
|
for cpubw in /sys/class/devfreq/*qcom,cpubw*
|
|
do
|
|
echo "bw_hwmon" > $cpubw/governor
|
|
echo 50 > $cpubw/polling_interval
|
|
echo 1525 > $cpubw/min_freq
|
|
echo "3143 5859 11863 13763" > $cpubw/bw_hwmon/mbps_zones
|
|
echo 4 > $cpubw/bw_hwmon/sample_ms
|
|
echo 34 > $cpubw/bw_hwmon/io_percent
|
|
echo 20 > $cpubw/bw_hwmon/hist_memory
|
|
echo 10 > $cpubw/bw_hwmon/hyst_length
|
|
echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps
|
|
echo 34 > $cpubw/bw_hwmon/low_power_io_percent
|
|
echo 20 > $cpubw/bw_hwmon/low_power_delay
|
|
echo 0 > $cpubw/bw_hwmon/guard_band_mbps
|
|
echo 250 > $cpubw/bw_hwmon/up_scale
|
|
echo 1600 > $cpubw/bw_hwmon/idle_mbps
|
|
done
|
|
|
|
for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
|
|
do
|
|
echo "mem_latency" > $memlat/governor
|
|
echo 10 > $memlat/polling_interval
|
|
echo 400 > $memlat/mem_latency/ratio_ceil
|
|
done
|
|
echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/hw_platform ]; then
|
|
hw_platform=`cat /sys/devices/soc0/hw_platform`
|
|
else
|
|
hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/platform_version ]; then
|
|
platform_version=`cat /sys/devices/soc0/platform_version`
|
|
platform_major_version=$((10#${platform_version}>>16))
|
|
fi
|
|
|
|
if [ -f /sys/devices/soc0/platform_subtype_id ]; then
|
|
platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
|
|
fi
|
|
|
|
case "$soc_id" in
|
|
"292") #msm8998 apq8098_latv
|
|
# Start Host based Touch processing
|
|
case "$hw_platform" in
|
|
"QRD")
|
|
case "$platform_subtype_id" in
|
|
"0")
|
|
start_hbtp
|
|
;;
|
|
"16")
|
|
if [ $platform_major_version -lt 6 ]; then
|
|
start_hbtp
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu0/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu1/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu2/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/cpu3/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu4/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu5/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu6/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/cpu7/ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/system/perf/perf-l2-ret/idle_enabled
|
|
echo N > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
echo 0-3 > /dev/cpuset/background/cpus
|
|
echo 0-3 > /dev/cpuset/system-background/cpus
|
|
echo 0 > /proc/sys/kernel/sched_boost
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8909")
|
|
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
|
|
# HMP scheduler settings for 8909 similiar to 8917
|
|
echo 3 > /proc/sys/kernel/sched_window_stats_policy
|
|
echo 3 > /proc/sys/kernel/sched_ravg_hist_size
|
|
|
|
echo 1 > /proc/sys/kernel/sched_restrict_tasks_spread
|
|
|
|
echo 20 > /proc/sys/kernel/sched_small_task
|
|
echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
|
|
echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
|
|
|
|
echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
|
|
echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
|
|
|
|
echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle
|
|
echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle
|
|
|
|
# Apply governor settings for 8909
|
|
|
|
# disable thermal core_control to update scaling_min_freq
|
|
echo 0 > /sys/module/msm_thermal/core_control/enabled
|
|
echo 1 > /sys/devices/system/cpu/cpu0/online
|
|
echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
|
|
# enable thermal core_control now
|
|
echo 1 > /sys/module/msm_thermal/core_control/enabled
|
|
|
|
echo "29000 1094400:49000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
|
|
echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
|
|
echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
|
|
echo 998400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
|
|
echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
|
|
echo "1 800000:85 998400:90 1094400:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
|
|
|
|
# Bring up all cores online
|
|
echo 1 > /sys/devices/system/cpu/cpu1/online
|
|
echo 1 > /sys/devices/system/cpu/cpu2/online
|
|
echo 1 > /sys/devices/system/cpu/cpu3/online
|
|
echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
|
|
|
|
for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor
|
|
do
|
|
echo "bw_hwmon" > $devfreq_gov
|
|
for cpu_bimc_bw_step in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/bw_step
|
|
do
|
|
echo 60 > $cpu_bimc_bw_step
|
|
done
|
|
for cpu_guard_band_mbps in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/guard_band_mbps
|
|
do
|
|
echo 30 > $cpu_guard_band_mbps
|
|
done
|
|
done
|
|
|
|
for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent
|
|
do
|
|
echo 40 > $gpu_bimc_io_percent
|
|
done
|
|
for gpu_bimc_bw_step in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/bw_step
|
|
do
|
|
echo 60 > $gpu_bimc_bw_step
|
|
done
|
|
for gpu_bimc_guard_band_mbps in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/guard_band_mbps
|
|
do
|
|
echo 30 > $gpu_bimc_guard_band_mbps
|
|
done
|
|
|
|
# Set Memory parameters
|
|
configure_memory_parameters
|
|
restorecon -R /sys/devices/system/cpu
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm7627_ffa" | "msm7627_surf" | "msm7627_6x")
|
|
echo 25000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"qsd8250_surf" | "qsd8250_ffa" | "qsd8650a_st1x")
|
|
echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"qsd8650a_st1x")
|
|
mount -t debugfs none /sys/kernel/debug
|
|
;;
|
|
esac
|
|
|
|
chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
|
|
chown -h system /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
|
|
|
|
emmc_boot=`getprop vendor.boot.emmc`
|
|
case "$emmc_boot"
|
|
in "true")
|
|
chown -h system /sys/devices/platform/rs300000a7.65536/force_sync
|
|
chown -h system /sys/devices/platform/rs300000a7.65536/sync_sts
|
|
chown -h system /sys/devices/platform/rs300100a7.65536/force_sync
|
|
chown -h system /sys/devices/platform/rs300100a7.65536/sync_sts
|
|
;;
|
|
esac
|
|
|
|
case "$target" in
|
|
"msm8960" | "msm8660" | "msm7630_surf")
|
|
echo 10 > /sys/devices/platform/msm_sdcc.3/idle_timeout
|
|
;;
|
|
"msm7627a")
|
|
echo 10 > /sys/devices/platform/msm_sdcc.1/idle_timeout
|
|
;;
|
|
esac
|
|
|
|
# Post-setup services
|
|
case "$target" in
|
|
"msm8660" | "msm8960" | "msm8226" | "msm8610" | "mpq8092" )
|
|
start mpdecision
|
|
;;
|
|
"msm8974")
|
|
start mpdecision
|
|
echo 512 > /sys/block/mmcblk0/bdi/read_ahead_kb
|
|
;;
|
|
"msm8909" | "msm8916" | "msm8937" | "msm8952" | "msm8953" | "msm8994" | "msm8992" | "msm8996" | "msm8998" | "sdm660" | "apq8098_latv" | "sdm845" | "sdm710" | "msmnile" | "msmsteppe" | "sm6150" | "kona" | "lito" | "trinket" | "atoll" | "bengal" | "sdmshrike")
|
|
setprop vendor.post_boot.parsed 1
|
|
;;
|
|
"apq8084")
|
|
rm /data/system/perfd/default_values
|
|
start mpdecision
|
|
echo 512 > /sys/block/mmcblk0/bdi/read_ahead_kb
|
|
echo 512 > /sys/block/sda/bdi/read_ahead_kb
|
|
echo 512 > /sys/block/sdb/bdi/read_ahead_kb
|
|
echo 512 > /sys/block/sdc/bdi/read_ahead_kb
|
|
echo 512 > /sys/block/sdd/bdi/read_ahead_kb
|
|
echo 512 > /sys/block/sde/bdi/read_ahead_kb
|
|
echo 512 > /sys/block/sdf/bdi/read_ahead_kb
|
|
echo 512 > /sys/block/sdg/bdi/read_ahead_kb
|
|
echo 512 > /sys/block/sdh/bdi/read_ahead_kb
|
|
;;
|
|
"msm7627a")
|
|
if [ -f /sys/devices/soc0/soc_id ]; then
|
|
soc_id=`cat /sys/devices/soc0/soc_id`
|
|
else
|
|
soc_id=`cat /sys/devices/system/soc/soc0/id`
|
|
fi
|
|
case "$soc_id" in
|
|
"127" | "128" | "129")
|
|
start mpdecision
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
# Enable Power modes and set the CPU Freq Sampling rates
|
|
case "$target" in
|
|
"msm7627a")
|
|
start qosmgrd
|
|
echo 1 > /sys/module/pm2/modes/cpu0/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/pm2/modes/cpu1/standalone_power_collapse/idle_enabled
|
|
echo 1 > /sys/module/pm2/modes/cpu0/standalone_power_collapse/suspend_enabled
|
|
echo 1 > /sys/module/pm2/modes/cpu1/standalone_power_collapse/suspend_enabled
|
|
#SuspendPC:
|
|
echo 1 > /sys/module/pm2/modes/cpu0/power_collapse/suspend_enabled
|
|
#IdlePC:
|
|
echo 1 > /sys/module/pm2/modes/cpu0/power_collapse/idle_enabled
|
|
echo 25000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
|
|
;;
|
|
esac
|
|
|
|
# Change adj level and min_free_kbytes setting for lowmemory killer to kick in
|
|
case "$target" in
|
|
"msm7627a")
|
|
echo 0,1,2,4,9,12 > /sys/module/lowmemorykiller/parameters/adj
|
|
echo 5120 > /proc/sys/vm/min_free_kbytes
|
|
;;
|
|
esac
|
|
|
|
# Install AdrenoTest.apk if not already installed
|
|
if [ -f /data/prebuilt/AdrenoTest.apk ]; then
|
|
if [ ! -d /data/data/com.qualcomm.adrenotest ]; then
|
|
pm install /data/prebuilt/AdrenoTest.apk
|
|
fi
|
|
fi
|
|
|
|
# Install SWE_Browser.apk if not already installed
|
|
if [ -f /data/prebuilt/SWE_AndroidBrowser.apk ]; then
|
|
if [ ! -d /data/data/com.android.swe.browser ]; then
|
|
pm install /data/prebuilt/SWE_AndroidBrowser.apk
|
|
fi
|
|
fi
|
|
|
|
# Change adj level and min_free_kbytes setting for lowmemory killer to kick in
|
|
case "$target" in
|
|
"msm8660")
|
|
start qosmgrd
|
|
echo 0,1,2,4,9,12 > /sys/module/lowmemorykiller/parameters/adj
|
|
echo 5120 > /proc/sys/vm/min_free_kbytes
|
|
;;
|
|
esac
|
|
# Let kernel know our image version/variant/crm_version
|
|
if [ -f /sys/devices/soc0/select_image ]; then
|
|
image_version="10:"
|
|
image_version+=`getprop ro.build.id`
|
|
image_version+=":"
|
|
image_version+=`getprop ro.build.version.incremental`
|
|
image_variant=`getprop ro.product.name`
|
|
image_variant+="-"
|
|
image_variant+=`getprop ro.build.type`
|
|
oem_version=`getprop ro.build.version.codename`
|
|
echo 10 > /sys/devices/soc0/select_image
|
|
echo $image_version > /sys/devices/soc0/image_version
|
|
echo $image_variant > /sys/devices/soc0/image_variant
|
|
echo $oem_version > /sys/devices/soc0/image_crm_version
|
|
fi
|
|
|
|
# Change console log level as per console config property
|
|
console_config=`getprop persist.vendor.console.silent.config`
|
|
case "$console_config" in
|
|
"1")
|
|
echo "Enable console config to $console_config"
|
|
echo 0 > /proc/sys/kernel/printk
|
|
;;
|
|
*)
|
|
echo "Enable console config to $console_config"
|
|
;;
|
|
esac
|
|
|
|
# Parse misc partition path and set property
|
|
misc_link=$(ls -l /dev/block/bootdevice/by-name/misc)
|
|
real_path=${misc_link##*>}
|
|
setprop persist.vendor.mmi.misc_dev_path $real_path
|
|
|