Browse Source

Refactor memcmp patching logic for Samsung branches

the memcmp patch is modified for exynos devices, since regular one was causing issues.
jimsterino98 2 months ago
parent
commit
7cf4b9d50e
1 changed files with 15 additions and 5 deletions
  1. 15 5
      .github/actions/optimization/action.yml

+ 15 - 5
.github/actions/optimization/action.yml

@@ -22,12 +22,22 @@ runs:
      patch -p1 --forward < "$KERNEL_PATCHES/common/reduce_cache_pressure.patch"
      patch -p1 --forward < "$KERNEL_PATCHES/common/mem_opt_prefetch.patch"
 
-     if [ "$(printf '%s\n' "${{ inputs.kernel_version }}" "$MIN_VERSION" | sort -V | tail -n1)" = "${{ inputs.kernel_version }}" ]; then
-      patch -p1 --forward < "$KERNEL_PATCHES/common/optimise_memcmp.patch"
-     elif [ "$(printf '%s\n' "${{ inputs.kernel_version }}" "5.11" | sort -V | tail -n1)" = "${{ inputs.kernel_version }}" ]; 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 --forward
+     if [[ ${{ inputs.branch }} == SM-A546* || ${{ inputs.branch }} == SM-S926* || ${{ inputs.branch }} == SM-A556* || ${{ inputs.branch }} == SM-M146B* || ${{ inputs.branch }} == SM-S908B* ]]; then
+      if [ "$(printf '%s\n' "${{ inputs.kernel_version }}" "$MIN_VERSION" | sort -V | tail -n1)" = "${{ inputs.kernel_version }}" ]; then
+       patch -p1 --forward < "$KERNEL_PATCHES/common/Samsung/optimise_memcmp_exynos.patch"
+      elif [ "$(printf '%s\n' "${{ inputs.kernel_version }}" "5.11" | sort -V | tail -n1)" = "${{ inputs.kernel_version }}" ]; 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 --forward
+      else
+        echo "Optimised memcmp patch not found!"
+      fi
      else
-       echo "Optimised memcmp patch not found!"
+      if [ "$(printf '%s\n' "${{ inputs.kernel_version }}" "$MIN_VERSION" | sort -V | tail -n1)" = "${{ inputs.kernel_version }}" ]; then
+       patch -p1 --forward < "$KERNEL_PATCHES/common/optimise_memcmp.patch"
+      elif [ "$(printf '%s\n' "${{ inputs.kernel_version }}" "5.11" | sort -V | tail -n1)" = "${{ inputs.kernel_version }}" ]; 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 --forward
+      else
+        echo "Optimised memcmp patch not found!"
+      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