aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Daynard <nardholio@gmail.com>2015-09-13 02:02:36 -0400
committerdoc HD <doc.divxm@gmail.com>2015-09-19 00:35:56 +0300
commita7c8cd44a2a2ef84afac33c88313ef7022f99b0c (patch)
treef048b08e271ce6c70a49f8f9b63530872ab4475c
parent4c67229126f1a73fc1f0c9e1081cb78002ba451c (diff)
msm8960: factor out power modes
Move readahead to kernel Set KSM sleep interval to 2 seconds Don't run KSM during boot Switch to bfq after boot Use interactive for the entire boot process, it's well tuned, it can handle dex2oat Set boost parameter for interactive while booting Change-Id: I25f692c3f98e566244fdf716cfb9bb1acd561ed0
-rw-r--r--msm8960.mk1
-rw-r--r--rootdir/Android.mk8
-rw-r--r--rootdir/etc/init.qcom.power.rc134
-rw-r--r--rootdir/etc/init.qcom.rc136
4 files changed, 144 insertions, 135 deletions
diff --git a/msm8960.mk b/msm8960.mk
index ebfbed3..1da195b 100644
--- a/msm8960.mk
+++ b/msm8960.mk
@@ -185,6 +185,7 @@ PRODUCT_PACKAGES += \
PRODUCT_PACKAGES += \
fstab.qcom \
init.led.sh \
+ init.qcom.power.rc \
init.qcom.rc \
init.qcom.usb.rc \
ueventd.qcom.rc
diff --git a/rootdir/Android.mk b/rootdir/Android.mk
index d2aa914..3a4a033 100644
--- a/rootdir/Android.mk
+++ b/rootdir/Android.mk
@@ -1,6 +1,14 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
+LOCAL_MODULE := init.qcom.power.rc
+LOCAL_MODULE_TAGS := optional eng
+LOCAL_MODULE_CLASS := ETC
+LOCAL_SRC_FILES := etc/init.qcom.power.rc
+LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.rc
LOCAL_MODULE_TAGS := optional eng
LOCAL_MODULE_CLASS := ETC
diff --git a/rootdir/etc/init.qcom.power.rc b/rootdir/etc/init.qcom.power.rc
new file mode 100644
index 0000000..f2cc4d3
--- /dev/null
+++ b/rootdir/etc/init.qcom.power.rc
@@ -0,0 +1,134 @@
+
+on early-init
+ setprop sys.io.scheduler noop
+ setprop sys.perf.profile 1
+
+on enable-low-power
+ write /sys/module/rpm_resources/enable_low_power/L2_cache 1
+ write /sys/module/rpm_resources/enable_low_power/pxo 1
+ write /sys/module/rpm_resources/enable_low_power/vdd_dig 1
+ write /sys/module/rpm_resources/enable_low_power/vdd_mem 1
+ write /sys/module/pm_8x60/modes/cpu0/retention/idle_enabled 1
+ write /sys/module/pm_8x60/modes/cpu1/retention/idle_enabled 1
+ write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1
+ write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1
+ write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled 1
+ write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled 1
+ write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled 1
+ write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled 1
+ write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1
+ write /sys/devices/system/cpu/cpu1/online 1
+ write /sys/devices/system/cpu/cpufreq/interactive/min_sample_time 90000
+ write /sys/devices/system/cpu/cpufreq/interactive/max_freq_hysteresis 100000
+ write /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq 918000
+ write /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay 30000
+ write /sys/devices/system/cpu/cpufreq/interactive/timer_rate 30000
+ write /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load 90
+ write /sys/devices/system/cpu/cpufreq/interactive/io_is_busy 1
+ write /sys/devices/system/cpu/cpufreq/interactive/boost 1
+ write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 384000
+ write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 384000
+ chown root system /sys/devices/system/cpu/mfreq
+ chmod 220 /sys/devices/system/cpu/mfreq
+ chown system system /sys/devices/system/cpu/cpu1/online
+ chmod 664 /sys/devices/system/cpu/cpu1/online
+ # Set DCVS parameters for CPU
+ write /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us 40000
+ write /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us 40000
+ write /sys/module/msm_dcvs/cores/cpu0/em_win_size_min_us 100000
+ write /sys/module/msm_dcvs/cores/cpu0/em_win_size_max_us 500000
+ write /sys/module/msm_dcvs/cores/cpu0/slack_mode_dynamic 0
+ write /sys/module/msm_dcvs/cores/cpu0/disable_pc_threshold 1000000
+ write /sys/module/msm_dcvs/cores/cpu1/slack_time_max_us 25000
+ write /sys/module/msm_dcvs/cores/cpu1/slack_time_min_us 25000
+ write /sys/module/msm_dcvs/cores/cpu1/em_win_size_min_us 100000
+ write /sys/module/msm_dcvs/cores/cpu1/em_win_size_max_us 500000
+ write /sys/module/msm_dcvs/cores/cpu1/slack_mode_dynamic 0
+ write /sys/module/msm_dcvs/cores/cpu1/disable_pc_threshold 1000000
+ # Set DCVS parameters for GPU
+ write /sys/module/msm_dcvs/cores/gpu0/slack_time_max_us 20000
+ write /sys/module/msm_dcvs/cores/gpu0/slack_time_min_us 20000
+ write /sys/module/msm_dcvs/cores/gpu0/slack_mode_dynamic 0
+ # Set msm_mpdecision parameters
+ write /sys/module/msm_mpdecision/slack_time_max_us 45000
+ write /sys/module/msm_mpdecision/slack_time_min_us 15000
+ write /sys/module/msm_mpdecision/em_win_size_min_us 100000
+ write /sys/module/msm_mpdecision/em_win_size_max_us 1000000
+ write /sys/module/msm_mpdecision/online_util_pct_min 3
+ write /sys/module/msm_mpdecision/online_util_pct_max 25
+ write /sys/module/msm_mpdecision/em_max_util_pct 97
+ write /sys/module/msm_mpdecision/rq_avg_poll_ms 2
+ write /sys/module/msm_mpdecision/mp_em_rounding_point_min 10
+ write /sys/module/msm_mpdecision/mp_em_rounding_point_max 85
+ write /sys/module/msm_mpdecision/iowait_threshold_pct 50
+ # Set permissions for the nodes needed by display on/off hook
+ chown system system /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us
+ chown system system /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us
+ chown system system /sys/module/msm_mpdecision/slack_time_max_us
+ chown system system /sys/module/msm_mpdecision/slack_time_min_us
+ chmod 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us
+ chmod 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us
+ chmod 664 /sys/module/msm_mpdecision/slack_time_max_us
+ chmod 664 /sys/module/msm_mpdecision/slack_time_min_us
+
+on property:sys.boot_completed=1
+ setprop sys.io.scheduler bfq
+ write /sys/devices/system/cpu/cpufreq/interactive/boost 0
+
+ # Set up KSM
+ write /sys/kernel/mm/ksm/deferred_timer 1
+ write /sys/kernel/mm/ksm/pages_to_scan 100
+ write /sys/kernel/mm/ksm/sleep_millisecs 2000
+ write /sys/kernel/mm/ksm/run 1
+
+on charger
+ mount_all fstab.qcom
+ class_start charger
+ write /sys/devices/system/cpu/cpu1/online 1
+ write /sys/module/rpm_resources/enable_low_power/L2_cache 1
+ write /sys/module/rpm_resources/enable_low_power/pxo 1
+ write /sys/module/rpm_resources/enable_low_power/vdd_dig 1
+ write /sys/module/rpm_resources/enable_low_power/vdd_mem 1
+ write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1
+ write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1
+ write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled 1
+ write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled 1
+ write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled 1
+ write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled 1
+ write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 0
+ write /sys/module/pm_8x60/modes/cpu1/power_collapse/idle_enabled 0
+ write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave"
+ write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "powersave"
+ write /sys/devices/system/cpu/cpu1/online 0
+
+on class_start:late_start
+ trigger enable-low-power
+
+# CM Performance Profiles
+
+# Powersave
+on property:sys.perf.profile=0
+ stop mpdecision
+ write /sys/devices/system/cpu/cpu1/online 1
+ write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor conservative
+ write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor conservative
+ write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor ondemand
+ start mpdecision
+
+# Balanced
+on property:sys.perf.profile=1
+ stop mpdecision
+ write /sys/devices/system/cpu/cpu1/online 1
+ write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive
+ write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor interactive
+ write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor ondemand
+ start mpdecision
+
+# High performance
+on property:sys.perf.profile=2
+ stop mpdecision
+ write /sys/devices/system/cpu/cpu1/online 1
+ write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor performance
+ write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor performance
+ write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor performance
+
diff --git a/rootdir/etc/init.qcom.rc b/rootdir/etc/init.qcom.rc
index c11f236..2397327 100644
--- a/rootdir/etc/init.qcom.rc
+++ b/rootdir/etc/init.qcom.rc
@@ -26,11 +26,9 @@
#
import init.target.rc
import init.qcom.usb.rc
+import init.qcom.power.rc
on early-init
- write /sys/block/mmcblk0/queue/scheduler noop
- setprop sys.perf.profile 2
-
mkdir /firmware-mdm 0771 system system
symlink /data/tombstones /tombstones
mkdir /efs 0771 system system
@@ -220,10 +218,6 @@ on post-fs
chown system system /sys/block/mmcblk1/queue/scheduler
chmod 0664 /sys/block/mmcblk1/queue/scheduler
- # Increase max readahead size to 512 KB
- write /sys/block/mmcblk0/queue/read_ahead_kb 512
- write /sys/block/mmcblk1/queue/read_ahead_kb 512
-
# for controlling write performance boosting
chown system radio /sys/block/mmcblk0/bkops_en
chmod 0664 /sys/block/mmcblk0/bkops_en
@@ -666,83 +660,6 @@ service iprenew_bt-pan /system/bin/dhcpcd -n
disabled
oneshot
-on property:sys.boot_completed=1
- write /sys/block/mmcblk0/queue/scheduler bfq
- write /sys/module/rpm_resources/enable_low_power/L2_cache 1
- write /sys/module/rpm_resources/enable_low_power/pxo 1
- write /sys/module/rpm_resources/enable_low_power/vdd_dig 1
- write /sys/module/rpm_resources/enable_low_power/vdd_mem 1
- write /sys/module/pm_8x60/modes/cpu0/retention/idle_enabled 1
- write /sys/module/pm_8x60/modes/cpu1/retention/idle_enabled 1
- write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1
- write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1
- write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled 1
- write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled 1
- write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled 1
- write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled 1
- write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1
- write /sys/devices/system/cpu/cpu1/online 1
- write /sys/devices/system/cpu/cpufreq/interactive/min_sample_time 90000
- write /sys/devices/system/cpu/cpufreq/interactive/max_freq_hysteresis 100000
- write /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq 918000
- write /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay 30000
- write /sys/devices/system/cpu/cpufreq/interactive/timer_rate 30000
- write /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load 90
- write /sys/devices/system/cpu/cpufreq/interactive/io_is_busy 1
- write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 384000
- write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 384000
- chown root system /sys/devices/system/cpu/mfreq
- chmod 220 /sys/devices/system/cpu/mfreq
- chown system system /sys/devices/system/cpu/cpu1/online
- chmod 664 /sys/devices/system/cpu/cpu1/online
- # Set DCVS parameters for CPU
- write /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us 40000
- write /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us 40000
- write /sys/module/msm_dcvs/cores/cpu0/em_win_size_min_us 100000
- write /sys/module/msm_dcvs/cores/cpu0/em_win_size_max_us 500000
- write /sys/module/msm_dcvs/cores/cpu0/slack_mode_dynamic 0
- write /sys/module/msm_dcvs/cores/cpu0/disable_pc_threshold 1000000
- write /sys/module/msm_dcvs/cores/cpu1/slack_time_max_us 25000
- write /sys/module/msm_dcvs/cores/cpu1/slack_time_min_us 25000
- write /sys/module/msm_dcvs/cores/cpu1/em_win_size_min_us 100000
- write /sys/module/msm_dcvs/cores/cpu1/em_win_size_max_us 500000
- write /sys/module/msm_dcvs/cores/cpu1/slack_mode_dynamic 0
- write /sys/module/msm_dcvs/cores/cpu1/disable_pc_threshold 1000000
- # Set DCVS parameters for GPU
- write /sys/module/msm_dcvs/cores/gpu0/slack_time_max_us 20000
- write /sys/module/msm_dcvs/cores/gpu0/slack_time_min_us 20000
- write /sys/module/msm_dcvs/cores/gpu0/slack_mode_dynamic 0
- # Set msm_mpdecision parameters
- write /sys/module/msm_mpdecision/slack_time_max_us 45000
- write /sys/module/msm_mpdecision/slack_time_min_us 15000
- write /sys/module/msm_mpdecision/em_win_size_min_us 100000
- write /sys/module/msm_mpdecision/em_win_size_max_us 1000000
- write /sys/module/msm_mpdecision/online_util_pct_min 3
- write /sys/module/msm_mpdecision/online_util_pct_max 25
- write /sys/module/msm_mpdecision/em_max_util_pct 97
- write /sys/module/msm_mpdecision/rq_avg_poll_ms 2
- write /sys/module/msm_mpdecision/mp_em_rounding_point_min 10
- write /sys/module/msm_mpdecision/mp_em_rounding_point_max 85
- write /sys/module/msm_mpdecision/iowait_threshold_pct 50
- # Set permissions for the nodes needed by display on/off hook
- chown system system /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us
- chown system system /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us
- chown system system /sys/module/msm_mpdecision/slack_time_max_us
- chown system system /sys/module/msm_mpdecision/slack_time_min_us
- chmod 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us
- chmod 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us
- chmod 664 /sys/module/msm_mpdecision/slack_time_max_us
- chmod 664 /sys/module/msm_mpdecision/slack_time_min_us
-
- # Set performance profile
- setprop sys.perf.profile 1
-
- # Set up KSM
- write /sys/kernel/mm/ksm/deferred_timer 1
- write /sys/kernel/mm/ksm/pages_to_scan 100
- write /sys/kernel/mm/ksm/sleep_millisecs 500
- write /sys/kernel/mm/ksm/run 1
-
service hdmid /system/bin/hdmid
class late_start
user system
@@ -795,57 +712,6 @@ on property:service.bootanim.exit=1
write /proc/sys/net/ipv6/conf/rmnet_usb2/accept_ra 2
write /proc/sys/net/ipv6/conf/rmnet_usb3/accept_ra 2
-# CM Performance Profiles
-
-# Powersave
-on property:sys.perf.profile=0
- stop mpdecision
- write /sys/devices/system/cpu/cpu0/online 1
- write /sys/devices/system/cpu/cpu1/online 1
- write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor conservative
- write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor conservative
- write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor ondemand
- start mpdecision
-
-# Balanced
-on property:sys.perf.profile=1
- stop mpdecision
- write /sys/devices/system/cpu/cpu0/online 1
- write /sys/devices/system/cpu/cpu1/online 1
- write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive
- write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor interactive
- write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor ondemand
- start mpdecision
-
-# High performance
-on property:sys.perf.profile=2
- stop mpdecision
- write /sys/devices/system/cpu/cpu0/online 1
- write /sys/devices/system/cpu/cpu1/online 1
- write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor performance
- write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor performance
- write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor performance
-
-on charger
- mount_all fstab.qcom
- class_start charger
- write /sys/devices/system/cpu/cpu1/online 1
- write /sys/module/rpm_resources/enable_low_power/L2_cache 1
- write /sys/module/rpm_resources/enable_low_power/pxo 1
- write /sys/module/rpm_resources/enable_low_power/vdd_dig 1
- write /sys/module/rpm_resources/enable_low_power/vdd_mem 1
- write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1
- write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1
- write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled 1
- write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled 1
- write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled 1
- write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled 1
- write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 0
- write /sys/module/pm_8x60/modes/cpu1/power_collapse/idle_enabled 0
- write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave"
- write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "powersave"
- write /sys/devices/system/cpu/cpu1/online 0
-
service charger /charger
class charger
critical