diff --git a/.SRCINFO b/.SRCINFO index 45e7c7f..5bdc10d 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = linux-cachyos pkgdesc = Linux BORE scheduler Kernel by CachyOS with other patches and improvements - pkgver = 6.1.9 - pkgrel = 2 + pkgver = 6.1.10 + pkgrel = 1 url = https://github.com/CachyOS/linux-cachyos arch = x86_64 arch = x86_64_v3 @@ -21,16 +21,16 @@ pkgbase = linux-cachyos makedepends = make makedepends = patch options = !strip - source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.1.9.tar.xz + source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.1.10.tar.xz source = config source = auto-cpu-optimization.sh source = https://raw.githubusercontent.com/cachyos/kernel-patches/master/6.1/all/0001-cachyos-base-all.patch source = https://raw.githubusercontent.com/cachyos/kernel-patches/master/6.1/misc/0001-Add-latency-priority-for-CFS-class.patch source = https://raw.githubusercontent.com/cachyos/kernel-patches/master/6.1/sched/0001-bore-cachy.patch - sha256sums = d60cf185693c386e7acd9f3eb3a94ae30ffbfee0a9447a20e83711e0bdf5922b - sha256sums = fab53ac59d4da6fb0433f6fd15877871f4124a89021237f90835d1ff3755ba9c + sha256sums = 0be2919ba91cf5873a4cb4d429de78aad0469120d624e333a43b4b011d74d19d + sha256sums = 111246473833b7576d33e284becf55dbb3533b657391fa2a3846b0da6d6039c6 sha256sums = 41c34759ed248175e905c57a25e2b0ed09b11d054fe1a8783d37459f34984106 - sha256sums = 3c31aea899ab3ba5d4119fc08935b31f66b2d4da65b6adfbfd3b410114c25753 + sha256sums = 87929b669f1081d34e27768ee9426da8c97038619d4deee38487f93ca9c9a629 sha256sums = 479019c7ea52de10b6cadac468eb61215bafef596da3d751571bb6dc4fcd8787 sha256sums = 80f8c92d504c1152adc85d1f832308e8bab7211613bd6c9a3a0c6752f0810b14 diff --git a/PKGBUILD b/PKGBUILD index 9c2ed13..7117156 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -3,29 +3,26 @@ # Contributor: Tobias Powalowski # Contributor: Thomas Baechler +### BUILD OPTIONS +# Set these variables to ANYTHING that is not null or choose proper variable to enable them + ### Selecting CachyOS config -# ATTENTION - one of two predefined values should be selected! -# 'yes' - enable CachyOS config -# 'no' - disable CachyOS config -_cachy_config=${_cachy_config-'yes'} +_cachy_config=${_cachy_config-y} ### Selecting the CPU scheduler -# ATTENTION - one of seven predefined values should be selected! +# ATTENTION - one of six predefined values should be selected! # 'bmq' - select 'BitMap Queue CPU scheduler' # 'pds' - select 'Priority and Deadline based Skip list multiple queue CPU scheduler' # 'bore' - select 'Burst-Oriented Response Enhancer' # 'cfs' - select 'Completely Fair Scheduler' # 'tt' - select 'Task Type Scheduler by Hamad Marri' # 'hardened' - select 'BORE Scheduler hardened' ## kernel with hardened config and hardening patches with the bore scheduler -_cpusched=${_cpusched-'bore'} +_cpusched=${_cpusched-bore} ## Apply some suggested sysctl values from the bore developer ## These are adjusted to BORE _tune_bore=${_tune_bore-} -### BUILD OPTIONS -# Set these variables to ANYTHING that is not null to enable them - ### Tweak kernel options prior to a build via nconfig _makenconfig=${_makenconfig-} @@ -93,14 +90,14 @@ _kyber_disable=${_kyber_disable-y} # 'standard' - enable multigenerational LRU # 'stats' - enable multigenerational LRU with stats # 'none' - disable multigenerational LRU -_lru_config=${_lru_config-'standard'} +_lru_config=${_lru_config-standard} ### Enable per-VMA locking # ATTENTION - one of three predefined values should be selected! # 'standard' - enable per-VMA locking # 'stats' - enable per-VMA locking with stats # 'none' - disable per-VMA locking -_vma_config=${_vma_config-'none'} +_vma_config=${_vma_config-none} ### Transparent Hugepages # ATTENTION - one of two predefined values should be selected! @@ -108,7 +105,7 @@ _vma_config=${_vma_config-'none'} # 'madvise' - madvise, prevent applications from allocating more memory resources than necessary # More infos here: # https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/performance_tuning_guide/sect-red_hat_enterprise_linux-performance_tuning_guide-configuring_transparent_huge_pages -_hugepage=${_hugepage-'always'} +_hugepage=${_hugepage-always} ## Enable DAMON _damon=${_damon-} @@ -141,12 +138,14 @@ _zstd_compression=${_zstd_compression-} # 'normal' - standard compression ratio # WARNING: the ultra settings can sometimes # be counterproductive in both size and speed. -_zstd_level_value=${_zstd_level_value-'normal'} +_zstd_level_value=${_zstd_level_value-normal} -# Clang LTO mode, only available with the "llvm" compiler - options are "no", "full" or "thin". +# Clang LTO mode, only available with the "llvm" compiler - options are "none", "full" or "thin". +# ATTENTION - one of three predefined values should be selected! # "full: uses 1 thread for Linking, slow and uses more memory, theoretically with the highest performance gains." # "thin: uses multiple threads, faster and uses less memory, may have a lower runtime performance than Full." -_use_llvm_lto=${_use_llvm_lto-} +# "none: disable LTO +_use_llvm_lto=${_use_llvm_lto-none} # Use suffix -lto only when requested by the user # Enabled by default. @@ -189,7 +188,7 @@ _bcachefs=${_bcachefs-} # https://gitlab.com/ananicy-cpp/ananicy-cpp/-/tree/feature/latency-nice _latency_nice=${_latency_nice-y} -if [[ -n "$_use_llvm_lto" && -n "$_use_lto_suffix" ]]; then +if [[ "$_use_llvm_lto" = "thin" || "$_use_llvm_lto" = "full" && -n "$_use_lto_suffix" ]]; then pkgsuffix=cachyos-lto pkgbase=linux-$pkgsuffix @@ -198,7 +197,7 @@ else pkgbase=linux-$pkgsuffix fi _major=6.1 -_minor=9 +_minor=10 #_minorc=$((_minor+1)) #_rcver=rc8 pkgver=${_major}.${_minor} @@ -208,7 +207,7 @@ _stable=${_major}.${_minor} _srcname=linux-${_stable} #_srcname=linux-${_major} pkgdesc='Linux BORE scheduler Kernel by CachyOS with other patches and improvements' -pkgrel=2 +pkgrel=1 _kernver=$pkgver-$pkgrel arch=('x86_64' 'x86_64_v3') url="https://github.com/CachyOS/linux-cachyos" @@ -216,7 +215,7 @@ license=('GPL2') options=('!strip') makedepends=('bc' 'libelf' 'pahole' 'cpio' 'perl' 'tar' 'xz' 'zstd' 'gcc' 'gcc-libs' 'glibc' 'binutils' 'make' 'patch') # LLVM makedepends -if [ -n "$_use_llvm_lto" ]; then +if [[ "$_use_llvm_lto" = "thin" || "$_use_llvm_lto" = "full" ]]; then makedepends+=(clang llvm lld python) BUILD_FLAGS=( CC=clang @@ -328,19 +327,9 @@ prepare() { fi ### Selecting CachyOS config - if [ "$_cachy_config" = "yes" ]; then + if [ -n "$_cachy_config" ]; then echo "Enabling CachyOS config..." scripts/config -e CACHY - elif [ "$_cachy_config" = "no" ]; then - echo "Disabling CachyOS config..." - scripts/config -d CACHY - else - if [ -n "$_cachy_config" ]; then - error "The value $_cachy_config is invalid. Choose the correct one again." - else - error "The value is empty. Choose the correct one again." - fi - _die "Selecting CachyOS config failed!" fi ### Selecting the CPU scheduler @@ -366,31 +355,16 @@ prepare() { fi ### Select LLVM level - if [ "$_use_llvm_lto" = "thin" ]; then - echo "Enabling LLVM THIN LTO..." - scripts/config -e LTO \ - -e LTO_CLANG \ - -e ARCH_SUPPORTS_LTO_CLANG \ - -e ARCH_SUPPORTS_LTO_CLANG_THIN \ - -d LTO_NONE \ - -e HAS_LTO_CLANG \ - -d LTO_CLANG_FULL \ - -e LTO_CLANG_THIN \ - -e HAVE_GCC_PLUGINS - elif [ "$_use_llvm_lto" = "full" ]; then - echo "Enabling LLVM FULL LTO..." - scripts/config -e LTO \ - -e LTO_CLANG \ - -e ARCH_SUPPORTS_LTO_CLANG \ - -e ARCH_SUPPORTS_LTO_CLANG_THIN \ - -d LTO_NONE \ - -e HAS_LTO_CLANG \ - -e LTO_CLANG_FULL \ - -d LTO_CLANG_THIN \ - -e HAVE_GCC_PLUGINS - else - scripts/config -e LTO_NONE - fi + [ -z "$_use_llvm_lto" ] && _die "The value is empty. Choose the correct one again." + + case "$_use_llvm_lto" in + thin) scripts/config -e LTO -e LTO_CLANG -e ARCH_SUPPORTS_LTO_CLANG -e ARCH_SUPPORTS_LTO_CLANG_THIN -d LTO_NONE -e HAS_LTO_CLANG -d LTO_CLANG_FULL -e LTO_CLANG_THIN -e HAVE_GCC_PLUGINS;; + full) scripts/config -e LTO -e LTO_CLANG -e ARCH_SUPPORTS_LTO_CLANG -e ARCH_SUPPORTS_LTO_CLANG_THIN -d LTO_NONE -e HAS_LTO_CLANG -e LTO_CLANG_FULL -d LTO_CLANG_THIN -e HAVE_GCC_PLUGINS;; + none) scripts/config -e LTO_NONE;; + *) _die "The value '$_use_llvm_lto' is invalid. Choose the correct one again.";; + esac + + echo "Selecting '$_use_llvm_lto' LLVM level..." ### Enable GCC FULL LTO ### Disable LTO_CP_CLONE, its experimental @@ -461,75 +435,28 @@ prepare() { fi ### Select tick type - if [ "$_tickrate" = "periodic" ]; then - echo "Enabling periodic ticks..." - scripts/config -d NO_HZ_IDLE \ - -d NO_HZ_FULL \ - -d NO_HZ \ - -d NO_HZ_COMMON \ - -e HZ_PERIODIC - elif [ "$_tickrate" = "idle" ]; then - echo "Enabling idle ticks.." - scripts/config -d HZ_PERIODIC \ - -d NO_HZ_FULL \ - -e NO_HZ_IDLE \ - -e NO_HZ \ - -e NO_HZ_COMMON - elif [ "$_tickrate" = "full" ]; then - echo "Enabling full ticks..." - scripts/config -d HZ_PERIODIC \ - -d NO_HZ_IDLE \ - -d CONTEXT_TRACKING_FORCE \ - -e NO_HZ_FULL_NODEF \ - -e NO_HZ_FULL \ - -e NO_HZ \ - -e NO_HZ_COMMON \ - -e CONTEXT_TRACKING - else - if [ -n "$_tickrate" ]; then - error "The value $_tickrate is invalid. Choose the correct one again." - else - error "The value is empty. Choose the correct one again." - fi - _die "Selecting the tick rate failed!" - fi + [ -z "$_tickrate" ] && _die "The value is empty. Choose the correct one again." + + case "$_tickrate" in + perodic) scripts/config -d NO_HZ_IDLE -d NO_HZ_FULL -d NO_HZ -d NO_HZ_COMMON -e HZ_PERIODIC;; + idle) scripts/config -d HZ_PERIODIC -d NO_HZ_FULL -e NO_HZ_IDLE -e NO_HZ -e NO_HZ_COMMON;; + full) scripts/config -d HZ_PERIODIC -d NO_HZ_IDLE -d CONTEXT_TRACKING_FORCE -e NO_HZ_FULL_NODEF -e NO_HZ_FULL -e NO_HZ -e NO_HZ_COMMON -e CONTEXT_TRACKING;; + *) _die "The value '$_tickrate' is invalid. Choose the correct one again.";; + esac + + echo "Selecting '$_tickrate' tick type..." ### Select preempt type - if [ "$_preempt" = "full" ]; then - echo "Enabling low latency preempt..." - scripts/config -e PREEMPT_BUILD \ - -d PREEMPT_NONE \ - -d PREEMPT_VOLUNTARY \ - -e PREEMPT \ - -e PREEMPT_COUNT \ - -e PREEMPTION \ - -e PREEMPT_DYNAMIC - elif [ "$_preempt" = "voluntary" ]; then - echo "Enabling voluntary preempt..." - scripts/config -e PREEMPT_BUILD \ - -d PREEMPT_NONE \ - -e PREEMPT_VOLUNTARY \ - -d PREEMPT \ - -e PREEMPT_COUNT \ - -e PREEMPTION \ - -d PREEMPT_DYNAMIC - elif [ "$_preempt" = "server" ]; then - echo "Enabling server preempt..." - scripts/config -e PREEMPT_NONE_BUILD \ - -e PREEMPT_NONE \ - -d PREEMPT_VOLUNTARY \ - -d PREEMPT \ - -d PREEMPT_COUNT \ - -d PREEMPTION \ - -d PREEMPT_DYNAMIC - else - if [ -n "$_preempt" ]; then - error "The value $_preempt is invalid. Choose the correct one again." - else - error "The value is empty. Choose the correct one again." - fi - _die "Selecting PREEMPT failed!" - fi + [ -z "$_preempt" ] && _die "The value is empty. Choose the correct one again." + + case "$_preempt" in + full) scripts/config -e PREEMPT_BUILD -d PREEMPT_NONE -d PREEMPT_VOLUNTARY -e PREEMPT -e PREEMPT_COUNT -e PREEMPTION -e PREEMPT_DYNAMIC;; + voluntary) scripts/config -e PREEMPT_BUILD -d PREEMPT_NONE -e PREEMPT_VOLUNTARY -d PREEMPT -e PREEMPT_COUNT -e PREEMPTION -d PREEMPT_DYNAMIC;; + server) scripts/config -e PREEMPT_NONE_BUILD -e PREEMPT_NONE -d PREEMPT_VOLUNTARY -d PREEMPT -d PREEMPTION -d PREEMPT_DYNAMIC;; + *) _die "The value '$_preempt' is invalid. Choose the correct one again.";; + esac + + echo "Selecting '$_preempt' preempt type..." ### Enable O3 if [ -n "$_cc_harder" ]; then @@ -548,68 +475,40 @@ prepare() { --set-str DEFAULT_TCP_CONG bbr2 fi - ### Select LRU config - if [ "$_lru_config" = "standard" ]; then - echo "Enabling multigenerational LRU..." - scripts/config -e LRU_GEN \ - -e LRU_GEN_ENABLED \ - -d LRU_GEN_STATS - elif [ "$_lru_config" = "stats" ]; then - echo "Enabling multigenerational LRU with stats..." - scripts/config -e LRU_GEN \ - -e LRU_GEN_ENABLED \ - -e LRU_GEN_STATS - elif [ "$_lru_config" = "none" ]; then - echo "Disabling multigenerational LRU..." - scripts/config -d LRU_GEN - else - if [ -n "$_lru_config" ]; then - error "The value $_lru_config is invalid. Choose the correct one again." - else - error "The value is empty. Choose the correct one again." - fi - error "Enabling multigenerational LRU failed!" - exit - fi + ### Select LRU config + [ -z "$_lru_config" ] && _die "The value is empty. Choose the correct one again." + + case "$_lru_config" in + standard) scripts/config -e LRU_GEN -e LRU_GEN_ENABLED -d LRU_GEN_STATS;; + stats) scripts/config -e LRU_GEN -e LRU_GEN_ENABLED -e LRU_GEN_STATS;; + none) scripts/config -d LRU_GEN;; + *) _die "The value '$_lru_config' is invalid. Choose the correct one again.";; + esac + + echo "Selecting '$_lru_config' LRU_GEN config..." ### Select VMA config - if [ "$_vma_config" = "standard" ]; then - echo "Enabling per-VMA locking..." - scripts/config -e PER_VMA_LOCK \ - -d PER_VMA_LOCK_STATS - elif [ "$_vma_config" = "stats" ]; then - echo "Enabling per-VMA locking with stats..." - scripts/config -e PER_VMA_LOCK \ - -e PER_VMA_LOCK_STATS - elif [ "$_vma_config" = "none" ]; then - echo "Disabling per-VMA locking..." - scripts/config -d PER_VMA_LOCK - else - if [ -n "$_vma_config" ]; then - error "The value $_vma_config is invalid. Choose the correct one again." - else - error "The value is empty. Choose the correct one again." - fi - _die "Enabling per-VMA locking failed!" - fi + [ -z "$_vma_config" ] && _die "The value is empty. Choose the correct one again." - ### Select THP - if [ "$_hugepage" = "always" ]; then - echo "Enable THP always..." - scripts/config -d TRANSPARENT_HUGEPAGE_MADVISE \ - -e TRANSPARENT_HUGEPAGE_ALWAYS - elif [ "$_hugepage" = "madvise" ]; then - echo "Enable THP madvise..." - scripts/config -d TRANSPARENT_HUGEPAGE_ALWAYS \ - -e TRANSPARENT_HUGEPAGE_MADVISE - else - if [ -n "$_hugepage" ]; then - error "The value $_hugepage is invalid. Choose the correct one again." - else - error "The value is empty. Choose the correct one again." - fi - _die "Setting THP has failed!" - fi + case "$_vma_config" in + standard) scripts/config -e PER_VMA_LOCK -d PER_VMA_LOCK_STATS;; + stats) scripts/config -e PER_VMA_LOCK -e PER_VMA_LOCK_STATS;; + none) scripts/config -d PER_VMA_LOCK;; + *) _die "The value '$_vma_config' is invalid. Choose the correct one again.";; + esac + + echo "Selecting '$_vma_config' PER_VMA_LOCK config..." + + ### Select THP + [ -z "$_hugepage" ] && _die "The value is empty. Choose the correct one again." + + case "$_hugepage" in + always) scripts/config -d TRANSPARENT_HUGEPAGE_MADVISE -e TRANSPARENT_HUGEPAGE_ALWAYS;; + madvise) scripts/config -d TRANSPARENT_HUGEPAGE_ALWAYS -e TRANSPARENT_HUGEPAGE_MADVISE;; + *) _die "The value '$_hugepage' is invalid. Choose the correct one again.";; + esac + + echo "Selecting '$_hugepage' TRANSPARENT_HUGEPAGE config..." ### Enable DAMON if [ -n "$_damon" ]; then @@ -709,25 +608,15 @@ prepare() { fi ### Selecting the ZSTD modules and kernel compression level - if [ "$_zstd_level_value" = "ultra" ]; then - echo "Enabling highest ZSTD modules and kernel compression ratio..." - scripts/config --set-val MODULE_COMPRESS_ZSTD_LEVEL 19 \ - -e MODULE_COMPRESS_ZSTD_ULTRA \ - --set-val MODULE_COMPRESS_ZSTD_LEVEL_ULTRA 22 \ - --set-val ZSTD_COMP_VAL 22 - elif [ "$_zstd_level_value" = "normal" ]; then - echo "Enabling standard ZSTD modules and kernel compression ratio..." - scripts/config --set-val MODULE_COMPRESS_ZSTD_LEVEL 9 \ - -d MODULE_COMPRESS_ZSTD_ULTRA \ - --set-val ZSTD_COMP_VAL 19 - else - if [ -n "$_zstd_level_value" ]; then - error "The value $_zstd_level_value is invalid. Choose the correct one again." - else - error "The value is empty. Choose the correct one again." - fi - _die "Selecting the ZSTD modules and kernel compression level failed!" - fi + [ -z "$_zstd_level_value" ] && _die "The value is empty. Choose the correct one again." + + case "$_zstd_level_value" in + ultra) scripts/config --set-val MODULE_COMPRESS_ZSTD_LEVEL 19 -e MODULE_COMPRESS_ZSTD_ULTRA --set-val MODULE_COMPRESS_ZSTD_LEVEL_ULTRA 22 --set-val ZSTD_COMP_VAL 22;; + normal) scripts/config --set-val MODULE_COMPRESS_ZSTD_LEVEL 9 -d MODULE_COMPRESS_ZSTD_ULTRA --set-val ZSTD_COMP_VAL 19;; + *) _die "The value '$_zstd_level_value' is invalid. Choose the correct one again.";; + esac + + echo "Selecting '$_zstd_level_value' ZSTD modules and kernel compression level..." ### Disable DEBUG if [ -n "$_disable_debug" ]; then @@ -749,8 +638,6 @@ prepare() { echo "Enable USER_NS_UNPRIVILEGED" scripts/config -e USER_NS - echo "Enable WINE FASTSYNC" - scripts/config -e WINESYNC ### Optionally use running kernel's config # code originally by nous; http://aur.archlinux.org/packages.php?ID=40191 @@ -971,9 +858,9 @@ for _p in "${pkgname[@]}"; do }" done -sha256sums=('d60cf185693c386e7acd9f3eb3a94ae30ffbfee0a9447a20e83711e0bdf5922b' - 'fab53ac59d4da6fb0433f6fd15877871f4124a89021237f90835d1ff3755ba9c' +sha256sums=('0be2919ba91cf5873a4cb4d429de78aad0469120d624e333a43b4b011d74d19d' + '111246473833b7576d33e284becf55dbb3533b657391fa2a3846b0da6d6039c6' '41c34759ed248175e905c57a25e2b0ed09b11d054fe1a8783d37459f34984106' - '3c31aea899ab3ba5d4119fc08935b31f66b2d4da65b6adfbfd3b410114c25753' + '87929b669f1081d34e27768ee9426da8c97038619d4deee38487f93ca9c9a629' '479019c7ea52de10b6cadac468eb61215bafef596da3d751571bb6dc4fcd8787' '80f8c92d504c1152adc85d1f832308e8bab7211613bd6c9a3a0c6752f0810b14') diff --git a/config b/config index 69944cd..e20776e 100644 --- a/config +++ b/config @@ -27,7 +27,7 @@ CONFIG_THREAD_INFO_IN_TASK=y # # General setup # -CONFIG_CACHY=y +# CONFIG_CACHY is not set CONFIG_INIT_ENV_ARG_LIMIT=32 # CONFIG_COMPILE_TEST is not set # CONFIG_WERROR is not set