From 858a1ec7e9fa7b7434d027beeecad0789a1a223b Mon Sep 17 00:00:00 2001 From: Adithya R Date: Wed, 14 Feb 2024 09:25:55 -0600 Subject: [PATCH] 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 Co-Authored-By: Jake Weinstein --- device.mk | 1 + rootdir/Android.bp | 6 ++++++ rootdir/bin/init.sapphire_perf.sh | 25 ++++++++++++++++++++++++ rootdir/etc/init.sapphire.perf.rc | 2 ++ sepolicy/vendor/file_contexts | 3 +++ sepolicy/vendor/vendor_qti_init_shell.te | 2 ++ 6 files changed, 39 insertions(+) create mode 100644 rootdir/bin/init.sapphire_perf.sh diff --git a/device.mk b/device.mk index 32adea2..64e0bc1 100644 --- a/device.mk +++ b/device.mk @@ -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 diff --git a/rootdir/Android.bp b/rootdir/Android.bp index c27b21d..198f42c 100644 --- a/rootdir/Android.bp +++ b/rootdir/Android.bp @@ -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", diff --git a/rootdir/bin/init.sapphire_perf.sh b/rootdir/bin/init.sapphire_perf.sh new file mode 100644 index 0000000..f97c352 --- /dev/null +++ b/rootdir/bin/init.sapphire_perf.sh @@ -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 diff --git a/rootdir/etc/init.sapphire.perf.rc b/rootdir/etc/init.sapphire.perf.rc index fed4f16..b4f6eb4 100644 --- a/rootdir/etc/init.sapphire.perf.rc +++ b/rootdir/etc/init.sapphire.perf.rc @@ -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 diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts index 6131e0c..f9ecfd9 100644 --- a/sepolicy/vendor/file_contexts +++ b/sepolicy/vendor/file_contexts @@ -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 diff --git a/sepolicy/vendor/vendor_qti_init_shell.te b/sepolicy/vendor/vendor_qti_init_shell.te index a6345b1..a8241b0 100644 --- a/sepolicy/vendor/vendor_qti_init_shell.te +++ b/sepolicy/vendor/vendor_qti_init_shell.te @@ -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;