action.yml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. name: add kernel optimizations
  2. description: apply patches from kernel patches repo for kernel optimization
  3. runs:
  4. using: composite
  5. steps:
  6. - name: apply patches
  7. shell: bash
  8. run: |
  9. cd "$COMMON"
  10. MIN_VERSION="5.16"
  11. patch -p1 < "$KERNEL_PATCHES/common/optimized_mem_operations.patch"
  12. patch -p1 < "$KERNEL_PATCHES/common/file_struct_8bytes_align.patch"
  13. if [[ $BRANCH != SM-S926* && $BRANCH != SM-A546* && $BRANCH != SM-A356* ]]; then
  14. patch -p1 < "$KERNEL_PATCHES/common/reduce_cache_pressure.patch"
  15. patch -p1 < "$KERNEL_PATCHES/common/mem_opt_prefetch.patch"
  16. else
  17. echo "skipping cache pressure and opt prefetch patch for S24 plus"
  18. fi
  19. if [[ $BRANCH == SM-A546* || $BRANCH == SM-S926* || $BRANCH == SM-A556* || $BRANCH == SM-M146B* || $BRANCH == SM-S908B* || $BRANCH == SM-A356* ]]; then
  20. if [ "$(printf '%s\n' "$KERNEL_VER" "$MIN_VERSION" | sort -V | tail -n1)" = "$KERNEL_VER" ]; then
  21. patch -p1 < "$KERNEL_PATCHES/common/Samsung/optimise_memcmp_exynos.patch"
  22. elif [ "$(printf '%s\n' "$KERNEL_VER" "5.11" | sort -V | tail -n1)" = "$KERNEL_VER" ]; then
  23. 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
  24. else
  25. patch -p1 < "$KERNEL_PATCHES/common/Samsung/optimise_noneon_memcmp_android12_5.10.patch"
  26. fi
  27. else
  28. if [ "$(printf '%s\n' "$KERNEL_VER" "$MIN_VERSION" | sort -V | tail -n1)" = "$KERNEL_VER" ]; then
  29. patch -p1 < "$KERNEL_PATCHES/common/optimise_memcmp.patch"
  30. elif [ "$(printf '%s\n' "$KERNEL_VER" "5.11" | sort -V | tail -n1)" = "$KERNEL_VER" ]; then
  31. 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
  32. else
  33. patch -p1 < "$KERNEL_PATCHES/common/Samsung/optimise_noneon_memcmp_android12_5.10.patch"
  34. fi
  35. fi
  36. sed -i 's/pm_wakeup_event(dev, 2 \* MSEC_PER_SEC);/pm_wakeup_event(dev, ktime_to_ms(min) + 1);/' kernel/time/alarmtimer.c
  37. patch -p1 < "$KERNEL_PATCHES/common/int_sqrt.patch"
  38. if [[ $BRANCH != SM-S926* && $BRANCH != SM-A546* && $BRANCH != SM-A356* ]]; then
  39. #patch -p1 < "$KERNEL_PATCHES/common/force_tcp_nodelay.patch"
  40. patch -p1 < "$KERNEL_PATCHES/common/reduce_gc_thread_sleep_time.patch"
  41. else
  42. echo "skipping force tcp no delay and reduce gc thread sleep time patches for s24 plus"
  43. fi
  44. patch -p1 < "$KERNEL_PATCHES/common/add_timeout_wakelocks_globally.patch"
  45. patch -p1 < "$KERNEL_PATCHES/common/f2fs_reduce_congestion.patch"
  46. patch -p1 < "$KERNEL_PATCHES/common/reduce_freeze_timeout.patch"
  47. if [ "$(printf '%s\n' "$KERNEL_VER" "$MIN_VERSION" | sort -V | head -n1)" = "$KERNEL_VER" ]; then
  48. patch -p1 < "$KERNEL_PATCHES/common/clear_page_16bytes_align.patch"
  49. else
  50. 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
  51. fi
  52. echo "Patching add_limitation_scaling_min_freq.patch"
  53. patch -p1 < "$KERNEL_PATCHES/common/add_limitation_scaling_min_freq.patch"
  54. echo "Patching re_write_limitation_scaling_min_freq.patch"
  55. patch -p1 < "$KERNEL_PATCHES/common/re_write_limitation_scaling_min_freq.patch"
  56. echo "Patching adjust_cpu_scan_order.patch"
  57. patch -p1 < "$KERNEL_PATCHES/common/adjust_cpu_scan_order.patch"
  58. echo "patching void_extra_s2idle_wake_attempts.patch"
  59. if [[ "$BRANCH" == "SM-S928B-Oneui8.5" || "$BRANCH" == "SM-S926B-Oneui8.5" || "$BRANCH" == "SM-S938B-Oneui8.5" || "$BRANCH" == "SM-S931B-Oneui8.5" ]]; then
  60. patch -p1 < "$KERNEL_PATCHES/common/Samsung/avoid_extra_s2idle_wake_attempts_oneui8.5.patch"
  61. else
  62. patch -p1 < "$KERNEL_PATCHES/common/avoid_extra_s2idle_wake_attempts.patch"
  63. fi
  64. if [[ $BRANCH != SM-S926* && $BRANCH != SM-A546* && $BRANCH != SM-A356* ]]; then
  65. echo "Patching disable_cache_hot_buddy.patch"
  66. patch -p1 < "$KERNEL_PATCHES/common/disable_cache_hot_buddy.patch"
  67. else
  68. echo "skipping disable_cache_hot_buddy"
  69. fi
  70. echo "Patching f2fs_enlarge_min_fsync_blocks.patch"
  71. patch -p1 < "$KERNEL_PATCHES/common/f2fs_enlarge_min_fsync_blocks.patch"
  72. echo "Patching increase_ext4_default_commit_age.patch"
  73. patch -p1 < "$KERNEL_PATCHES/common/increase_ext4_default_commit_age.patch"
  74. echo "Patching increase_sk_mem_packets.patch"
  75. patch -p1 < "$KERNEL_PATCHES/common/increase_sk_mem_packets.patch"
  76. echo "Patching reduce_pci_pme_wakeups.patch"
  77. patch -p1 < "$KERNEL_PATCHES/common/reduce_pci_pme_wakeups.patch"
  78. echo "Patching silence_irq_cpu_logspam.patch"
  79. patch -p1 < "$KERNEL_PATCHES/common/silence_irq_cpu_logspam.patch"
  80. echo "Patching silence_system_logspam.patch"
  81. patch -p1 < "$KERNEL_PATCHES/common/silence_system_logspam.patch"
  82. echo "Patching use_unlikely_wrap_cpufreq.patch"
  83. patch -p1 < "$KERNEL_PATCHES/common/use_unlikely_wrap_cpufreq.patch"
  84. - name: apply configs to defconfig from ahmad al-nassif from gki-duchamp
  85. shell: bash
  86. run: |
  87. echo "applying configs for universal performance tuning"
  88. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_HZ_300
  89. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --set-val CONFIG_HZ 300
  90. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_CPU_FREQ
  91. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_CPU_FREQ_GOV_SCHEDUTIL
  92. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_CPU_FREQ_GOV_ONDEMAND
  93. echo "frame warn off"
  94. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --set-val CONFIG_FRAME_WARN 0
  95. echo "optimize inlining"
  96. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_OPTIMIZE_INLINING
  97. echo "better i/o and filesystem performance"
  98. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_SWAP
  99. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_BLK_DEV_ZRAM
  100. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_ZRAM_DEF_COMP
  101. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_ZRAM_WRITEBACK
  102. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_ZRAM_MEMORY_TRACKING
  103. echo "modern I/O scheduler"
  104. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_MQ_IOSCHED_DEADLINE
  105. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_DEFAULT_DEADLINE
  106. echo "f2fs optimizations"
  107. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_F2FS_FS
  108. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_F2FS_FS_XATTR
  109. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_F2FS_FS_POSIX_ACL
  110. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_F2FS_FS_COMPRESSION
  111. echo "memory improvements"
  112. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_LRU_GEN
  113. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_LRU_GEN_ENABLED
  114. echo "netfilter/xtables Targets"
  115. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_HMARK
  116. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_CLASSIFY
  117. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_CONNMARK
  118. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_CONNSECMARK
  119. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_DSCP
  120. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_IDLETIMER
  121. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_MARK
  122. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_TARGET_NFLOG
  123. echo "Netfilter/Xtables matches"
  124. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_ECN
  125. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_HL
  126. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_IPVS
  127. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_LENGTH
  128. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_LIMIT
  129. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_MAC
  130. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_MARK
  131. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_POLICY
  132. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_PKTTYPE
  133. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_QTAGUID
  134. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_QUOTA
  135. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_SOCKET
  136. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_STATE
  137. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_STATISTIC
  138. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_STRING
  139. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_TCPMSS
  140. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_TIME
  141. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NETFILTER_XT_MATCH_U32
  142. echo "traffic control"
  143. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_BASIC
  144. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_FW
  145. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_U32
  146. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_FLOW
  147. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_RSVP
  148. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_RSVP6
  149. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_CLS_BPF
  150. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH
  151. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH_CMP
  152. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH_NBYTE
  153. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH_U32
  154. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH_META
  155. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_EMATCH_TEXT
  156. echo "IPv4 NAT"
  157. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_TARGET_MASQUERADE
  158. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_TARGET_NETMAP
  159. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_TARGET_REDIRECT
  160. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_MANGLE
  161. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_RAW
  162. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_SECURITY
  163. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP_NF_ARPTABLES
  164. echo "IPv6"
  165. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP6_NF_MATCH_HL
  166. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IP6_NF_TARGET_HL
  167. echo "filesystems"
  168. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_EXFAT_FS
  169. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_MSDOS_FS
  170. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_VFAT_FS
  171. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_INCREMENTAL_FS
  172. echo "compression"
  173. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_ZSTD_COMPRESS
  174. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_ZSTD_DECOMPRESS
  175. echo "crash logging"
  176. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_PSTORE
  177. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_PSTORE_CONSOLE
  178. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_PSTORE_RAM
  179. echo "IPv6 features"
  180. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_ROUTER_PREF
  181. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_ROUTE_INFO
  182. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_OPTIMISTIC_DAD
  183. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_MULTIPLE_TABLES
  184. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_SUBTREES
  185. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_MROUTE
  186. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_MROUTE_MULTIPLE_TABLES
  187. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_IPV6_PIMSM_V2
  188. echo "IPsec"
  189. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_NET_IPVTI
  190. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_INET_ESP
  191. echo "diagnostics"
  192. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_INET_UDP_DIAG
  193. "$COMMON/scripts/config" --file "$GKI_DEFCONFIG" --enable CONFIG_INET_DIAG_DESTROY