# Maintainer: antman666 <945360554@qq.com> # Contributor: Jan Alexander Steffens (heftig) # Contributor: graysky ### BUILD OPTIONS # Set the next two variables to ANYTHING that is not null to enable them # Tweak kernel options prior to a build via nconfig _makenconfig=y # Only compile active modules to VASTLY reduce the number of modules built and # the build time. # # To keep track of which modules are needed for your specific system/hardware, # give module_db a try: https://aur.archlinux.org/packages/modprobed-db # This PKGBUILD reads the database kept if it exists # # More at this wiki page ---> https://wiki.archlinux.org/index.php/Modprobed-db _localmodcfg= # Optionally select a sub architecture by number or leave blank which will # require user interaction during the build. Note that the generic (default) # option is 36. # # 1. AMD Opteron/Athlon64/Hammer/K8 (MK8) # 2. AMD Opteron/Athlon64/Hammer/K8 with SSE3 (MK8SSE3) (NEW) # 3. AMD 61xx/7x50/PhenomX3/X4/II/K10 (MK10) (NEW) # 4. AMD Barcelona (MBARCELONA) (NEW) # 5. AMD Bobcat (MBOBCAT) (NEW) # 6. AMD Jaguar (MJAGUAR) (NEW) # 7. AMD Bulldozer (MBULLDOZER) (NEW) # 8. AMD Piledriver (MPILEDRIVER) (NEW) # 9. AMD Steamroller (MSTEAMROLLER) (NEW) # 10. AMD Excavator (MEXCAVATOR) (NEW) # 11. AMD Zen (MZEN) (NEW) # 12. AMD Zen 2 (MZEN2) (NEW) # 13. AMD Zen 3 (MZEN3) (NEW) # 14. Intel P4 / older Netburst based Xeon (MPSC) # 15. Intel Core 2 (MCORE2) # 16. Intel Atom (MATOM) # 17. Intel Nehalem (MNEHALEM) (NEW) # 18. Intel Westmere (MWESTMERE) (NEW) # 19. Intel Silvermont (MSILVERMONT) (NEW) # 20. Intel Goldmont (MGOLDMONT) (NEW) # 21. Intel Goldmont Plus (MGOLDMONTPLUS) (NEW) # 22. Intel Sandy Bridge (MSANDYBRIDGE) (NEW) # 23. Intel Ivy Bridge (MIVYBRIDGE) (NEW) # 24. Intel Haswell (MHASWELL) (NEW) # 25. Intel Broadwell (MBROADWELL) (NEW) # 26. Intel Skylake (MSKYLAKE) (NEW) # 27. Intel Skylake X (MSKYLAKEX) (NEW) # 28. Intel Cannon Lake (MCANNONLAKE) (NEW) # 29. Intel Ice Lake (MICELAKE) (NEW) # 30. Intel Cascade Lake (MCASCADELAKE) (NEW) # 31. Intel Cooper Lake (MCOOPERLAKE) (NEW) # 32. Intel Tiger Lake (MTIGERLAKE) (NEW) # 33. Intel Sapphire Rapids (MSAPPHIRERAPIDS) (NEW) # 34. Intel Rocket Lake (MROCKETLAKE) (NEW) # 35. Intel Alder Lake (MALDERLAKE) (NEW) # 36. Generic-x86-64 (GENERIC_CPU) # 37. Generic-x86-64-v2 (GENERIC_CPU2) (NEW) # 38. Generic-x86-64-v3 (GENERIC_CPU3) (NEW) # 39. Generic-x86-64-v4 (GENERIC_CPU4) (NEW) # 40. Intel-Native optimizations autodetected by GCC (MNATIVE_INTEL) (NEW) # 41. AMD-Native optimizations autodetected by GCC (MNATIVE_AMD) (NEW) _subarch=36 ### IMPORTANT: Do no edit below this line unless you know what you're doing pkgbase=linux-ck-uksm pkgver=5.12.15 pkgrel=1 _major=5.12 _ckpatchversion=1 _ckpatch="patch-${_major}-ck${_ckpatchversion}" _gcc_more_v=20210610 _patches_url="https://gitlab.com/sirlucjan/kernel-patches/-/raw/master/${_major}" arch=(x86_64) url="https://wiki.archlinux.org/index.php/Linux-ck" license=(GPL2) makedepends=( bc kmod libelf cpio perl tar xz ) options=('!strip') source=("https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${pkgver}.tar".{xz,sign} config # the main kernel config file "more-uarches-${_gcc_more_v}.tar.gz::https://github.com/graysky2/kernel_compiler_patch/archive/${_gcc_more_v}.tar.gz" "http://ck.kolivas.org/patches/5.0/${_major}/${_major}-ck${_ckpatchversion}/${_ckpatch}.xz" 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch 0002-x86-setup-Consolidate-early-memory-reservations.patch 0003-x86-setup-Merge-several-reservations-of-start-of-mem.patch 0004-x86-setup-Move-trim_snb_memory-later-in-setup_arch-t.patch 0005-x86-setup-always-reserve-the-first-1M-of-RAM.patch 0006-x86-setup-remove-CONFIG_X86_RESERVE_LOW-and-reservel.patch 0007-x86-crash-remove-crash_reserve_low_1M.patch "0008-UKSM.patch::${_patches_url}/uksm-patches/0001-UKSM-for-5.12.patch" "0009-bbr2.patch::${_patches_url}/bbr2-patches-v2/0001-bbr2-5.12-introduce-BBRv2.patch" "0010-btrfs.patch::${_patches_url}/btrfs-patches-v13/0001-btrfs-patches.patch" "0011-block.patch::${_patches_url}/block-patches-v6/0001-block-patches.patch" "0012-bfq.patch::${_patches_url}/bfq-patches-v15/0001-bfq-patches.patch" "0013-futex2.patch::${_patches_url}/futex2-stable-patches-v7/0001-futex2-resync-from-gitlab.collabora.com.patch" ) validpgpkeys=( 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman ) b2sums=('2d94859080bba686786b690733d6df4a17f6183c690854545b87d784d16fbc5050fc07be08b2360cc1d0a6fe11bd8f18add68c893d92bb52e10bb0f61ff4eb76' 'SKIP' 'SKIP' '30d1df754608bb423cbc99c2097ad521baa091b9a3b39df4bd5c2d50c57eec54d8fa0e4a4a04b847c3d1b87ba682cadc8db45fabeefdc9ad7caaf8e77b96e41a' 'c9f729ba1efe6f04e7b2c57d3999bc9675b577596dccb2f227e5b6e444285e1fdd270bf67c0fcf9f5808a4c3a4b1c7a5c13a76f754ad9b9447243ccbaf2ce6a3' 'dda152592dec643bce44754bf5d2d43a5897cc57f8dc258b87857055a45abf903d619aba1de389228cb086a17fedea5458f8fe2c0993fa20213bb7c5bca331c8' '13330cf57b5c6b928ea73bd30479010688cf8d2003107b041a7fdad33c1ac225c8c905bef235cd762d6ea76be754b5db6be769526bacf7333298f72d6afff535' '381e0f177faa3090d1abf4d11a97db535712840870265dea167d7692dee7733a226d09c103d01705d5c0809fa66c7a23efea9da2473da672644b06e31db77083' 'cd9da0dee048fc52a3032343f122c2055081eeedfc8a3e5227218f0f63fc7618e8fe744c8caa7e3a2ca844f4aaf7314b57a306d0d3b1849e97b24687b8c5a501' '1810832172e1b006a5471d8e317573343884feed9abc9e7380a32d83c958b0e6aa68adf9a647c9b7b714783997591f5d80e754c6e7357279661eee998f22864c' '4e7cb958f95d99bba9810e675d4f1b0b3c171f78e9fe96ff9d265f792f4ceb1367f2f4d238f36b5ca1c395e14abdabbf0f8ce2dc07c4fe567d822a8b629dfa05' '2251f8bf84e141b4661f84cc2ce7b21783ac0a349b2651477dfcbc5383b796b2e588d85ee411398b15c820cb3672256be8ed281c8bccfad252c9dd5b0e1e0cd5' '14f45171afc3b15488b40a05e58b352c5057da3a5782e13527392f7750d8e45a8db54f9b50b218fedb8bf679de3b4e5d78e230a44f7b1aa482f7b3aa831bd641' '0c5f2e21e27aee6c8d8eaa07daa111ff2687756413f8a909cf03acc8f836367c6b27050966f9b7bf1521ad11b84fe94fb42d70c33693c80a674ef223cf2cfc00' '705a8f2037eef3afdd0f2a7648cc8d00bfc03112385b44a8907182812b6aed075519a9236909c0e3ba09df887381dd76cb01c601e0df05119136f7318587a416' '67067d624711d663c1be1d35c5e59cb588faba1769b27443a3a13b44dbe9e627edd054a4fd122d04d587e21b25be5520fffb61cfc7538aee77c33a1a8cb1b97a' '9aba508592818a4b4f000fc1bd471ec74687c8f0f972f330e851bd2364eaf30cff4d5012f843625ca025bc2478a2c76e0d082d43f33358ab18ce829fab4f0c2b' '294f42c9e5099f923c0f2bfde2168e0e90cced379ae195cbe9505ab029900c60f17f58fa2200999a2dca91c9354f072d5171806bd9b4f8961d3d55281d7c6707') export KBUILD_BUILD_HOST=archlinux export KBUILD_BUILD_USER=$pkgbase export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" prepare() { cd linux-${pkgver} msg2 "Setting version..." scripts/setlocalversion --save-scmversion echo "-$pkgrel" > localversion.10-pkgrel echo "${pkgbase#linux}" > localversion.20-pkgname local src for src in "${source[@]}"; do src="${src%%::*}" src="${src##*/}" [[ $src = 0*.patch ]] || continue msg2 "Applying patch $src..." patch -Np1 < "../$src" done msg2 "Setting config..." cp ../config .config # disable CONFIG_DEBUG_INFO=y at build time otherwise memory usage blows up # and can easily overwhelm a system with 32 GB of memory using a tmpfs build # partition ... this was introduced by FS#66260, see: # https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/linux&id=663b08666b269eeeeaafbafaee07fd03389ac8d7 scripts/config --disable CONFIG_DEBUG_INFO scripts/config --disable CONFIG_CGROUP_BPF scripts/config --disable CONFIG_BPF_LSM scripts/config --disable CONFIG_BPF_PRELOAD scripts/config --disable CONFIG_BPF_LIRC_MODE2 scripts/config --disable CONFIG_BPF_KPROBE_OVERRIDE # https://bbs.archlinux.org/viewtopic.php?pid=1824594#p1824594 scripts/config --enable CONFIG_PSI_DEFAULT_DISABLED # https://bbs.archlinux.org/viewtopic.php?pid=1863567#p1863567 scripts/config --disable CONFIG_LATENCYTOP scripts/config --disable CONFIG_SCHED_DEBUG # FS#66613 # https://bugzilla.kernel.org/show_bug.cgi?id=207173#c6 scripts/config --disable CONFIG_KVM_WERROR # fix naming schema in EXTRAVERSION of ck patch set sed -i -re "s/^(.EXTRAVERSION).*$/\1 = /" "../${_ckpatch}" # ck patchset itself msg2 "Patching with ck patchset..." patch -Np1 -i ../"${_ckpatch}" # non-interactively apply ck1 default options # this isn't redundant if we want a clean selection of subarch below make olddefconfig # https://github.com/graysky2/kernel_gcc_patch # make sure to apply after olddefconfig to allow the next section msg2 "Patching to enable GCC optimization for other uarchs..." patch -Np1 -i "$srcdir/kernel_compiler_patch-$_gcc_more_v/more-uarches-for-kernel-5.8+.patch" if [ -n "$_subarch" ]; then # user wants a subarch so apply choice defined above interactively via 'yes' yes "$_subarch" | make oldconfig else # no subarch defined so allow user to pick one make oldconfig fi ### Optionally load needed modules for the make localmodconfig # See https://aur.archlinux.org/packages/modprobed-db if [ -n "$_localmodcfg" ]; then if [ -f $HOME/.config/modprobed.db ]; then echo "Running Steven Rostedt's make localmodconfig now" make LSMOD=$HOME/.config/modprobed.db localmodconfig else echo "No modprobed.db data found" exit fi fi make -s kernelrelease > version msg2 "Prepared $pkgbase version $( "${startdir}/config.last" # uncomment if you want to build with distcc ### sed -i '/HAVE_GCC_PLUGINS/d' arch/x86/Kconfig } build() { cd linux-${pkgver} make all } _package() { pkgdesc="The ${pkgbase/linux/Linux} kernel and modules with the ck1 and uksm patchesset featuring MuQSS CPU scheduler" depends=(coreutils kmod initramfs) optdepends=('crda: to set the correct wireless channels of your country' 'linux-firmware: firmware images needed for some devices') provides=(VIRTUALBOX-GUEST-MODULES WIREGUARD-MODULE) #groups=('ck-generic') cd linux-${pkgver} local kernver="$(