1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
on boot
# add a cpuset for the camera daemon
# we want all the little cores for camera
mkdir /dev/cpuset/camera-daemon
chown system system /dev/cpuset/camera-daemon
chown system system /dev/cpuset/camera-daemon/tasks
chmod 0664 /dev/cpuset/camera-daemon/tasks
# update foreground cpuset now that processors are up
# reserve CPU 4 for the top app
write /dev/cpuset/foreground/cpus 0-3,5-7
write /dev/cpuset/foreground/boost/cpus 0-3
write /dev/cpuset/background/cpus 4
write /dev/cpuset/system-background/cpus 5-7
write /dev/cpuset/top-app/cpus 0-7
write /dev/cpuset/camera-daemon/cpus 4-7
on enable-low-power
# HMP scheduler settings
write /proc/sys/kernel/sched_window_stats_policy 3
write /proc/sys/kernel/sched_ravg_hist_size 3
write /proc/sys/kernel/sched_ravg_window 20000000
# HMP Task packing settings
write /proc/sys/kernel/sched_small_task 20
write /sys/devices/system/cpu/cpu0/sched_mostly_idle_load 30
write /sys/devices/system/cpu/cpu1/sched_mostly_idle_load 30
write /sys/devices/system/cpu/cpu2/sched_mostly_idle_load 30
write /sys/devices/system/cpu/cpu3/sched_mostly_idle_load 30
write /sys/devices/system/cpu/cpu4/sched_mostly_idle_load 30
write /sys/devices/system/cpu/cpu5/sched_mostly_idle_load 30
write /sys/devices/system/cpu/cpu6/sched_mostly_idle_load 30
write /sys/devices/system/cpu/cpu7/sched_mostly_idle_load 30
write /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run 3
write /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run 3
write /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run 3
write /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run 3
write /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run 3
write /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run 3
write /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run 3
write /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run 3
write /sys/devices/system/cpu/cpu0/sched_prefer_idle 0
write /sys/devices/system/cpu/cpu1/sched_prefer_idle 0
write /sys/devices/system/cpu/cpu2/sched_prefer_idle 0
write /sys/devices/system/cpu/cpu3/sched_prefer_idle 0
write /sys/devices/system/cpu/cpu4/sched_prefer_idle 0
write /sys/devices/system/cpu/cpu5/sched_prefer_idle 0
write /sys/devices/system/cpu/cpu6/sched_prefer_idle 0
write /sys/devices/system/cpu/cpu7/sched_prefer_idle 0
write /sys/class/devfreq/qcom,mincpubw.53/governor "cpufreq"
write /sys/class/devfreq/qcom,cpubw.52/governor "bw_hwmon"
write /sys/class/devfreq/qcom,cpubw.52/bw_hwmon/io_percent 20
write /sys/class/devfreq/qcom,cpubw.52/bw_hwmon/guard_band_mbps 30
write /sys/class/devfreq/qcom,gpubw.39/governor "bw_hwmon"
write /sys/class/devfreq/qcom,gpubw.39/bw_hwmon/io_percent 40
# disable thermal & BCL core_control to update interactive gov settings
write /sys/module/msm_thermal/core_control/enabled 0
write /sys/devices/soc.0/qcom,bcl.58/mode "disable"
write /sys/devices/soc.0/qcom,bcl.58/hotplug_mask 0
write /sys/devices/soc.0/qcom,bcl.58/hotplug_soc_mask 0
write /sys/devices/soc.0/qcom,bcl.58/mode "enable"
# enable governor for perf cluster
write /sys/devices/system/cpu/cpu0/online 1
write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "interactive"
write /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay "19000 1113600:39000"
write /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load 85
write /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate 20000
write /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq 1113600
write /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy 0
write /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads "1 960000:85 1113600:90 1344000:80"
write /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time 40000
write /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor 40000
write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 960000
# enable governor for power cluster
write /sys/devices/system/cpu/cpu4/online 1
write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor "interactive"
write /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay 39000
write /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load 90
write /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate 20000
write /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq 806400
write /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy 0
write /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads "1 800000:90"
write /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time 40000
write /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor 40000
write /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq 800000
# re-enable thermal & BCL core_control now
write /sys/module/msm_thermal/core_control/enabled 1
write /sys/devices/soc.0/qcom,bcl.58/mode "disable"
write /sys/devices/soc.0/qcom,bcl.58/hotplug_mask 12
write /sys/devices/soc.0/qcom,bcl.58/hotplug_soc_mask 15
write /sys/devices/soc.0/qcom,bcl.58/mode "enable"
# Bring up all cores online
write /sys/devices/system/cpu/cpu1/online 1
write /sys/devices/system/cpu/cpu2/online 1
write /sys/devices/system/cpu/cpu3/online 1
write /sys/devices/system/cpu/cpu4/online 1
write /sys/devices/system/cpu/cpu5/online 1
write /sys/devices/system/cpu/cpu6/online 1
write /sys/devices/system/cpu/cpu7/online 1
# Enable LPM Prediction
write /sys/module/lpm_levels/parameters/lpm_prediction 1
# Enable Low power modes
write /sys/module/lpm_levels/parameters/sleep_disabled 0
# HMP scheduler (big.Little cluster related) settings
write /proc/sys/kernel/sched_upmigrate 93
write /proc/sys/kernel/sched_downmigrate 83
# Enable sched guided freq control
write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load 1
write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif 1
write /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load 1
write /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif 1
write /proc/sys/kernel/sched_freq_inc_notify 50000
write /proc/sys/kernel/sched_freq_dec_notify 50000
# Input boost config
write /sys/module/cpu_boost/parameters/input_boost_freq 960000
write /sys/module/cpu_boost/parameters/input_boost_ms 40
# Enable core control
write /sys/devices/system/cpu/cpu0/core_ctl/min_cpus 0
write /sys/devices/system/cpu/cpu0/core_ctl/max_cpus 4
write /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres 72
write /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres 28
write /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms 100
write /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster 1
write /sys/devices/system/cpu/cpu0/core_ctl/task_thres 4
# RPS
write /sys/class/net/rmnet_ipa0/queues/rx-0/rps_cpus "f0"
# Enable dynamic clock gating
write /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating 1
# Enable timer migration to little cluster
write /proc/sys/kernel/power_aware_timer_migration 1
# Process reclaim
write /sys/module/process_reclaim/parameters/enable_process_reclaim 1
write /sys/module/process_reclaim/parameters/pressure_min 10
write /sys/module/process_reclaim/parameters/per_swap_size 1024
write /sys/module/process_reclaim/parameters/pressure_max 70
write /sys/module/process_reclaim/parameters/swap_opt_eff 30
rm /data/system/perfd/default_values
start perfd
on class_start:late_start
trigger enable-low-power
on property:init.svc.recovery=running
trigger enable-low-power
on property:dev.bootcomplete=1
setprop sys.io.scheduler "bfq"
|