From 0833af2c38c7acfa3b10f8b2ee6d1372f1448d7d Mon Sep 17 00:00:00 2001 From: Ivan Vecera Date: Fri, 19 Jan 2024 18:05:05 +0100 Subject: [PATCH] sdm710-common: rootdir: Move all static parameters to init.qcom.power.rc Move the rest of static configuration parameters from init.qcom.post_boot.sh to init.qcom.power.rc. Change-Id: I18d8aa7bdd4f2807246dafd9c47fc7fb9b65dc71 --- rootdir/bin/init.qcom.post_boot.sh | 112 ++--------------------------- rootdir/etc/init.qcom.power.rc | 94 ++++++++++++++++++++++++ sepolicy/vendor/vendor_init.te | 1 + 3 files changed, 99 insertions(+), 108 deletions(-) diff --git a/rootdir/bin/init.qcom.post_boot.sh b/rootdir/bin/init.qcom.post_boot.sh index 4d397ea..cc6e3a8 100644 --- a/rootdir/bin/init.qcom.post_boot.sh +++ b/rootdir/bin/init.qcom.post_boot.sh @@ -73,115 +73,11 @@ function configure_read_ahead_kb_values() { done } -function configure_memory_parameters() { - # 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 allocstall_threshold to 0 for all targets. +# Set ZRAM parameters +configure_zram_parameters - # Set PPR parameters - echo 6 > /sys/module/process_reclaim/parameters/min_score_adj - echo 0 > /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 - - # 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 -} - -# 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 - -# 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 - -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 - -# 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 +# Set read ahead parameters +configure_read_ahead_kb_values emmc_boot=`getprop vendor.boot.emmc` case "$emmc_boot" diff --git a/rootdir/etc/init.qcom.power.rc b/rootdir/etc/init.qcom.power.rc index 8d0e03a..fe9a043 100644 --- a/rootdir/etc/init.qcom.power.rc +++ b/rootdir/etc/init.qcom.power.rc @@ -80,6 +80,82 @@ on property:init.svc.vendor.charger=running start vendor.thermal-engine on enable-low-power + # 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. + write /proc/irq/default_smp_affinity "3f" + + # Core control parameters on silver + write /sys/devices/system/cpu/cpu0/core_ctl/not_preferred "0 0 0 0 1 1" + write /sys/devices/system/cpu/cpu0/core_ctl/min_cpus 4 + write /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres 60 + write /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres 40 + write /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms 100 + write /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster 0 + write /sys/devices/system/cpu/cpu0/core_ctl/task_thres 8 + + # Setting b.L scheduler parameters + write /proc/sys/kernel/sched_upmigrate 96 + write /proc/sys/kernel/sched_downmigrate 90 + write /proc/sys/kernel/sched_group_upmigrate 140 + write /proc/sys/kernel/sched_group_downmigrate 120 + write /proc/sys/kernel/sched_walt_rotate_big_tasks 1 + + # Configure governor settings for little cluster + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "schedutil" + write /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us 0 + write /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq 1209600 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 576000 + + # Configure governor settings for big cluster + write /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor "schedutil" + write /sys/devices/system/cpu/cpu6/cpufreq/schedutil/rate_limit_us 0 + write /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq 1344000 + write /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq 652800 + + # Set sched_load_boost as -6 that is equivalent to target load as 85. + write /sys/devices/system/cpu/cpu6/sched_load_boost -6 + write /sys/devices/system/cpu/cpu7/sched_load_boost -6 + write /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load 85 + + write /sys/module/cpu_boost/parameters/input_boost_freq "0:1209600" + write /sys/module/cpu_boost/parameters/input_boost_ms 40 + + # Memory parameters + + # Set per_process_reclaim tuning parameters: + # - vmpressure range: 50-70 + # - swap size: 512 pages + write /sys/module/process_reclaim/parameters/min_score_adj 6 + write /sys/module/process_reclaim/parameters/enable_process_reclaim 0 + write /sys/module/process_reclaim/parameters/pressure_min 50 + write /sys/module/process_reclaim/parameters/pressure_max 70 + write /sys/module/process_reclaim/parameters/swap_opt_eff 30 + write /sys/module/process_reclaim/parameters/per_swap_size 512 + + # Set allocstall_threshold to 0 + write /sys/module/vmpressure/parameters/allocstall_threshold 0 + + # Set swappiness to 100 for all targets + write /proc/sys/vm/swappiness 100 + + # Disable wsf because we are using efk. + # wsf Range : 1..1000 So set to bare minimum value 1. + write /proc/sys/vm/watermark_scale_factor 1 + + # Enable bus-dcvs + write /sys/class/devfreq/soc:qcom,cpubw/governor "bw_hwmon" + write /sys/class/devfreq/soc:qcom,cpubw/polling_interval 50 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/mbps_zones "1144 1720 2086 2929 3879 5931 6881" + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/sample_ms 4 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent 68 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hist_memory 20 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_length 0 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/down_thres 80 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps 0 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/up_scale 250 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/idle_mbps 1600 + # Enable mem_latency governor for DDR scaling write /sys/class/devfreq/soc:qcom,memlat-cpu0/governor "mem_latency" write /sys/class/devfreq/soc:qcom,memlat-cpu0/polling_interval 10 @@ -102,6 +178,18 @@ on enable-low-power write /sys/class/devfreq/soc:qcom,l3-cdsp/governor "userspace" chown system /sys/class/devfreq/soc:qcom,l3-cdsp/userspace/set_freq + write /sys/class/devfreq/soc:qcom,mincpubw/governor "cpufreq" + + # Disable CPU Retention + write /sys/module/lpm_levels/L3/cpu0/ret/idle_enabled "N" + write /sys/module/lpm_levels/L3/cpu1/ret/idle_enabled "N" + write /sys/module/lpm_levels/L3/cpu2/ret/idle_enabled "N" + write /sys/module/lpm_levels/L3/cpu3/ret/idle_enabled "N" + write /sys/module/lpm_levels/L3/cpu4/ret/idle_enabled "N" + write /sys/module/lpm_levels/L3/cpu5/ret/idle_enabled "N" + write /sys/module/lpm_levels/L3/cpu6/ret/idle_enabled "N" + write /sys/module/lpm_levels/L3/cpu7/ret/idle_enabled "N" + # Set cpuset parameters write /dev/cpuset/background/cpus 4-5 write /dev/cpuset/system-background/cpus 2-5 @@ -110,6 +198,12 @@ on enable-low-power write /dev/cpuset/top-app/cpus 0-7 write /dev/cpuset/restricted/cpus 2-5 + # Turn off scheduler boost at the end + write /proc/sys/kernel/sched_boost 0 + + # Turn on sleep modes + write /sys/module/lpm_levels/parameters/sleep_disabled 0 + # Enable idle state listener write /sys/class/drm/card0/device/idle_encoder_mask 1 write /sys/class/drm/card0/device/idle_timeout_ms 100 diff --git a/sepolicy/vendor/vendor_init.te b/sepolicy/vendor/vendor_init.te index 9130be7..e5ee23f 100644 --- a/sepolicy/vendor/vendor_init.te +++ b/sepolicy/vendor/vendor_init.te @@ -1,4 +1,5 @@ allow vendor_init proc_sysctl_autogroup:file w_file_perms; allow vendor_init proc_sysctl_schedboost:file w_file_perms; +allow vendor_init proc_watermark_scale_factor:file w_file_perms; set_prop(vendor_init, vendor_power_prop)