sapphire: rootdir: Dynamically set IRQ affinity for KGSL and MSM_DRM

- Introduce a new shell script to set IRQ affinity, since different
  kernels can have different IRQ numbers.

Change-Id: I61d2350e6b40f096714148c568489579bc4d2371
Co-Authored-By: Alex Naidis <alex.naidis@paranoidandroid.co>
Co-Authored-By: Jake Weinstein <jake@aospa.co>
This commit is contained in:
Adithya R
2024-02-14 09:25:55 -06:00
committed by kibria5
parent e0ff20d4ac
commit 858a1ec7e9
6 changed files with 39 additions and 0 deletions

View File

@@ -318,6 +318,7 @@ PRODUCT_PACKAGES += \
init.qti.early_init.sh \
init.qti.kernel.sh \
init.qti.write.sh \
init.sapphire_perf.sh \
system_dlkm_modprobe.sh \
vendor_modprobe.sh

View File

@@ -74,6 +74,12 @@ sh_binary {
vendor: true,
}
sh_binary {
name: "init.sapphire_perf.sh",
src: "bin/init.sapphire_perf.sh",
vendor: true,
}
sh_binary {
name: "init.kernel.post_boot-bengal.sh",
src: "bin/init.kernel.post_boot-bengal.sh",

View File

@@ -0,0 +1,25 @@
#!/vendor/bin/sh
#
# Copyright (C) 2024 Paranoid Android
# SPDX-License-Identifier: Apache-2.0
#
function write_irq_affinity() {
# Arguments:
# $1 = irq name
# $2 = cpu id
irq_dir="$(dirname /proc/irq/*/$1)"
[ -d "$irq_dir" ] && echo $2 > "${irq_dir}/smp_affinity_list"
}
# IRQ Tuning
# kgsl_3d0_irq -> CPU 1
# msm_drm -> CPU 2
write_irq_affinity kgsl_3d0_irq 1
write_irq_affinity msm_drm 2
# IRQ Tuning for pre-5.4 targets
write_irq_affinity kgsl-3d0 1
# IRQ Tuning for MDSS targets
write_irq_affinity MDSS 2

View File

@@ -6,6 +6,8 @@ on property:sys.boot_completed=1
copy_per_line /dev/cpuctl/tasks /dev/cpuctl/system/tasks
on property:vendor.post_boot.parsed=1
exec u:r:vendor_qti_init_shell:s0 -- /vendor/bin/init.sapphire_perf.sh
# cpuset parameters
write /dev/cpuset/background/cpus 0-1
write /dev/cpuset/system-background/cpus 0-3

View File

@@ -27,6 +27,9 @@
# Health
/vendor/bin/hw/android\.hardware\.health-service\.xiaomi u:object_r:hal_health_default_exec:s0
# Init
/(vendor|system/vendor)/bin/init\.sapphire_perf\.sh u:object_r:vendor_qti_init_shell_exec:s0
# Mac Address
/data/vendor/mac_addr(/.*)? u:object_r:vendor_mac_vendor_data_file:s0
/vendor/bin/nv_mac u:object_r:vendor_wcnss_service_exec:s0

View File

@@ -1,3 +1,5 @@
allow vendor_qti_init_shell proc:dir r_dir_perms;
allow vendor_qti_init_shell proc:file rw_file_perms;
allow vendor_qti_init_shell configfs:dir { add_name create write };
# NECESSARY?
allow vendor_qti_init_shell configfs:dir setattr;