name: add kernel optimizations description: apply patches from kernel patches repo for kernel optimization runs: using: composite steps: - name: apply patches shell: bash run: | cd "$COMMON" MIN_VERSION="5.16" patch -p1 < "$KERNEL_PATCHES/common/optimized_mem_operations.patch" patch -p1 < "$KERNEL_PATCHES/common/file_struct_8bytes_align.patch" if [[ $BRANCH != SM-S926* && $BRANCH != SM-A546* && $BRANCH != SM-A356* ]]; then patch -p1 < "$KERNEL_PATCHES/common/reduce_cache_pressure.patch" patch -p1 < "$KERNEL_PATCHES/common/mem_opt_prefetch.patch" else echo "skipping cache pressure and opt prefetch patch for S24 plus" fi if [[ $BRANCH == SM-A546* || $BRANCH == SM-S926* || $BRANCH == SM-A556* || $BRANCH == SM-M146B* || $BRANCH == SM-S908B* || $BRANCH == SM-A356* ]]; then if [ "$(printf '%s\n' "$KERNEL_VER" "$MIN_VERSION" | sort -V | tail -n1)" = "$KERNEL_VER" ]; then patch -p1 < "$KERNEL_PATCHES/common/Samsung/optimise_memcmp_exynos.patch" elif [ "$(printf '%s\n' "$KERNEL_VER" "5.11" | sort -V | tail -n1)" = "$KERNEL_VER" ]; then sed -e 's/SYM_FUNC_START(__pi_memcmp)/SYM_FUNC_START_WEAK_PI(memcmp)/' -e 's/SYM_FUNC_END(__pi_memcmp)/SYM_FUNC_END_PI(memcmp)/' -e 's/SYM_FUNC_ALIAS_WEAK(memcmp, __pi_memcmp)/EXPORT_SYMBOL_NOKASAN(memcmp)/' "$KERNEL_PATCHES/common/Samsung/optimise_memcmp_exynos.patch" | patch -p1 else patch -p1 < "$KERNEL_PATCHES/common/Samsung/optimise_noneon_memcmp_android12_5.10.patch" fi else if [ "$(printf '%s\n' "$KERNEL_VER" "$MIN_VERSION" | sort -V | tail -n1)" = "$KERNEL_VER" ]; then patch -p1 < "$KERNEL_PATCHES/common/optimise_memcmp.patch" elif [ "$(printf '%s\n' "$KERNEL_VER" "5.11" | sort -V | tail -n1)" = "$KERNEL_VER" ]; then sed -e 's/SYM_FUNC_START(__pi_memcmp)/SYM_FUNC_START_WEAK_PI(memcmp)/' -e 's/SYM_FUNC_END(__pi_memcmp)/SYM_FUNC_END_PI(memcmp)/' -e 's/SYM_FUNC_ALIAS_WEAK(memcmp, __pi_memcmp)/EXPORT_SYMBOL_NOKASAN(memcmp)/' "$KERNEL_PATCHES/common/optimise_memcmp.patch" | patch -p1 else patch -p1 < "$KERNEL_PATCHES/common/Samsung/optimise_noneon_memcmp_android12_5.10.patch" fi fi sed -i 's/pm_wakeup_event(dev, 2 \* MSEC_PER_SEC);/pm_wakeup_event(dev, ktime_to_ms(min) + 1);/' kernel/time/alarmtimer.c patch -p1 < "$KERNEL_PATCHES/common/int_sqrt.patch" if [[ $BRANCH != SM-S926* && $BRANCH != SM-A546* && $BRANCH != SM-A356* ]]; then #patch -p1 < "$KERNEL_PATCHES/common/force_tcp_nodelay.patch" patch -p1 < "$KERNEL_PATCHES/common/reduce_gc_thread_sleep_time.patch" else echo "skipping force tcp no delay and reduce gc thread sleep time patches for s24 plus" fi patch -p1 < "$KERNEL_PATCHES/common/add_timeout_wakelocks_globally.patch" patch -p1 < "$KERNEL_PATCHES/common/f2fs_reduce_congestion.patch" patch -p1 < "$KERNEL_PATCHES/common/reduce_freeze_timeout.patch" if [ "$(printf '%s\n' "$KERNEL_VER" "$MIN_VERSION" | sort -V | head -n1)" = "$KERNEL_VER" ]; then patch -p1 < "$KERNEL_PATCHES/common/clear_page_16bytes_align.patch" else sed -e 's/SYM_FUNC_START_PI(clear_page)/SYM_FUNC_START(__pi_clear_page)/' "$KERNEL_PATCHES/common/clear_page_16bytes_align.patch" | patch -p1 fi echo "Patching add_limitation_scaling_min_freq.patch" patch -p1 < "$KERNEL_PATCHES/common/add_limitation_scaling_min_freq.patch" echo "Patching re_write_limitation_scaling_min_freq.patch" patch -p1 < "$KERNEL_PATCHES/common/re_write_limitation_scaling_min_freq.patch" echo "Patching adjust_cpu_scan_order.patch" patch -p1 < "$KERNEL_PATCHES/common/adjust_cpu_scan_order.patch" echo "patching void_extra_s2idle_wake_attempts.patch" if [[ "$BRANCH" == "SM-S928B-Oneui8.5" || "$BRANCH" == "SM-S926B-Oneui8.5" || "$BRANCH" == "SM-S938B-Oneui8.5" || "$BRANCH" == "SM-S931B-Oneui8.5" ]]; then patch -p1 < "$KERNEL_PATCHES/common/Samsung/avoid_extra_s2idle_wake_attempts_oneui8.5.patch" else patch -p1 < "$KERNEL_PATCHES/common/avoid_extra_s2idle_wake_attempts.patch" fi if [[ $BRANCH != SM-S926* && $BRANCH != SM-A546* && $BRANCH != SM-A356* ]]; then echo "Patching disable_cache_hot_buddy.patch" patch -p1 < "$KERNEL_PATCHES/common/disable_cache_hot_buddy.patch" else echo "skipping disable_cache_hot_buddy" fi echo "Patching f2fs_enlarge_min_fsync_blocks.patch" patch -p1 < "$KERNEL_PATCHES/common/f2fs_enlarge_min_fsync_blocks.patch" echo "Patching increase_ext4_default_commit_age.patch" patch -p1 < "$KERNEL_PATCHES/common/increase_ext4_default_commit_age.patch" echo "Patching increase_sk_mem_packets.patch" patch -p1 < "$KERNEL_PATCHES/common/increase_sk_mem_packets.patch" echo "Patching reduce_pci_pme_wakeups.patch" patch -p1 < "$KERNEL_PATCHES/common/reduce_pci_pme_wakeups.patch" echo "Patching silence_irq_cpu_logspam.patch" patch -p1 < "$KERNEL_PATCHES/common/silence_irq_cpu_logspam.patch" echo "Patching silence_system_logspam.patch" patch -p1 < "$KERNEL_PATCHES/common/silence_system_logspam.patch" echo "Patching use_unlikely_wrap_cpufreq.patch" patch -p1 < "$KERNEL_PATCHES/common/use_unlikely_wrap_cpufreq.patch" - name: apply configs to defconfig from ahmad al-nassif from gki-duchamp shell: bash run: | echo "applying configs for universal performance tuning" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_HZ_300 "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --set-val CONFIG_HZ 300 "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_CPU_FREQ "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_CPU_FREQ_GOV_SCHEDUTIL "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_CPU_FREQ_GOV_ONDEMAND echo "frame warn off" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --set-val CONFIG_FRAME_WARN 0 echo "optimize inlining" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_OPTIMIZE_INLINING echo "better i/o and filesystem performance" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_SWAP "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_BLK_DEV_ZRAM "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_ZRAM_DEF_COMP "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_ZRAM_WRITEBACK "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_ZRAM_MEMORY_TRACKING echo "modern I/O scheduler" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_MQ_IOSCHED_DEADLINE "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_DEFAULT_DEADLINE echo "f2fs optimizations" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_F2FS_FS "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_F2FS_FS_XATTR "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_F2FS_FS_POSIX_ACL "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_F2FS_FS_COMPRESSION echo "memory improvements" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_LRU_GEN "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_LRU_GEN_ENABLED echo "netfilter/xtables Targets" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_HMARK "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_CLASSIFY "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_CONNMARK "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_CONNSECMARK "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_DSCP "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_IDLETIMER "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_MARK "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_NFLOG echo "Netfilter/Xtables matches" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_ECN "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_HL "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_IPVS "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_LENGTH "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_LIMIT "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_MAC "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_MARK "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_POLICY "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_PKTTYPE "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_QTAGUID "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_QUOTA "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_SOCKET "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_STATE "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_STATISTIC "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_STRING "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_TCPMSS "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_TIME "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_U32 echo "traffic control" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_BASIC "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_FW "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_U32 "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_FLOW "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_RSVP "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_RSVP6 "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_BPF "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH_CMP "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH_NBYTE "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH_U32 "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH_META "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH_TEXT echo "IPv4 NAT" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_TARGET_MASQUERADE "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_TARGET_NETMAP "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_TARGET_REDIRECT "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_MANGLE "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_RAW "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_SECURITY "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_ARPTABLES echo "IPv6" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP6_NF_MATCH_HL "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP6_NF_TARGET_HL echo "filesystems" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_EXFAT_FS "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_MSDOS_FS "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_VFAT_FS "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_INCREMENTAL_FS echo "compression" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_ZSTD_COMPRESS "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_ZSTD_DECOMPRESS echo "crash logging" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_PSTORE "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_PSTORE_CONSOLE "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_PSTORE_RAM echo "IPv6 features" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_ROUTER_PREF "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_ROUTE_INFO "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_OPTIMISTIC_DAD "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_MULTIPLE_TABLES "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_SUBTREES "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_MROUTE "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_MROUTE_MULTIPLE_TABLES "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_PIMSM_V2 echo "IPsec" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_IPVTI "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_INET_ESP echo "diagnostics" "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_INET_UDP_DIAG "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_INET_DIAG_DESTROY