diff options
-rw-r--r-- | PKGBUILD | 1013 | ||||
-rw-r--r-- | config | 61 |
2 files changed, 592 insertions, 482 deletions
@@ -12,6 +12,8 @@ # 'cacule-rdb' - select 'CacULE-RDB 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='cacule-rdb' ### BUILD OPTIONS @@ -43,7 +45,7 @@ _localmodcfg= _use_current= ### Enable KBUILD_CFLAGS -O3 -_cc_harder=y +_cc_harder= ### Set performance governor as default _per_gov=y @@ -111,13 +113,19 @@ _thin_lto_cachedir= # The packagename is called "llvm-kcfi" _use_kcfi= +# Build the zfs module builtin in to the kernel +_build_zfs=y + if [ -n "$_use_llvm_lto" ]; then - pkgbase=linux-${_cpusched}-lto + pkgsuffix=${_cpusched}-lto + pkgbase=linux-$pkgsuffix + else - pkgbase=linux-${_cpusched} + pkgsuffix=${_cpusched} + pkgbase=linux-$pkgsuffix fi _major=5.18 -_minor=2 +_minor=3 #_minorc=$((_minor+1)) #_rcver=rc8 pkgver=${_major}.${_minor} @@ -129,72 +137,85 @@ _srcname=linux-${_stable} arch=(x86_64 x86_64_v3) pkgdesc='Linux cacULE-RDB scheduler Kernel by CachyOS with other patches and improvements' pkgrel=1 +_kernver=$pkgver-$pkgrel arch=('x86_64' 'x86_64_v3') url="https://github.com/CachyOS/linux-cachyos" license=('GPL2') options=('!strip') makedepends=('bc' 'texlive-latexextra' 'libelf' 'pahole' 'cpio' 'perl' 'tar' 'xz' 'zstd' 'xmlto' 'git' 'gcc' 'gcc-libs' 'glibc' 'binutils' 'make' 'patch') if [ -n "$_use_llvm_lto" ]; then - makedepends+=(clang llvm lld python) - BUILD_FLAGS=( - CC=clang - LD=ld.lld - LLVM=1 - LLVM_IAS=1 - ) + makedepends+=(clang llvm lld python) + BUILD_FLAGS=( + CC=clang + LD=ld.lld + LLVM=1 + LLVM_IAS=1 + ) fi _patchsource="https://raw.githubusercontent.com/ptr1337/kernel-patches/master/${_major}" source=( "https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/${_srcname}.tar.xz" "config") +if [ -n "$_build_zfs" ]; then + source+=("git+https://github.com/ptr1337/zfs.git#commit=8941b63a931ca6fdc6d0ab46c037540569ba04a4") +fi if [ "$_cpusched" = "bmq" ]; then - source+=("${_patchsource}/sched/0001-prjc.patch") + source+=("${_patchsource}/sched/0001-prjc.patch") fi if [ "$_cpusched" = "pds" ]; then - source+=("${_patchsource}/sched/0001-prjc.patch") + source+=("${_patchsource}/sched/0001-prjc.patch") fi if [ "$_cpusched" = "cacule" ]; then - source+=("${_patchsource}/sched/0001-cacULE-5.18.patch") + source+=("${_patchsource}/sched/0001-cacULE-5.18.patch") fi if [ "$_cpusched" = "cacule-rdb" ]; then - source+=("${_patchsource}/sched/0001-cacULE-5.18.patch") + source+=("${_patchsource}/sched/0001-cacULE-5.18.patch") fi if [ "$_cpusched" = "bore" ]; then source+=("${_patchsource}/sched/0001-bore-sched.patch" "${_patchsource}/0001-migrate.patch") fi if [ "$_cpusched" = "cfs" ]; then - source+=("${_patchsource}/0001-migrate.patch") + source+=("${_patchsource}/0001-migrate.patch") fi -source+=( - "${_patchsource}/0001-amd-perf.patch" - "${_patchsource}/0001-arch.patch" - "${_patchsource}/0001-bbr2.patch" - "${_patchsource}/0001-cachy.patch" - "${_patchsource}/0001-clearlinux.patch" - "${_patchsource}/0001-cpu.patch" - "${_patchsource}/0001-Extend-DAMOS-for-Proactive-LRU-lists-Sorting.patch" - "${_patchsource}/0001-fixes.patch" - "${_patchsource}/0001-fs-patches.patch" - "${_patchsource}/0001-futex-winesync.patch" - "${_patchsource}/0001-hwmon.patch" +if [ "$_cpusched" = "tt" ]; then + source+=("${_patchsource}/sched/0001-tt-5.18.patch") +fi +if [ "$_cpusched" = "hardened" ]; then + source+=( + "${_patchsource}/sched/0001-bore-sched.patch" + "${_patchsource}/0001-migrate.patch" "${_patchsource}/0001-hardening.patch" - "${_patchsource}/0001-kbuild.patch" - "${_patchsource}/0001-lrng.patch" - "${_patchsource}/0001-lru-le9-spf.patch" - "${_patchsource}/0001-ksm.patch" - "${_patchsource}/0001-zram-entropy-calculation.patch" - "auto-cpu-optimization.sh" + "${_patchsource}/0001-hardened.patch") +fi +source+=( + "${_patchsource}/0001-amd-perf.patch" + "${_patchsource}/0001-arch.patch" + "${_patchsource}/0001-bbr2.patch" + "${_patchsource}/0001-cachy.patch" + "${_patchsource}/0001-clearlinux.patch" + "${_patchsource}/0001-cpu.patch" + "${_patchsource}/0001-Extend-DAMOS-for-Proactive-LRU-lists-Sorting.patch" + "${_patchsource}/0001-fixes.patch" + "${_patchsource}/0001-fs-patches.patch" + "${_patchsource}/0001-futex-winesync.patch" + "${_patchsource}/0001-hwmon.patch" + "${_patchsource}/0001-lrng.patch" + "${_patchsource}/0001-lru-le9-spf.patch" + "${_patchsource}/0001-ksm.patch" + "${_patchsource}/0001-zram-entropy-calculation.patch" + "${_patchsource}/0001-PCI-Allow-BAR-movement-during-boot-and-hotplug.patch" + "auto-cpu-optimization.sh" ) if [ -n "$_use_kcfi" ]; then -source+=("${_patchsource}/0001-kcfi.patch") -depends+=(clang llvm lld python) -BUILD_FLAGS=( + source+=("${_patchsource}/0001-kcfi.patch") + depends+=(clang llvm lld python) + BUILD_FLAGS=( CC=clang LD=ld.lld LLVM=1 -) + ) fi export KBUILD_BUILD_HOST=archlinux @@ -203,13 +224,14 @@ export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EP prepare() { - cd $_srcname +cd ${srcdir}/$_srcname - echo "Setting version..." - scripts/setlocalversion --save-scmversion - echo "-$pkgrel" > localversion.10-pkgrel - echo "${pkgbase#linux}" > localversion.20-pkgname + echo "Setting version..." + scripts/setlocalversion --save-scmversion + echo "-$pkgrel" > localversion.10-pkgrel + echo "${pkgbase#linux}" > localversion.20-pkgname +# [[ $src = 0001-zfs-2.1.5-staging.patch ]] && continue local src for src in "${source[@]}"; do src="${src%%::*}" @@ -219,373 +241,430 @@ prepare() { patch -Np1 < "../$src" done - echo "Setting config..." - cp ../config .config + echo "Setting config..." + cp ../config .config - if [ -n "$_use_auto_optimization" ]; then - "${srcdir}"/auto-cpu-optimization.sh - fi + if [ -n "$_use_auto_optimization" ]; then + "${srcdir}"/auto-cpu-optimization.sh + fi - if [ -n "$_use_optimization_select" ]; then - source "${startdir}"/configure - cpu_arch - fi + if [ -n "$_use_optimization_select" ]; then + source "${startdir}"/configure + cpu_arch + fi - ### Selecting the CPU scheduler - if [ "$_cpusched" = "bmq" ]; then - echo "Selecting BMQ CPU scheduler..." - scripts/config --enable SCHED_ALT \ - --enable SCHED_BMQ \ - --disable SCHED_PDS - elif [ "$_cpusched" = "pds" ]; then - echo "Selecting PDS CPU scheduler..." - scripts/config --enable SCHED_ALT \ - --disable SCHED_BMQ \ - --enable SCHED_PDS - elif [ "$_cpusched" = "cacule" ]; then - echo "Selecting CacULE scheduler..." - scripts/config --enable CACULE_SCHED \ - --disable CACULE_RDB - elif [ "$_cpusched" = "cacule-rdb" ]; then - echo "Selecting CacULE-RDB scheduler..." - scripts/config --enable CACULE_SCHED \ - --enable CACULE_RDB \ - --set-val RDB_INTERVAL 19 - elif [ "$_cpusched" = "bore" ]; then - echo "Selecting BORE Scheduler..." - scripts/config --enable SCHED_BORE - elif [ "$_cpusched" = "tt" ]; then - echo "Selecting TT Scheduler..." - scripts/config --enable TT_SCHED - scripts/config --enable TT_ACCOUNTING_STATS - elif [ "$_cpusched" = "cfs" ]; then - echo "Selecting Completely Fair Scheduler..." + ### Selecting the CPU scheduler + if [ "$_cpusched" = "bmq" ]; then + echo "Selecting BMQ CPU scheduler..." + scripts/config --enable SCHED_ALT \ + --enable SCHED_BMQ \ + --disable SCHED_PDS + elif [ "$_cpusched" = "pds" ]; then + echo "Selecting PDS CPU scheduler..." + scripts/config --enable SCHED_ALT \ + --disable SCHED_BMQ \ + --enable SCHED_PDS + elif [ "$_cpusched" = "cacule" ]; then + echo "Selecting CacULE scheduler..." + scripts/config --enable CACULE_SCHED \ + --disable CACULE_RDB + elif [ "$_cpusched" = "cacule-rdb" ]; then + echo "Selecting CacULE-RDB scheduler..." + scripts/config --enable CACULE_SCHED \ + --enable CACULE_RDB \ + --set-val RDB_INTERVAL 19 + elif [ "$_cpusched" = "bore" ]; then + echo "Selecting BORE Scheduler..." + scripts/config --enable SCHED_BORE + elif [ "$_cpusched" = "tt" ]; then + echo "Selecting TT Scheduler..." + scripts/config --enable TT_SCHED + scripts/config --enable TT_ACCOUNTING_STATS + elif [ "$_cpusched" = "cfs" ]; then + echo "Selecting Completely Fair Scheduler..." + elif [ "$_cpusched" = "hardened" ]; then + echo "Selecting hardened..." + else + if [ -n "$_cpusched" ]; then + error "The value $_cpusched is invalid. Choose the correct one again." else - if [ -n "$_cpusched" ]; then - error "The value $_cpusched is invalid. Choose the correct one again." - else - error "The value is empty. Choose the correct one again." - fi - error "Selecting the CPU scheduler failed!" - exit + error "The value is empty. Choose the correct one again." fi + error "Selecting the CPU scheduler failed!" + exit + fi - if [ -n "$_use_kcfi" ]; then - echo "Enabling kCFI" - scripts/config --enable ARCH_SUPPORTS_CFI_CLANG \ - --enable CFI_CLANG - fi + if [ -n "$_use_kcfi" ]; then + echo "Enabling kCFI" + scripts/config --enable ARCH_SUPPORTS_CFI_CLANG \ + --enable CFI_CLANG + fi - if [ "$_use_llvm_lto" = "thin" ]; then - echo "Enabling LLVM THIN LTO..." - scripts/config --disable LTO_NONE \ - --enable LTO \ - --enable LTO_CLANG \ - --enable ARCH_SUPPORTS_LTO_CLANG \ - --enable ARCH_SUPPORTS_LTO_CLANG_THIN \ - --enable HAS_LTO_CLANG \ - --enable LTO_CLANG_THIN \ - --enable HAVE_GCC_PLUGINS - elif [ "$_use_llvm_lto" = "full" ]; then - echo "Enabling LLVM FULL LTO..." - scripts/config --disable LTO_NONE \ - --enable LTO \ - --enable LTO_CLANG \ - --enable ARCH_SUPPORTS_LTO_CLANG \ - --enable ARCH_SUPPORTS_LTO_CLANG_THIN \ - --enable HAS_LTO_CLANG \ - --enable LTO_CLANG \ - --enable LTO_CLANG_FULL \ - --enable HAVE_GCC_PLUGINS - else - scripts/config --enable LTO_NONE - fi + if [ "$_use_llvm_lto" = "thin" ]; then + echo "Enabling LLVM THIN LTO..." + scripts/config \ + --enable LTO \ + --enable LTO_CLANG \ + --enable ARCH_SUPPORTS_LTO_CLANG \ + --enable ARCH_SUPPORTS_LTO_CLANG_THIN \ + --disable LTO_NONE \ + --enable HAS_LTO_CLANG \ + --disable LTO_CLANG_FULL \ + --enable LTO_CLANG_THIN \ + --enable HAVE_GCC_PLUGINS + elif [ "$_use_llvm_lto" = "full" ]; then + echo "Enabling LLVM FULL LTO..." + scripts/config \ + --enable LTO \ + --enable LTO_CLANG \ + --enable ARCH_SUPPORTS_LTO_CLANG \ + --enable ARCH_SUPPORTS_LTO_CLANG_THIN \ + --disable LTO_NONE \ + --enable HAS_LTO_CLANG \ + --enable LTO_CLANG_FULL \ + --disable LTO_CLANG_THIN \ + --enable HAVE_GCC_PLUGINS + else + scripts/config --enable LTO_NONE + fi - if [ "$_HZ_ticks" = "1000" ]; then - echo "Setting tick rate to 1k Hz..." - scripts/config --disable HZ_300 \ - --enable HZ_1000 \ - --set-val HZ 1000 - elif [ "$_HZ_ticks" = "750" ]; then - echo "Setting tick rate to 750Hz..." - scripts/config --disable HZ_300 \ - --enable HZ_750 \ - --set-val HZ 750 - elif [ "$_HZ_ticks" = "600" ]; then - echo "Setting tick rate to 600Hz..." - scripts/config --disable HZ_300 \ - --enable HZ_600 \ - --set-val HZ 600 - elif [ "$_HZ_ticks" = "500" ]; then - echo "Setting tick rate to 500Hz..." - scripts/config --disable HZ_300 \ - --enable HZ_500 \ - --set-val HZ 500 - elif [ "$_HZ_ticks" = "300" ]; then - echo "Setting tick rate to 300Hz..." - fi + if [ "$_HZ_ticks" = "1000" ]; then + echo "Setting tick rate to 1k Hz..." + scripts/config --disable HZ_300 \ + --enable HZ_1000 \ + --set-val HZ 1000 + elif [ "$_HZ_ticks" = "750" ]; then + echo "Setting tick rate to 750Hz..." + scripts/config --disable HZ_300 \ + --enable HZ_750 \ + --set-val HZ 750 + elif [ "$_HZ_ticks" = "600" ]; then + echo "Setting tick rate to 600Hz..." + scripts/config --disable HZ_300 \ + --enable HZ_600 \ + --set-val HZ 600 + elif [ "$_HZ_ticks" = "500" ]; then + echo "Setting tick rate to 500Hz..." + scripts/config --disable HZ_300 \ + --enable HZ_500 \ + --set-val HZ 500 + elif [ "$_HZ_ticks" = "300" ]; then + echo "Setting tick rate to 300Hz..." + fi - if [ -n "$_NUMAdisable" ]; then - echo "Disabling NUMA from kernel config..." - scripts/config --disable NUMA \ - --disable AMD_NUMA \ - --disable X86_64_ACPI_NUMA \ - --disable NODES_SPAN_OTHER_NODES \ - --disable NUMA_EMU \ - --disable NEED_MULTIPLE_NODES \ - --disable USE_PERCPU_NUMA_NODE_ID \ - --disable ACPI_NUMA \ - --disable ARCH_SUPPORTS_NUMA_BALANCING \ - --disable NODES_SHIFT \ - --undefine NODES_SHIFT \ - --disable NEED_MULTIPLE_NODES - fi + if [ -n "$_NUMAdisable" ]; then + echo "Disabling NUMA from kernel config..." + scripts/config --disable NUMA \ + --disable AMD_NUMA \ + --disable X86_64_ACPI_NUMA \ + --disable NODES_SPAN_OTHER_NODES \ + --disable NUMA_EMU \ + --disable NEED_MULTIPLE_NODES \ + --disable USE_PERCPU_NUMA_NODE_ID \ + --disable ACPI_NUMA \ + --disable ARCH_SUPPORTS_NUMA_BALANCING \ + --disable NODES_SHIFT \ + --undefine NODES_SHIFT \ + --disable NEED_MULTIPLE_NODES + fi - if [ -n "$_mq_deadline_disable" ]; then - echo "Disabling MQ-Deadline I/O scheduler..." - scripts/config --disable MQ_IOSCHED_DEADLINE - fi + if [ -n "$_mq_deadline_disable" ]; then + echo "Disabling MQ-Deadline I/O scheduler..." + scripts/config --disable MQ_IOSCHED_DEADLINE + fi - if [ -n "$_kyber_disable" ]; then - echo "Disabling Kyber I/O scheduler..." - scripts/config --disable MQ_IOSCHED_KYBER - fi + if [ -n "$_kyber_disable" ]; then + echo "Disabling Kyber I/O scheduler..." + scripts/config --disable MQ_IOSCHED_KYBER + fi - if [ -n "$_per_gov" ]; then - echo "Setting performance governor..." - scripts/config --disable CPU_FREQ_DEFAULT_GOV_SCHEDUTIL \ - --enable CPU_FREQ_DEFAULT_GOV_PERFORMANCE \ - --enable PCIEASPM \ - --enable PCIEASPM_PERFORMANCE \ - --enable PCIE_BUS_PERFORMANCE + if [ -n "$_per_gov" ]; then + echo "Setting performance governor..." + scripts/config --disable CPU_FREQ_DEFAULT_GOV_SCHEDUTIL \ + --enable CPU_FREQ_DEFAULT_GOV_PERFORMANCE \ + --enable PCIEASPM \ + --enable PCIEASPM_PERFORMANCE \ + --enable PCIE_BUS_PERFORMANCE fi - if [ "$_tickrate" = "perodic" ]; then - echo "Enabling periodic ticks..." - scripts/config --disable NO_HZ_IDLE \ - --disable NO_HZ_FULL \ - --disable NO_HZ \ - --disable NO_HZ_COMMON \ - --enable HZ_PERIODIC - elif [ "$_tickrate" = "idle" ]; then - echo "Enabling tickless idle..." - scripts/config --disable HZ_PERIODIC \ - --disable NO_HZ_FULL \ - --enable NO_HZ_IDLE \ - --enable NO_HZ \ - --enable NO_HZ_COMMON - elif [ "$_tickrate" = "full" ]; then - echo "Enabling tickless idle..." - scripts/config --disable HZ_PERIODIC \ - --disable NO_HZ_IDLE \ - --disable CONTEXT_TRACKING_FORCE \ - --enable NO_HZ_FULL_NODEF \ - --enable NO_HZ_FULL \ - --enable NO_HZ \ - --enable NO_HZ_COMMON \ - --enable CONTEXT_TRACKING - fi + if [ "$_tickrate" = "perodic" ]; then + echo "Enabling periodic ticks..." + scripts/config --disable NO_HZ_IDLE \ + --disable NO_HZ_FULL \ + --disable NO_HZ \ + --disable NO_HZ_COMMON \ + --enable HZ_PERIODIC + elif [ "$_tickrate" = "idle" ]; then + echo "Enabling tickless idle..." + scripts/config --disable HZ_PERIODIC \ + --disable NO_HZ_FULL \ + --enable NO_HZ_IDLE \ + --enable NO_HZ \ + --enable NO_HZ_COMMON + elif [ "$_tickrate" = "full" ]; then + echo "Enabling tickless idle..." + scripts/config --disable HZ_PERIODIC \ + --disable NO_HZ_IDLE \ + --disable CONTEXT_TRACKING_FORCE \ + --enable NO_HZ_FULL_NODEF \ + --enable NO_HZ_FULL \ + --enable NO_HZ \ + --enable NO_HZ_COMMON \ + --enable CONTEXT_TRACKING + fi - if [ "$_preempt" = "full" ]; then - echo "Enabling low latency preempt..." - scripts/config --enable PREEMPT_BUILD \ - --disable PREEMPT_NONE \ - --disable PREEMPT_VOLUNTARY \ - --enable PREEMPT \ - --enable PREEMPT_COUNT \ - --enable PREEMPTION \ - --enable PREEMPT_DYNAMIC - elif [ "$_preempt" = "voluntary" ]; then - echo "Enabling tickless idle..." - scripts/config --enable PREEMPT_BUILD \ - --disable PREEMPT_NONE \ - --enable PREEMPT_VOLUNTARY \ - --disable PREEMPT \ - --enable PREEMPT_COUNT \ - --enable PREEMPTION \ - --enable PREEMPT_DYNAMIC - elif [ "$_tickrate" = "server" ]; then - echo "Enabling tickless idle..." - scripts/config --enable PREEMPT_NONE_BUILD \ - --enable PREEMPT_NONE \ - --disable PREEMPT_VOLUNTARY \ - --disable PREEMPT \ - --disable PREEMPT_COUNT \ - --disable PREEMPTION \ - --disable PREEMPT_DYNAMIC - fi + if [ "$_preempt" = "full" ]; then + echo "Enabling low latency preempt..." + scripts/config --enable PREEMPT_BUILD \ + --disable PREEMPT_NONE \ + --disable PREEMPT_VOLUNTARY \ + --enable PREEMPT \ + --enable PREEMPT_COUNT \ + --enable PREEMPTION \ + --enable PREEMPT_DYNAMIC + elif [ "$_preempt" = "voluntary" ]; then + echo "Enabling tickless idle..." + scripts/config --enable PREEMPT_BUILD \ + --disable PREEMPT_NONE \ + --enable PREEMPT_VOLUNTARY \ + --disable PREEMPT \ + --enable PREEMPT_COUNT \ + --enable PREEMPTION \ + --disable PREEMPT_DYNAMIC + elif [ "$_tickrate" = "server" ]; then + echo "Enabling tickless idle..." + scripts/config --enable PREEMPT_NONE_BUILD \ + --enable PREEMPT_NONE \ + --disable PREEMPT_VOLUNTARY \ + --disable PREEMPT \ + --disable PREEMPT_COUNT \ + --disable PREEMPTION \ + --disable PREEMPT_DYNAMIC + fi - if [ -n "$_cc_harder" ]; then - echo "Enabling KBUILD_CFLAGS -O3..." - scripts/config --disable CC_OPTIMIZE_FOR_PERFORMANCE \ - --enable CC_OPTIMIZE_FOR_PERFORMANCE_O3 - fi + if [ -n "$_cc_harder" ]; then + echo "Enabling KBUILD_CFLAGS -O3..." + scripts/config --disable CC_OPTIMIZE_FOR_PERFORMANCE \ + --enable CC_OPTIMIZE_FOR_PERFORMANCE_O3 + fi - if [ -n "$_tcp_bbr2" ]; then - echo "Disabling TCP_CONG_CUBIC..." - scripts/config --module TCP_CONG_CUBIC \ - --disable DEFAULT_CUBIC \ - --enable TCP_CONG_BBR2 \ - --enable DEFAULT_BBR2 \ - --set-str DEFAULT_TCP_CONG bbr2 - fi + if [ -n "$_tcp_bbr2" ]; then + echo "Disabling TCP_CONG_CUBIC..." + scripts/config --module TCP_CONG_CUBIC \ + --disable DEFAULT_CUBIC \ + --enable TCP_CONG_BBR2 \ + --enable DEFAULT_BBR2 \ + --set-str DEFAULT_TCP_CONG bbr2 + fi - if [ -n "$_nf_cone" ]; then - echo "Enabling FULLCONENAT..." - scripts/config --module IP_NF_TARGET_FULLCONENAT \ - --module NETFILTER_XT_TARGET_FULLCONENAT - fi + if [ -n "$_nf_cone" ]; then + echo "Enabling FULLCONENAT..." + scripts/config --module IP_NF_TARGET_FULLCONENAT \ + --module NETFILTER_XT_TARGET_FULLCONENAT + fi - if [ -n "$_spf_enable" ]; then - echo "Enabling SPECULATIVE_PAGE_FAULT LRU..." - scripts/config --enable SPECULATIVE_PAGE_FAULT - fi + if [ -n "$_spf_enable" ]; then + echo "Enabling SPECULATIVE_PAGE_FAULT LRU..." + scripts/config --enable SPECULATIVE_PAGE_FAULT + fi - if [ -n "$_lru_enable" ]; then - echo "Enabling multigenerational LRU..." - scripts/config --enable ARCH_HAS_NONLEAF_PMD_YOUNG \ - --enable LRU_GEN \ - --enable LRU_GEN_ENABLED \ - --disable LRU_GEN_STATS - fi + if [ -n "$_lru_enable" ]; then + echo "Enabling multigenerational LRU..." + scripts/config --enable ARCH_HAS_NONLEAF_PMD_YOUNG \ + --enable LRU_GEN \ + --enable LRU_GEN_ENABLED \ + --disable LRU_GEN_STATS + fi - if [ -n "$_damon" ]; then - echo "Enabling DAMON..." - scripts/config --enable DAMON \ - --enable DAMON_VADDR \ - --enable DAMON_DBGFS \ - --enable DAMON_SYSFS \ - --enable DAMON_PADDR \ - --enable DAMON_RECLAIM - fi + if [ -n "$_damon" ]; then + echo "Enabling DAMON..." + scripts/config --enable DAMON \ + --enable DAMON_VADDR \ + --enable DAMON_DBGFS \ + --enable DAMON_SYSFS \ + --enable DAMON_PADDR \ + --enable DAMON_RECLAIM + fi - if [ -n "$_lrng_enable" ]; then - echo "Enabling Linux Random Number Generator ..." - scripts/config --disable RANDOM_DEFAULT_IMPL \ - --enable LRNG \ - --enable LRNG_OVERSAMPLE_ENTROPY_SOURCES \ - --set-val LRNG_OVERSAMPLE_ES_BITS 64 \ - --set-val LRNG_SEED_BUFFER_INIT_ADD_BITS 128 \ - --enable LRNG_IRQ \ - --enable LRNG_CONTINUOUS_COMPRESSION_ENABLED \ - --disable LRNG_CONTINUOUS_COMPRESSION_DISABLED \ - --enable LRNG_ENABLE_CONTINUOUS_COMPRESSION \ - --enable LRNG_SWITCHABLE_CONTINUOUS_COMPRESSION \ - --disable LRNG_COLLECTION_SIZE_512 \ - --enable LRNG_COLLECTION_SIZE_1024 \ - --disable LRNG_COLLECTION_SIZE_2048 \ - --disable LRNG_COLLECTION_SIZE_4096 \ - --disable LRNG_COLLECTION_SIZE_8192 \ - --set-val LRNG_COLLECTION_SIZE 1024 \ - --enable LRNG_HEALTH_TESTS \ - --set-val LRNG_RCT_CUTOFF 31 \ - --set-val LRNG_APT_CUTOFF 325 \ - --set-val LRNG_IRQ_ENTROPY_RATE 256 \ - --enable LRNG_JENT \ - --set-val LRNG_JENT_ENTROPY_RATE 16 \ - --enable LRNG_CPU \ - --set-val LRNG_CPU_ENTROPY_RATE 8 \ - --enable LRNG_DRNG_SWITCH \ - --enable LRNG_KCAPI_HASH \ - --module LRNG_DRBG \ - --module LRNG_KCAPI \ - --enable LRNG_TESTING_MENU \ - --disable LRNG_RAW_HIRES_ENTROPY \ - --disable LRNG_RAW_JIFFIES_ENTROPY \ - --disable LRNG_RAW_IRQ_ENTROPY \ - --disable LRNG_RAW_IRQFLAGS_ENTROPY \ - --disable LRNG_RAW_RETIP_ENTROPY \ - --disable LRNG_RAW_REGS_ENTROPY \ - --disable LRNG_RAW_ARRAY \ - --disable LRNG_IRQ_PERF \ - --disable LRNG_ACVT_HASH \ - --enable LRNG_RUNTIME_ES_CONFIG \ - --disable LRNG_RUNTIME_MAX_WO_RESEED_CONFIG \ - --disable LRNG_TEST_CPU_ES_COMPRESSION \ - --enable LRNG_SELFTEST \ - --disable LRNG_SELFTEST_PANIC - fi + if [ -n "$_lrng_enable" ]; then + echo "Enabling Linux Random Number Generator ..." + scripts/config --disable CONFIG_RANDOM_DEFAULT_IMPL + scripts/config --enable CONFIG_LRNG + scripts/config --enable CONFIG_LRNG_SHA256 + scripts/config --enable CONFIG_LRNG_COMMON_DEV_IF + scripts/config --enable CONFIG_LRNG_DRNG_ATOMIC + scripts/config --enable CONFIG_LRNG_SYSCTL + scripts/config --enable CONFIG_LRNG_RANDOM_IF + scripts/config --module CONFIG_LRNG_KCAPI_IF + scripts/config --module CONFIG_LRNG_HWRAND_IF + scripts/config --enable CONFIG_LRNG_DEV_IF + scripts/config --enable CONFIG_LRNG_RUNTIME_ES_CONFIG + scripts/config --enable CONFIG_LRNG_IRQ_DFLT_TIMER_ES + scripts/config --disable CONFIG_LRNG_SCHED_DFLT_TIMER_ES + scripts/config --enable CONFIG_LRNG_TIMER_COMMON + scripts/config --disable CONFIG_LRNG_COLLECTION_SIZE_256 + scripts/config --disable CONFIG_LRNG_COLLECTION_SIZE_512 + scripts/config --enable CONFIG_LRNG_COLLECTION_SIZE_1024 + scripts/config --disable CONFIG_LRNG_COLLECTION_SIZE_2048 + scripts/config --disable CONFIG_LRNG_COLLECTION_SIZE_4096 + scripts/config --disable CONFIG_LRNG_COLLECTION_SIZE_8192 + scripts/config --set-val CONFIG_LRNG_COLLECTION_SIZE 1024 + scripts/config --enable CONFIG_LRNG_HEALTH_TESTS + scripts/config --set-val CONFIG_LRNG_RCT_CUTOFF 31 + scripts/config --set-val CONFIG_LRNG_APT_CUTOFF 325 + scripts/config --enable CONFIG_LRNG_IRQ + scripts/config --enable CONFIG_LRNG_CONTINUOUS_COMPRESSION_ENABLED + scripts/config --disable CONFIG_LRNG_CONTINUOUS_COMPRESSION_DISABLED + scripts/config --enable CONFIG_LRNG_ENABLE_CONTINUOUS_COMPRESSION + scripts/config --enable CONFIG_LRNG_SWITCHABLE_CONTINUOUS_COMPRESSION + scripts/config --set-val CONFIG_LRNG_IRQ_ENTROPY_RATE 256 + scripts/config --enable CONFIG_LRNG_JENT + scripts/config --set-val CONFIG_LRNG_JENT_ENTROPY_RATE 16 + scripts/config --enable CONFIG_LRNG_CPU + scripts/config --set-val CONFIG_LRNG_CPU_FULL_ENT_MULTIPLIER 1 + scripts/config --set-val CONFIG_LRNG_CPU_ENTROPY_RATE 8 + scripts/config --enable CONFIG_LRNG_SCHED + scripts/config --set-val CONFIG_LRNG_SCHED_ENTROPY_RATE 4294967295 + scripts/config --enable CONFIG_LRNG_DRNG_CHACHA20 + scripts/config --module CONFIG_LRNG_DRBG + scripts/config --module CONFIG_LRNG_DRNG_KCAPI + scripts/config --enable CONFIG_LRNG_SWITCH + scripts/config --enable CONFIG_LRNG_SWITCH_HASH + scripts/config --module CONFIG_LRNG_HASH_KCAPI + scripts/config --enable CONFIG_LRNG_SWITCH_DRNG + scripts/config --module CONFIG_LRNG_SWITCH_DRBG + scripts/config --module CONFIG_LRNG_SWITCH_DRNG_KCAPI + scripts/config --enable CONFIG_LRNG_DFLT_DRNG_CHACHA20 + scripts/config --disable CONFIG_LRNG_DFLT_DRNG_DRBG + scripts/config --disable CONFIG_LRNG_DFLT_DRNG_KCAPI + scripts/config --enable CONFIG_LRNG_TESTING_MENU + scripts/config --disable CONFIG_LRNG_RAW_HIRES_ENTROPY + scripts/config --disable CONFIG_LRNG_RAW_JIFFIES_ENTROPY + scripts/config --disable CONFIG_LRNG_RAW_IRQ_ENTROPY + scripts/config --disable CONFIG_LRNG_RAW_RETIP_ENTROPY + scripts/config --disable CONFIG_LRNG_RAW_REGS_ENTROPY + scripts/config --disable CONFIG_LRNG_RAW_ARRAY + scripts/config --disable CONFIG_LRNG_IRQ_PERF + scripts/config --disable CONFIG_LRNG_RAW_SCHED_HIRES_ENTROPY + scripts/config --disable CONFIG_LRNG_RAW_SCHED_PID_ENTROPY + scripts/config --disable CONFIG_LRNG_RAW_SCHED_START_TIME_ENTROPY + scripts/config --disable CONFIG_LRNG_RAW_SCHED_NVCSW_ENTROPY + scripts/config --disable CONFIG_LRNG_SCHED_PERF + scripts/config --disable CONFIG_LRNG_ACVT_HASH + scripts/config --disable CONFIG_LRNG_RUNTIME_MAX_WO_RESEED_CONFIG + scripts/config --disable CONFIG_LRNG_TEST_CPU_ES_COMPRESSION + scripts/config --enable CONFIG_LRNG_SELFTEST + scripts/config --disable CONFIG_LRNG_SELFTEST_PANIC + fi - if [ -n "$_zstd_swap_compression" ]; then - echo "Enabling zram ZSTD compression..." - scripts/config --disable ZRAM_DEF_COMP_LZORLE \ - --enable ZRAM_DEF_COMP_ZSTD \ - --set-str ZRAM_DEF_COMP zstd \ - --disable ZSWAP_COMPRESSOR_DEFAULT_LZ4 \ - --enable ZSWAP_COMPRESSOR_DEFAULT_ZSTD \ - --set-str ZSWAP_COMPRESSOR_DEFAULT zstd \ - --enable ZRAM_ENTROPY \ - --set-val ZRAM_ENTROPY_THRESHOLD 100000 - fi + if [ -n "$_zstd_swap_compression" ]; then + echo "Enabling zram ZSTD compression..." + scripts/config --disable ZRAM_DEF_COMP_LZORLE \ + --enable ZRAM_DEF_COMP_ZSTD \ + --set-str ZRAM_DEF_COMP zstd \ + --disable ZSWAP_COMPRESSOR_DEFAULT_LZ4 \ + --enable ZSWAP_COMPRESSOR_DEFAULT_ZSTD \ + --set-str ZSWAP_COMPRESSOR_DEFAULT zstd \ + --enable ZRAM_ENTROPY \ + --set-val ZRAM_ENTROPY_THRESHOLD 100000 + fi - if [ -n "$_disable_debug" ]; then + if [ -n "$_disable_debug" ]; then scripts/config --disable DEBUG_INFO \ - --disable DEBUG_INFO_BTF \ - --disable DEBUG_INFO_DWARF4 \ - --disable DEBUG_INFO_DWARF5 \ - --disable PAHOLE_HAS_SPLIT_BTF \ - --disable DEBUG_INFO_BTF_MODULES \ - --disable SLUB_DEBUG \ - --disable PM_DEBUG \ - --disable PM_ADVANCED_DEBUG \ - --disable PM_SLEEP_DEBUG \ - --disable ACPI_DEBUG \ - --disable SCHED_DEBUG \ - --disable LATENCYTOP \ - --disable DEBUG_PREEMPT - fi + --disable DEBUG_INFO_BTF \ + --disable DEBUG_INFO_DWARF4 \ + --disable DEBUG_INFO_DWARF5 \ + --disable PAHOLE_HAS_SPLIT_BTF \ + --disable DEBUG_INFO_BTF_MODULES \ + --disable SLUB_DEBUG \ + --disable PM_DEBUG \ + --disable PM_ADVANCED_DEBUG \ + --disable PM_SLEEP_DEBUG \ + --disable ACPI_DEBUG \ + --disable SCHED_DEBUG \ + --disable LATENCYTOP \ + --disable DEBUG_PREEMPT + fi - echo "Enable USER_NS_UNPRIVILEGED" - scripts/config --enable USER_NS - echo "Enable WINE FASTSYNC" - scripts/config --enable WINESYNC - - ### Optionally use running kernel's config - # code originally by nous; http://aur.archlinux.org/packages.php?ID=40191 - if [ -n "$_use_current" ]; then - if [[ -s /proc/config.gz ]]; then - echo "Extracting config from /proc/config.gz..." - # modprobe configs - zcat /proc/config.gz > ./.config - else - warning "Your kernel was not compiled with IKPROC!" - warning "You cannot read the current config!" - warning "Aborting!" - exit - fi + echo "Enable USER_NS_UNPRIVILEGED" + scripts/config --enable USER_NS + echo "Enable WINE FASTSYNC" + scripts/config --enable WINESYNC + + ### Optionally use running kernel's config + # code originally by nous; http://aur.archlinux.org/packages.php?ID=40191 + if [ -n "$_use_current" ]; then + if [[ -s /proc/config.gz ]]; then + echo "Extracting config from /proc/config.gz..." + # modprobe configs + zcat /proc/config.gz > ./.config + else + warning "Your kernel was not compiled with IKPROC!" + warning "You cannot read the current config!" + warning "Aborting!" + exit fi + fi - ### Optionally load needed modules for the make localmodconfig - # See https://aur.archlinux.org/packages/modprobed-db - if [ -n "$_localmodcfg" ]; then - if [ -e $HOME/.config/modprobed.db ]; then - echo "Running Steven Rostedt's make localmodconfig now" - make ${BUILD_FLAGS[*]} LSMOD=$HOME/.config/modprobed.db localmodconfig - else - echo "No modprobed.db data found" - exit - fi + ### Optionally load needed modules for the make localmodconfig + # See https://aur.archlinux.org/packages/modprobed-db + if [ -n "$_localmodcfg" ]; then + if [ -e $HOME/.config/modprobed.db ]; then + echo "Running Steven Rostedt's make localmodconfig now" + make ${BUILD_FLAGS[*]} LSMOD=$HOME/.config/modprobed.db localmodconfig + else + echo "No modprobed.db data found" + exit fi + fi + ### Rewrite configuration + echo "Rewrite configuration..." + make ${BUILD_FLAGS[*]} prepare + yes "" | make ${BUILD_FLAGS[*]} config >/dev/null + diff -u ../config .config || : - - echo "Applying default config..." - make ${BUILD_FLAGS[*]} olddefconfig + ### Prepared version make ${BUILD_FLAGS[*]} -s kernelrelease > version echo "Prepared $pkgbase version $(<version)" ### Running make nconfig - [[ -z "$_makenconfig" ]] || make ${BUILD_FLAGS[*]} nconfig + [[ -z "$_makenconfig" ]] || make ${BUILD_FLAGS[*]} nconfig ### Save configuration for later reuse - cp -Tf ./.config "${startdir}/config-${pkgver}-${pkgrel}${pkgbase#linux}" + echo "Save configuration for later reuse..." + cat .config > "${startdir}/config-${pkgver}-${pkgrel}${pkgbase#linux}" + + ### Save configuration for later reuse + # cp -Tf ./.config "${startdir}/config-${pkgver}-${pkgrel}${pkgbase#linux}" } build() { - cd ${_srcname} + cd ${srcdir}/${_srcname} make ${BUILD_FLAGS[*]} -j$(nproc) all + + if [ -n "$_build_zfs" ]; then + cd ${srcdir}/"zfs" + + if [ -n "$_use_llvm_lto" ]; 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 \ + --datadir=/usr/share --includedir=/usr/include --with-udevdir=/lib/udev \ + --libexecdir=/usr/lib/zfs --with-config=kernel \ + --with-linux=${srcdir}/$_srcname + else + ./autogen.sh + sed -i "s|\$(uname -r)|${pkgver}-${pkgsuffix}|g" configure + ./configure --prefix=/usr --sysconfdir=/etc --sbindir=/usr/bin --libdir=/usr/lib \ + --datadir=/usr/share --includedir=/usr/include --with-udevdir=/lib/udev \ + --libexecdir=/usr/lib/zfs --with-config=kernel \ + --with-linux=${srcdir}/$_srcname + fi + make ${BUILD_FLAGS[*]} + fi } _package() { @@ -597,112 +676,126 @@ _package() { 'uksmd: Userspace KSM helper daemon') provides=(VIRTUALBOX-GUEST-MODULES WIREGUARD-MODULE KSMBD-MODULE UKSMD-BUILTIN) - cd $_srcname + cd ${srcdir}/$_srcname - local kernver="$(<version)" - local modulesdir="$pkgdir/usr/lib/modules/$kernver" + local kernver="$(<version)" + local modulesdir="$pkgdir/usr/lib/modules/$kernver" - echo "Installing boot image..." - # systemd expects to find the kernel here to allow hibernation - # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344 - install -Dm644 "$(make -s image_name)" "$modulesdir/vmlinuz" + echo "Installing boot image..." + # systemd expects to find the kernel here to allow hibernation + # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344 + install -Dm644 "$(make -s image_name)" "$modulesdir/vmlinuz" - # Used by mkinitcpio to name the kernel - echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase" + # Used by mkinitcpio to name the kernel + echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase" - echo "Installing modules..." - make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \ - DEPMOD=/doesnt/exist modules_install # Suppress depmod + echo "Installing modules..." + make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \ + DEPMOD=/doesnt/exist modules_install # Suppress depmod - # remove build and source links - rm "$modulesdir"/{source,build} + # remove build and source links + rm "$modulesdir"/{source,build} } _package-headers() { pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel" - depends=(pahole) + depends=('pahole' linux-${pkgsuffix} ) - cd ${_srcname} + cd ${srcdir}/${_srcname} local builddir="$pkgdir/usr/lib/modules/$(<version)/build" - echo "Installing build files..." - install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \ - localversion.* version vmlinux - install -Dt "$builddir/kernel" -m644 kernel/Makefile - install -Dt "$builddir/arch/x86" -m644 arch/x86/Makefile - cp -t "$builddir" -a scripts - - # required when STACK_VALIDATION is enabled - install -Dt "$builddir/tools/objtool" tools/objtool/objtool - - # required when DEBUG_INFO_BTF_MODULES is enabled - if [ -f tools/bpf/resolve_btfids/resolve_btfids ]; then - install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids - fi - - echo "Installing headers..." - cp -t "$builddir" -a include - cp -t "$builddir/arch/x86" -a arch/x86/include - install -Dt "$builddir/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s + echo "Installing build files..." + install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \ + localversion.* version vmlinux + install -Dt "$builddir/kernel" -m644 kernel/Makefile + install -Dt "$builddir/arch/x86" -m644 arch/x86/Makefile + cp -t "$builddir" -a scripts - install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h - install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h + # required when STACK_VALIDATION is enabled + install -Dt "$builddir/tools/objtool" tools/objtool/objtool - # https://bugs.archlinux.org/task/13146 - install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h - - # https://bugs.archlinux.org/task/20402 - install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h - install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h - install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h - - # https://bugs.archlinux.org/task/71392 - install -Dt "$builddir/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h - - echo "Installing KConfig files..." - find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \; - - echo "Removing unneeded architectures..." - local arch - for arch in "$builddir"/arch/*/; do - [[ $arch = */x86/ ]] && continue - echo "Removing $(basename "$arch")" - rm -r "$arch" - done + # required when DEBUG_INFO_BTF_MODULES is enabled + if [ -f tools/bpf/resolve_btfids/resolve_btfids ]; then + install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids + fi - echo "Removing documentation..." - rm -r "$builddir/Documentation" - - echo "Removing broken symlinks..." - find -L "$builddir" -type l -printf 'Removing %P\n' -delete - - echo "Removing loose objects..." - find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete - - echo "Stripping build tools..." - local file - while read -rd '' file; do - case "$(file -bi "$file")" in - application/x-sharedlib\;*) # Libraries (.so) - strip -v $STRIP_SHARED "$file" ;; - application/x-archive\;*) # Libraries (.a) - strip -v $STRIP_STATIC "$file" ;; - application/x-executable\;*) # Binaries - strip -v $STRIP_BINARIES "$file" ;; - application/x-pie-executable\;*) # Relocatable binaries - strip -v $STRIP_SHARED "$file" ;; - esac - done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0) - - echo "Stripping vmlinux..." - strip -v $STRIP_STATIC "$builddir/vmlinux" + echo "Installing headers..." + cp -t "$builddir" -a include + cp -t "$builddir/arch/x86" -a arch/x86/include + install -Dt "$builddir/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s + + install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h + install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h + + # https://bugs.archlinux.org/task/13146 + install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h + + # https://bugs.archlinux.org/task/20402 + install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h + install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h + install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h + + # https://bugs.archlinux.org/task/71392 + install -Dt "$builddir/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h + + echo "Installing KConfig files..." + find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \; + + echo "Removing unneeded architectures..." + local arch + for arch in "$builddir"/arch/*/; do + [[ $arch = */x86/ ]] && continue + echo "Removing $(basename "$arch")" + rm -r "$arch" + done + + echo "Removing documentation..." + rm -r "$builddir/Documentation" + + echo "Removing broken symlinks..." + find -L "$builddir" -type l -printf 'Removing %P\n' -delete + + echo "Removing loose objects..." + find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete + + echo "Stripping build tools..." + local file + while read -rd '' file; do + case "$(file -bi "$file")" in + application/x-sharedlib\;*) # Libraries (.so) + strip -v $STRIP_SHARED "$file" ;; + application/x-archive\;*) # Libraries (.a) + strip -v $STRIP_STATIC "$file" ;; + application/x-executable\;*) # Binaries + strip -v $STRIP_BINARIES "$file" ;; + application/x-pie-executable\;*) # Relocatable binaries + strip -v $STRIP_SHARED "$file" ;; + esac + done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0) + + echo "Stripping vmlinux..." + strip -v $STRIP_STATIC "$builddir/vmlinux" echo "Adding symlink..." mkdir -p "$pkgdir/usr/src" ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase" } +_package-zfs(){ + pkgdesc="zfs module for the $pkgdesc kernel" + depends=('pahole' linux-$pkgsuffix=$_kernver) + + cd ${srcdir}/"zfs" + install -dm755 "$pkgdir/usr/lib/modules/${_kernver}-${pkgsuffix}" + install -m644 module/*/*.ko "$pkgdir/usr/lib/modules/${_kernver}-${pkgsuffix}" + find "$pkgdir" -name '*.ko' -exec zstd --rm -10 {} + +# sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${pkgver}-${pkgbase}'/" "$startdir/zfs.install" +} + pkgname=("$pkgbase" "$pkgbase-headers") +if [ -n "$_build_zfs" ]; then + pkgname+=("$pkgbase-zfs") +fi for _p in "${pkgname[@]}"; do eval "package_$_p() { $(declare -f "_package${_p#$pkgbase}") @@ -711,23 +804,27 @@ for _p in "${pkgname[@]}"; do done sha256sums=('ef9ff2dfa5416a03e7e5fd9c308aaec385fe8ff9f4a62d957b167843849659a2' - 'fbff2747a1d8916f2de80455fb40f0ce1bf9d5df5dca7157234242b5b286fc90' - '616390dc143695ac216696e86f58beee5df420fb3af22a6a098f7a14aaf5251e' - '85eeddbd0b1fdb44333c450e6d93e370dcd7e230cecccce47667aaa746bea3ae' + 'e37566b5e26c139629c14fbcae237d1ff15caa592fc10593f1fd15698e5afb71' + 'SKIP' + '51bcca36288e44282017ed35b41855d22d108508c1a2501b71e5f4ccce885da2' + 'e8179f661dc9ba2ad89455f0c7e952e9dd9b4d6445476384cbac2730cdd46b65' + '6705db6d11e22ed9bb56a0ac3f22918667d52a835bb2ab678ac2c93d2902045d' + '326d129f9435145add756dc967accd56ffe1d8ff1b6650f84d2578c41bd6dfd6' '2bfe45a67732a97cea01bf760a8f9fb297057c2488eb9e61720a0bb26c9b11e2' 'dc2898751118804bc3f36b5a6928a2927d04919ce41c0ce013009f5564d6d232' '3754c1ad6bc2fb4e73e9d77137e9f245b3be1a73a05685f0ca03f4c086e5d04d' 'e2266d499cebdd5d195a044048ae4a13755f1d3edb3ece2c3f8837228b4cd521' 'c2bf57d37db1f93c5f3eeff2e2957f01618f4786613c13755f9ae6989d2b745c' '30fd4ca078cb1eee0bc4005700da4d15515a577ccdb96ea7922040aa9086d6b7' - '4fde226af6680d151143c30143d1594d2b2994350ba1e4726f1768584df2a117' - '08bde51de2d012219628bf1831a475115266cf4a6969be8064e719140cc9c232' + '4b18c6a82b62c50b45568526eeb16ae877c8f52c407a4bb9c6144c07a0d1233a' + 'f4ed599589fdd44270229492505f5f88e20d79e93b8044f8041a2fc90486bb4e' '1d9c83de97d541f5a7ae4612a96c05aea8ce38de5471cc21fd2197dbd6644d00' 'c1aae07261bafc711c2d66e26c2c30e444e11509cacc7aec148dc021761294cd' - 'a2701625ea310c809fd7ecdf96c43a51ba28ed1dd8583fdbc06897a0a18230e2' '781cd26d7b0794d11f103ada94140061117c628471a4c49f0228f22f0a6cf425' '99b18e00ca3e038481a23f4c83bc285a1ad0e209d049a8476c8f997627aaea79' 'd2c542b3d44ef11364248c550d20ec7b52261cd98ee5191c24d59c9e0a69392e' '8edf9b9b1a9c26cc4d6dfaf5f14c06b197a04c5bbb8459dd292c033aa2534d19' 'efe8558b63feb0e76b61d69952c5300ad54c951d9044101be7c01932a54fb4fb' - 'be21f15aeb22b2ca1e35e4975590d30736af0483ea7464e3464a60d993e37e22') + 'cb2494f5ad43fd260e26d771305dade3f9499fa1ffaf53cb9ef8c19b66dab7d7' + 'be21f15aeb22b2ca1e35e4975590d30736af0483ea7464e3464a60d993e37e22' + 'SKIP') @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 5.18.1 Kernel Configuration +# Linux/x86 5.18.3 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.1.0" CONFIG_CC_IS_GCC=y @@ -15,12 +15,15 @@ CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_HAS_ASM_GOTO=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y +CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y CONFIG_PAHOLE_VERSION=123 CONFIG_IRQ_WORK=y CONFIG_BUILDTIME_TABLE_SORT=y CONFIG_THREAD_INFO_IN_TASK=y +# CONFIG_TT_SCHED is not set +# CONFIG_TT_ACCOUNTING_STATS is not set # # General setup @@ -126,13 +129,11 @@ CONFIG_BPF_PRELOAD_UMD=m CONFIG_BPF_LSM=y # end of BPF subsystem -CONFIG_PREEMPT_BUILD=y +CONFIG_PREEMPT_VOLUNTARY_BUILD=y # CONFIG_PREEMPT_NONE is not set -# CONFIG_PREEMPT_VOLUNTARY is not set -CONFIG_PREEMPT=y -CONFIG_PREEMPT_COUNT=y -CONFIG_PREEMPTION=y -CONFIG_PREEMPT_DYNAMIC=y +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_DYNAMIC is not set CONFIG_SCHED_CORE=y # @@ -158,20 +159,16 @@ CONFIG_CPU_ISOLATION=y # RCU Subsystem # CONFIG_TREE_RCU=y -CONFIG_PREEMPT_RCU=y CONFIG_RCU_EXPERT=y CONFIG_SRCU=y CONFIG_TREE_SRCU=y CONFIG_TASKS_RCU_GENERIC=y -CONFIG_TASKS_RCU=y CONFIG_TASKS_RUDE_RCU=y CONFIG_TASKS_TRACE_RCU=y CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_NEED_SEGCBLIST=y CONFIG_RCU_FANOUT=64 CONFIG_RCU_FANOUT_LEAF=16 -CONFIG_RCU_BOOST=y -CONFIG_RCU_BOOST_DELAY=500 CONFIG_RCU_NOCB_CPU=y CONFIG_RCU_NOCB_CPU_DEFAULT_ALL=y # CONFIG_TASKS_TRACE_RCU_READ_MB is not set @@ -190,6 +187,9 @@ CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y # # Scheduler features # +# CONFIG_SCHED_ALT is not set +# CONFIG_SCHED_BMQ is not set +# CONFIG_SCHED_PDS is not set CONFIG_UCLAMP_TASK=y CONFIG_UCLAMP_BUCKETS_COUNT=5 # end of Scheduler features @@ -237,7 +237,9 @@ CONFIG_USER_NS_UNPRIVILEGED=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_CHECKPOINT_RESTORE=y +# CONFIG_SCHED_BORE is not set CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_AUTOGROUP_DEFAULT_ENABLED=y # CONFIG_SYSFS_DEPRECATED is not set CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y @@ -534,7 +536,11 @@ CONFIG_EFI_MIXED=y # CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set CONFIG_HZ_300=y +# CONFIG_HZ_500 is not set +# 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 @@ -840,9 +846,15 @@ CONFIG_HAVE_ARCH_STACKLEAK=y CONFIG_HAVE_STACKPROTECTOR=y CONFIG_STACKPROTECTOR=y CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_LTO=y +CONFIG_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_HAS_LTO_CLANG=y CONFIG_LTO_NONE=y +# CONFIG_LTO_CLANG_FULL is not set +# CONFIG_LTO_CLANG_THIN is not set +CONFIG_LTO_CLANG_THIN_CACHEDIR="/tmp" CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_CONTEXT_TRACKING_OFFSTACK=y @@ -1011,7 +1023,11 @@ CONFIG_BFQ_GROUP_IOSCHED=y CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PADATA=y CONFIG_ASN1=y -CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y @@ -1772,12 +1788,12 @@ CONFIG_NET_SCH_ETS=m CONFIG_NET_SCH_DEFAULT=y # CONFIG_DEFAULT_FQ is not set # CONFIG_DEFAULT_CODEL is not set -CONFIG_DEFAULT_FQ_CODEL=y +# CONFIG_DEFAULT_FQ_CODEL is not set # CONFIG_DEFAULT_FQ_PIE is not set # CONFIG_DEFAULT_SFQ is not set CONFIG_DEFAULT_CAKE=y # CONFIG_DEFAULT_PFIFO_FAST is not set -CONFIG_DEFAULT_NET_SCH="fq_codel" +CONFIG_DEFAULT_NET_SCH="cake" # # Classification @@ -2372,7 +2388,6 @@ CONFIG_EFI_VARS_PSTORE=y CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y CONFIG_EFI_RUNTIME_MAP=y # CONFIG_EFI_FAKE_MEMMAP is not set -CONFIG_EFI_SOFT_RESERVE=y CONFIG_EFI_RUNTIME_WRAPPERS=y CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y CONFIG_EFI_BOOTLOADER_CONTROL=m @@ -2390,6 +2405,7 @@ CONFIG_UEFI_CPER_X86=y CONFIG_EFI_DEV_PATH_PARSER=y CONFIG_EFI_EARLYCON=y CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y +# CONFIG_EFI_DISABLE_RUNTIME is not set # # Tegra firmware driver @@ -5684,17 +5700,14 @@ CONFIG_RC_LOOPBACK=m CONFIG_RC_XBOX_DVD=m CONFIG_CEC_CORE=y CONFIG_CEC_NOTIFIER=y -CONFIG_CEC_PIN=y # # CEC support # CONFIG_MEDIA_CEC_RC=y -# CONFIG_CEC_PIN_ERROR_INJ is not set CONFIG_MEDIA_CEC_SUPPORT=y CONFIG_CEC_CH7322=m CONFIG_CEC_CROS_EC=m -CONFIG_CEC_GPIO=m CONFIG_CEC_SECO=m CONFIG_CEC_SECO_RC=y CONFIG_USB_PULSE8_CEC=m @@ -5992,7 +6005,7 @@ CONFIG_DVB_BUDGET_CI=m CONFIG_DVB_BUDGET_AV=m CONFIG_VIDEO_IPU3_CIO2=m CONFIG_CIO2_BRIDGE=y -CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_ADAPTERS=m CONFIG_RADIO_MAXIRADIO=m CONFIG_RADIO_SAA7706H=m CONFIG_RADIO_SHARK=m @@ -10292,11 +10305,11 @@ CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y # CONFIG_ZERO_CALL_USED_REGS is not set # end of Memory initialization -CONFIG_RANDSTRUCT_NONE is not set +CONFIG_RANDSTRUCT_NONE=y # CONFIG_RANDSTRUCT_FULL is not set -CONFIG_RANDSTRUCT_PERFORMANCE=y -CONFIG_RANDSTRUCT=y -CONFIG_GCC_PLUGIN_RANDSTRUCT=y +# CONFIG_RANDSTRUCT_PERFORMANCE is not set +# CONFIG_RANDSTRUCT is not set +# CONFIG_GCC_PLUGIN_RANDSTRUCT is not set # end of Kernel hardening options # end of Security options @@ -10750,7 +10763,7 @@ CONFIG_DEBUG_INFO=y # CONFIG_DEBUG_INFO_NONE is not set # CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set # CONFIG_DEBUG_INFO_DWARF4 is not set -CONFIG_DEBUG_INFO_DWARF5=y +# CONFIG_DEBUG_INFO_DWARF5 is not set # CONFIG_DEBUG_INFO_REDUCED is not set # CONFIG_DEBUG_INFO_COMPRESSED is not set # CONFIG_DEBUG_INFO_SPLIT is not set |