diff --git a/.SRCINFO b/.SRCINFO index 579a806..5c5f89e 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -28,7 +28,7 @@ pkgbase = linux-cachyos 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 = 0be2919ba91cf5873a4cb4d429de78aad0469120d624e333a43b4b011d74d19d - sha256sums = a9673e76b766f3a71472e39fb6a3e03e5c1e6d91680cb50b0b54af610039a847 + sha256sums = 111246473833b7576d33e284becf55dbb3533b657391fa2a3846b0da6d6039c6 sha256sums = 41c34759ed248175e905c57a25e2b0ed09b11d054fe1a8783d37459f34984106 sha256sums = 87929b669f1081d34e27768ee9426da8c97038619d4deee38487f93ca9c9a629 sha256sums = 479019c7ea52de10b6cadac468eb61215bafef596da3d751571bb6dc4fcd8787 diff --git a/PKGBUILD b/PKGBUILD index 0d067bf..1eddaef 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 @@ -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 @@ -813,7 +702,7 @@ build() { if [ -n "$_build_zfs" ]; then cd ${srcdir}/"zfs" - if [ -n "$_use_llvm_lto" ]; then + if [[ "$_use_llvm_lto" = "thin" || "$_use_llvm_lto" = "full" ]]; then ./autogen.sh sed -i "s|\$(uname -r)|${pkgver}-${pkgsuffix}|g" configure ./configure KERNEL_LLVM=1 --prefix=/usr --sysconfdir=/etc --sbindir=/usr/bin --libdir=/usr/lib \ @@ -970,7 +859,7 @@ for _p in "${pkgname[@]}"; do done sha256sums=('0be2919ba91cf5873a4cb4d429de78aad0469120d624e333a43b4b011d74d19d' - 'a9673e76b766f3a71472e39fb6a3e03e5c1e6d91680cb50b0b54af610039a847' + '111246473833b7576d33e284becf55dbb3533b657391fa2a3846b0da6d6039c6' '41c34759ed248175e905c57a25e2b0ed09b11d054fe1a8783d37459f34984106' '87929b669f1081d34e27768ee9426da8c97038619d4deee38487f93ca9c9a629' '479019c7ea52de10b6cadac468eb61215bafef596da3d751571bb6dc4fcd8787' diff --git a/config b/config index 1d4bc29..e20776e 100644 --- a/config +++ b/config @@ -1,8 +1,8 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 6.1.10 Kernel Configuration +# Linux/x86 6.1.7 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230201" +CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.2.1 20230111" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=120201 CONFIG_CLANG_VERSION=0 @@ -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 @@ -552,6 +552,7 @@ CONFIG_HZ_300=y # CONFIG_HZ_600 is not set # CONFIG_HZ_750 is not set # CONFIG_HZ_1000 is not set +# CONFIG_HZ_2000 is not set CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y @@ -2680,6 +2681,7 @@ CONFIG_DW_XDATA_PCIE=m CONFIG_PCI_ENDPOINT_TEST=m CONFIG_XILINX_SDFEC=m CONFIG_MISC_RTSX=m +CONFIG_WINESYNC=y CONFIG_C2PORT=m CONFIG_C2PORT_DURAMAR_2150=m @@ -4024,14 +4026,23 @@ CONFIG_RTL8XXXU_UNTESTED=y CONFIG_RTW88=m CONFIG_RTW88_CORE=m CONFIG_RTW88_PCI=m +CONFIG_RTW88_SDIO=m +CONFIG_RTW88_USB=m CONFIG_RTW88_8822B=m CONFIG_RTW88_8822C=m CONFIG_RTW88_8723D=m CONFIG_RTW88_8821C=m CONFIG_RTW88_8822BE=m +CONFIG_RTW88_8822BS=m +CONFIG_RTW88_8822BU=m CONFIG_RTW88_8822CE=m +CONFIG_RTW88_8822CS=m +CONFIG_RTW88_8822CU=m CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8723DU=m CONFIG_RTW88_8821CE=m +CONFIG_RTW88_8821CS=m +CONFIG_RTW88_8821CU=m CONFIG_RTW88_DEBUG=y CONFIG_RTW88_DEBUGFS=y CONFIG_RTW89=m