diff options
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 349 |
1 files changed, 192 insertions, 157 deletions
@@ -1,8 +1,8 @@ -# Maintainer: ptr1337 <admin@ptr1337.dev> # Contributor: Piotr Gorski <lucjan.lucjanov@gmail.com> # Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> # Contributor: Tobias Powalowski <tpowa@archlinux.org> # Contributor: Thomas Baechler <thomas@archlinux.org> +# Maintainer: ptr1337 <admin@ptr1337.dev> ### BUILD OPTIONS # Set these variables to ANYTHING that is not null to enable them @@ -11,32 +11,22 @@ # A single multi-core CPU actually runs slower with NUMA enabled. # See, https://bugs.archlinux.org/task/31187 _NUMAdisable=y - +# Enable fsync _fsync=y - +#enable futex2 _futex2=y - +#enable winesync _winesync= -### Enable protect file mappings under memory pressure -_mm_protect=y ### Set performance governor as default _per_gov=y ### Disable Deadline I/O scheduler _deadline_disable=y ### Disable Kyber I/O scheduler _kyber_disable=y -### Running with a 1000 HZ, 750HZ or 500HZ tick rate +### Running with a 2000 HZ, 1000HZ or 500HZ tick rate +_2k_HZ_ticks= _1k_HZ_ticks=y -_750_HZ_ticks= _500_HZ_ticks= -### Tweak kernel options prior to a build via nconfig -_makenconfig= -### Tweak kernel options prior to a build via menuconfig -_makemenuconfig= -### Tweak kernel options prior to a build via xconfig -_makexconfig= -### Tweak kernel options prior to a build via gconfig -_makegconfig= # Compile ONLY used modules to VASTLYreduce the number of modules built # and the build time. # @@ -58,65 +48,56 @@ _use_current= pkgbase=linux-cacule-rc # pkgname=('linux-cacule' linux-cacule-headers) -_major=5.12 +_major=5.13 #_minor=1 #_minorc=$((_minor+1)) -_rcver=rc8 +_rcver=rc3 pkgver=${_major}.${_rcver} #_stable=${_major}.${_minor} _stablerc=${_major}-${_rcver} _srcname=linux-${_stablerc} -pkgrel=2 -pkgdesc='Linux-CacULE Kernel by Hamad Marri and with some other patchsets' +pkgrel=1 +pkgdesc='Linux-CacULE Kernel-RC by Hamad Marri and with some other patchsets' arch=('x86_64') url="https://github.com/hamadmarri/cacule-cpu-scheduler" license=('GPL2') options=('!strip') makedepends=('kmod' 'bc' 'libelf' 'python-sphinx' 'python-sphinx_rtd_theme' 'graphviz' 'imagemagick' 'pahole' 'cpio' 'perl' 'tar' 'xz') -_patchsource="https://raw.githubusercontent.com/ptr1337/kernel-patches/main/5.12-rc" +_patchsource="https://raw.githubusercontent.com/ptr1337/linux-cacule-aur/master/patches/5.12" source=(#"https://www.kernel.org/pub/linux/kernel/v5.x/linux-${_stablerc}.tar.xz" - "https://git.kernel.org/torvalds/t/linux-5.12-rc8.tar.gz" + "https://git.kernel.org/torvalds/t/linux-5.13-rc3.tar.gz" "config" - "${_patchsource}/cacule-patches/cacule-5.12.patch" - "${_patchsource}/cacule-patches/0002-cacule-Change-default-preemption-latency-to-2ms-for-.patch" - "${_patchsource}/cpu-patches/0001-cpu-patches.patch" + "${_patchsource}/arch-patches-v3/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch" + "${_patchsource}/cacule-patches/cacule-5.13.patch" + "${_patchsource}/cpu-patches-v2/0001-cpu-patches.patch" + # "${_patchsource}/futex-patches/0001-futex-resync-from-gitlab.collabora.com.patch" + # "${_patchsource}/futex2-stable-patches-v3/0001-futex2-resync-from-gitlab.collabora.com.patch" + # "${_patchsource}/wine-esync-patches/0001-v5.12-winesync.patch" + # "${_patchsource}/zen-patches-v2/0001-zen-patches.patch" + # "${_patchsource}/lqx-patches-v2/0001-lqx-patches.patch" + # "${_patchsource}/bfq-patches-v8/0001-bfq-patches.patch" + # "${_patchsource}/block-patches-v3/0001-block-patches.patch" "${_patchsource}/ll-patches/0005-Disable-CPU_FREQ_GOV_SCHEDUTIL.patch" - "${_patchsource}/futex2-patches/0001-futex2-resync-from-gitlab.collabora.com.patch" - "${_patchsource}/bfq-patches/0001-bfq-patches.patch" - "${_patchsource}/block-patches/0001-block-patches.patch" - "${_patchsource}/fixes-miscellaneous/0001-fixes-miscellaneous.patch" - "${_patchsource}/futex-patches/0001-futex-resync-from-gitlab.collabora.com.patch" - "${_patchsource}/ll-patches/0001-LL-kconfig-add-750Hz-timer-interrupt-kernel-config-o.patch" - "${_patchsource}/bbr2-patches/0001-bbr2-5.12-introduce-BBRv2.patch" - "${_patchsource}/lqx-patches-v2/0001-lqx-patches.patch" - "${_patchsource}/pf-patches/0001-genirq-i2c-Provide-and-use-generic_dispatch_irq.patch" - "${_patchsource}/mm-patches/0001-mm-5.12-protect-file-mappings-under-memory-pressure.patch" - "${_patchsource}/zstd-patches/0001-zstd-patches.patch" - "${_patchsource}/zstd-dev-patches/0001-zstd-dev-patches.patch" - "${_patchsource}/clearlinux-patches/0001-clearlinux-patches.patch" - "${_patchsource}/initramfs-patches/0001-initramfs-patches.patch") - -sha512sums=('a9d1da6a1bb5a2ef4c8dbd58089b8f6f3e8de61cf725434785f35821bd3f433c29019b9e0245a990c8ea035c0e8b60645b42bdf2f3b2eed3974284c8daee4d1e' - 'ab1954ccaab6d77d34b6e1b2ba9ce5dfb2ab4eae5777e071dddbd41dacdbb67e786fd210a96089f6166cae373cabaf22be89c40fea70b3b1cee4960bd5ba1ad1' - '01a59958b88f4f0fae72943883937bccb5be2a1ceeac9ba8a689c4b47125edcd3360aa6a94a535b6dae24ea8b1ac52002431ad72b2a623373c905901af2b3609' - 'bafda1ec6114a360bed8a9f8ae6b1e8dc5c22adf15f7545c3455a090f14b491639707f6624d7a891ec66b459842e61df9d62274b070b7a611f0bdbd367219ae5' - 'f475db6e28a33cca3fde7409eb010c3472007443e62a889dd301db48516015d9f3f3d965856faa824512786255ca1236bd06bb918bac76f921ba7e1766838451' - '8a5e530dd90ac257e1db0495db0cabd303939851c18dd5b2fd1a1e6d5eba336720cf0f2a260baaac906dead1f61989a4bd592eed632a2f5e10c00c6702f0fe58' - '9bdc6e95c683ec0a93777234f327b8f15c6e8ba8e061ac5314d6ca875a0515d39daddce6d548a64e24052c3dfb6322ada23620c0a351fe1c7b5dd26f647a10fb' - '0d79826b79f791af185d723af8c18cc58e7092968dadac5e304ecdd40683972fd1b9c9130765d7852fb0c9ff10cd53535196b6310d25226bde5fb5ec437bbc3b' - '77ed5c037fd27489415f228219e3b291c655c8ba49745b04c554739ffbc40df685cca8bb5e9a12e6eda083b7f7ef74d1a3307ecc4180bec0ba422d957e10baad' - '370014469fd04db4f00eefa1b9e415458131fdd3f8915b169cba4207a79ed20631e9e5d54f103adba64e0b932b9b34bfc825cc72cde76becddc4a8dbac772380' - 'e6c765a12435e974f2490971178b22c8b28be24613647f8ebae408c7a7a042c7a22ee5dc4fc0344fce88b2d158a5e8e37c4939a2f605e712fa1fd6ba74f66833' - '782e98da0d0082c2c99de7c8ef5454e9a1d8e155b0c620b7a8d3ea4f9694035b475abb969fcdaf446edb2b61a6536be98f2dbde15f7d60f52bbf117222a42707' - '094eb59f297cc8bea3f8f7373269a3753d2fbf2b43daa4a20483513349dae0547a3b5eb72d32d8ab81e459baa29382dd9edfdaad487786522050568b75bd7fd7' - 'd0463bca298b27c844efed93685c32e43d153ad46bde63180e8075246549083b83d6c81c79c217453ad000834e56aa471fbbf9cb92ecca6b988730ce173d3ec9' - '91f858ea5e7d8257392ffe5bb6e2433ed22f715767f412b2f73bf18569e2b4c8336e4406ac816f0c2eb306bf4014782a2a60760a87e9ad7fd325d57b49245220' - '8e962879988445ce30f47a587903f33b878206f0f0cb727c2f1610b5fa3832004f2438a28356c768a8b417638db0f394fb85352e38e7e8bbc74dd1b8f69fbd1f' - '4ea5e17df4cb11ace456be0244768206a645e40427ea1730d61d263b0f84d86f889d1b4396d568341c0329492ce93fcffa2511f1aed280b99305440f767189da' - '5c3ce23c42e76237a5e218b545187d91cbed46e24be8f5220802b49c3042d2c385442acbd52ecd42fb956e7edca8ecd53f3366eb33dcca5af1b7b55d60c6abec' - 'ff837a7a966bb6a5cc31fc12866c3e7d9b8b66b6d1082b59a6cb18ec7081999516157599160754dcd9435cc7925e099ad9011096792531aab641c029dfc08ced' - 'd1272b76986cd760ffbe1fc2f90897546ef65987702dfc8f15d97ea2135c3a599b9fc7e5ed607d10dc6154acbc4b6b0ab14b56ebf51ceb1af7003163b73e71d7') + # "${_patchsource}/fixes-miscellaneous/0001-fixes-miscellaneous.patch" + # "${_patchsource}/bbr2-patches-v2/0001-bbr2-5.12-introduce-BBRv2.patch" + # "${_patchsource}/btrfs-patches-v8/0001-btrfs-patches.patch" + # "${_patchsource}/android-patches/0001-android-export-symbold-and-enable-building-ashmem-an.patch" + # "${_patchsource}/pf-patches-v2/0001-pf-patches.patch" + "${_patchsource}/lru-gen/PATCH-v3-00-14-Multigenerational-LRU-Framework.patch" + # "${_patchsource}/ntfs3-patches-v2/0001-ntfs3-patches.patch" + # "${_patchsource}/zstd-dev-patches-v3/0001-zstd-dev-patches.patch" + # "${_patchsource}/clearlinux-patches-v3/0001-clearlinux-patches.patch" + # "${_patchsource}/initramfs-patches/0001-initramfs-patches.patch" + ) + +sha512sums=('e836fb1873adbdb434b142aa64323e0e5f7fe2bad6060edd42e5e7e6c82ea821105e2eb50a9cb578ff7028d87c07948383fc01b8fff70978fbf08d14bb7dc37c' + '13e846acdb24a19e1834b62e81b144469ccfdb86cf37cb10febfaaf5052ba97db3f299feec50c935c8cb92f009ce2a40f482f3f9e54d5ccad171eb1f79402f81' + 'f07743a59c992f7a48cd1604a0ed30663fe043f5bc93dfe54780da88421c920e7daf801fa345b475ab551f7855360a72774cd2b117e41d5a4ac35005250e3c2f' + '0ca83b1c2d97dfa6f6498694266d3785e67d877a7b5abe66505f96b8f31cb62d93e719212d19bfef522826166f8c00719cfec442a128ca0d261761a75d334ea6' + '60bda2070739a52af4f81816ebda8f3520a8d75ea5e00f65a903a3416ae31edba56fe151f6a9e02dc90ec3be7854e9a62e10e72120d7148fd3838806d8b9e986' + '47f265716ebd268e4296aaba1efe5098df00736b69ec7d0413cace6dbb5cb162c1c952f7527a2a41b246ed76e6e112514c5349e8dc52f4609def30257e18d7aa' + '341492bf6b899a8fb4a0ef375e5461ec6e49c96755c10dd85d36b3b35a62d4e15a8b2df14aecc6bcc13485a16ad21a360050a091cf69b5aa4fc84a74dee34020') export KBUILD_BUILD_HOST=archlinux export KBUILD_BUILD_USER=$pkgbase @@ -166,118 +147,172 @@ prepare() { fi fi - source "${startdir}"/cacule_config - - configure + source "${startdir}"/configure cpu_arch - ### Optionally set tickrate to 1000 - if [ -n "$_1k_HZ_ticks" ]; then - echo "Setting tick rate to 1k..." - scripts/config --disable CONFIG_HZ_300 - scripts/config --enable CONFIG_HZ_1000 - scripts/config --set-val CONFIG_HZ 1000 - fi - - ### Optionally set tickrate to 750HZ - if [ -n "$_750_HZ_ticks" ]; then - echo "Setting tick rate to 1k..." - scripts/config --disable CONFIG_HZ_300 - scripts/config --enable CONFIG_HZ_750 - scripts/config --set-val CONFIG_HZ 750 - fi - - ### Optionally set tickrate to 500HZ + ### Optionally set tickrate to 2000HZ + if [ -n "$_2k_HZ_ticks" ]; then + echo "Setting tick rate to 2k..." + scripts/config --disable CONFIG_HZ_300 + scripts/config --enable CONFIG_HZ_2000 + scripts/config --set-val CONFIG_HZ 2000 + fi + +### Optionally set tickrate to 1000 + if [ -n "$_1k_HZ_ticks" ]; then + echo "Setting tick rate to 1k..." + scripts/config --disable CONFIG_HZ_300 + scripts/config --enable CONFIG_HZ_1000 + scripts/config --set-val CONFIG_HZ 1000 + fi + +### Optionally set tickrate to 500HZ if [ -n "$_500_HZ_ticks" ]; then - echo "Setting tick rate to 1k..." - scripts/config --disable CONFIG_HZ_300 - scripts/config --enable CONFIG_HZ_500 - scripts/config --set-val CONFIG_HZ 500 + echo "Setting tick rate to 500HZ..." + scripts/config --disable CONFIG_HZ_300 + scripts/config --enable CONFIG_HZ_500 + scripts/config --set-val CONFIG_HZ 500 fi - ### Optionally disable NUMA for 64-bit kernels only - # (x86 kernels do not support NUMA) - if [ -n "$_NUMAdisable" ]; then - echo "Disabling NUMA from kernel config..." - scripts/config --disable CONFIG_NUMA - fi +### Optionally disable NUMA for 64-bit kernels only + # (x86 kernels do not support NUMA) + if [ -n "$_NUMAdisable" ]; then + echo "Disabling NUMA from kernel config..." + scripts/config --disable CONFIG_NUMA + fi - if [ -n "$_fsync" ]; then - echo "Enable Fsync support" - scripts/config --enable CONFIG_FUTEX - scripts/config --enable CONFIG_FUTEX_PI - fi + if [ -n "$_fsync" ]; then + echo "Enable Fsync support" + scripts/config --enable CONFIG_FUTEX + scripts/config --enable CONFIG_FUTEX_PI + fi - if [ -n "$_futex2" ]; then - echo "Enable Futex2 support" - scripts/config --enable CONFIG_FUTEX2 - fi + if [ -n "$_futex2" ]; then + echo "Enable Futex2 support" + scripts/config --enable CONFIG_FUTEX2 + fi - if [ -n "$_winesync" ]; then - echo "Enable winesync support" - scripts/config --module CONFIG_WINESYNC - fi + if [ -n "$_winesync" ]; then + echo "Enable winesync support" + scripts/config --module CONFIG_WINESYNC + fi - ### Enable protect file mappings under memory pressure - if [ -n "$_mm_protect" ]; then - echo "Enabling protect file mappings under memory pressure..." - scripts/config --enable CONFIG_UNEVICTABLE_FILE - scripts/config --set-val CONFIG_UNEVICTABLE_FILE_KBYTES_LOW 262144 - scripts/config --set-val CONFIG_UNEVICTABLE_FILE_KBYTES_MIN 131072 - fi - - ### Set performance governor - if [ -n "$_per_gov" ]; then - echo "Setting performance governor..." - scripts/config --disable CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL - scripts/config --enable CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE - echo "Disabling uneeded governors..." - scripts/config --disable CONFIG_CPU_FREQ_GOV_ONDEMAND - scripts/config --disable CONFIG_CPU_FREQ_GOV_CONSERVATIVE - scripts/config --disable CONFIG_CPU_FREQ_GOV_USERSPACE - scripts/config --disable CONFIG_CPU_FREQ_GOV_SCHEDUTIL - fi - - ### Disable Deadline I/O scheduler - if [ -n "$_deadline_disable" ]; then - echo "Disabling Deadline I/O scheduler..." - scripts/config --disable CONFIG_MQ_IOSCHED_DEADLINE - fi - - ### Disable Kyber I/O scheduler - if [ -n "$_kyber_disable" ]; then - echo "Disabling Kyber I/O scheduler..." - scripts/config --disable CONFIG_MQ_IOSCHED_KYBER - 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 +### Set performance governor + if [ -n "$_per_gov" ]; then + echo "Setting performance governor..." + scripts/config --disable CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL + scripts/config --enable CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE + echo "Disabling uneeded governors..." + scripts/config --enable CONFIG_CPU_FREQ_GOV_ONDEMAND + scripts/config --disable CONFIG_CPU_FREQ_GOV_CONSERVATIVE + scripts/config --disable CONFIG_CPU_FREQ_GOV_USERSPACE + scripts/config --disable CONFIG_CPU_FREQ_GOV_SCHEDUTIL + fi - ### Running make nconfig - [[ -z "$_makenconfig" ]] || make nconfig +### Disable Deadline I/O scheduler + if [ -n "$_deadline_disable" ]; then + echo "Disabling Deadline I/O scheduler..." + scripts/config --disable CONFIG_MQ_IOSCHED_DEADLINE + fi - ### Running make menuconfig - [[ -z "$_makemenuconfig" ]] || make menuconfig +### Disable Kyber I/O scheduler + if [ -n "$_kyber_disable" ]; then + echo "Disabling Kyber I/O scheduler..." + scripts/config --disable CONFIG_MQ_IOSCHED_KYBER + fi - ### Running make xconfig - [[ -z "$_makexconfig" ]] || make xconfig + ### Enable protect file mappings under memory pressure + + echo "Enabling protect file mappings under memory pressure..." + scripts/config --enable CONFIG_UNEVICTABLE_FILE + scripts/config --set-val CONFIG_UNEVICTABLE_FILE_KBYTES_LOW 262144 + scripts/config --set-val CONFIG_UNEVICTABLE_FILE_KBYTES_MIN 131072 + + ### Enable multigenerational LRU + + echo "Enabling multigenerational LRU..." + scripts/config --enable CONFIG_HAVE_ARCH_PARENT_PMD_YOUNG + scripts/config --enable CONFIG_LRU_GEN + scripts/config --set-val CONFIG_NR_LRU_GENS 7 + scripts/config --set-val CONFIG_TIERS_PER_GEN 4 + scripts/config --enable CONFIG_LRU_GEN_ENABLED + scripts/config --disable CONFIG_LRU_GEN_STATS + +### Enabling ZSTD COMPRESSION ## + echo "Set module compression to ZSTD" + scripts/config --enable CONFIG_MODULE_COMPRESS + # scripts/config --disable CONFIG_MODULE_COMPRESS_XZ + scripts/config --enable CONFIG_MODULE_COMPRESS_ZSTD + scripts/config --set-val CONFIG_MODULE_COMPRESS_ZSTD_LEVEL 19 + scripts/config --disable CONFIG_KERNEL_ZSTD_LEVEL_ULTRA + +### Enabling Cacule-Config ## + echo "Enable CacULE CPU scheduler..." + scripts/config --enable CONFIG_CACULE_SCHED + scripts/config --enable CONFIG_FAIR_GROUP_SCHED + scripts/config --enable CONFIG_SCHED_AUTOGROUP + scripts/config --disable CONFIG_EXPERT + scripts/config --disable CONFIG_SCHED_DEBUG + scripts/config --disable CONFIG_SCHED_INFO + scripts/config --disable CONFIG_SCHEDSTATS + scripts/config --disable CONFIG_DEBUG_KERNEL + scripts/config --enable CONFIG_NO_HZ + scripts/config --enable CONFIG_NO_HZ_COMMON + echo "Enabling KBUILD_CFLAGS -O3..." + scripts/config --disable CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE + scripts/config --enable CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 + echo "Enable PREEMPT" + scripts/config --disable CONFIG_PREEMPT_NONE + scripts/config --disable CONFIG_PREEMPT_VOLUNTARY + scripts/config --enable CONFIG_PREEMPT + scripts/config --enable CONFIG_PREEMPT_COUNT + scripts/config --enable CONFIG_PREEMPTION + echo "Enable NTFS3" + scripts/config --module CONFIG_NTFS_FS + scripts/config --enable CONFIG_NTFS_RW + scripts/config --enable CONFIG_NTFS_DEBUG + scripts/config --module CONFIG_NTFS3_FS + scripts/config --enable CONFIG_NTFS3_64BIT_CLUSTER + scripts/config --enable CONFIG_NTFS3_LZX_XPRESS + scripts/config --enable CONFIG_NTFS3_FS_POSIX_ACL +### Enable ANBOX + echo "Enable Anbox" + scripts/config --module CONFIG_ASHMEM + scripts/config --enable CONFIG_ANDROID_BINDER_IPC_SELFTEST + scripts/config --enable CONFIG_ANDROID + scripts/config --enable CONFIG_ANDROID_BINDER_IPC + scripts/config --enable CONFIG_ANDROID_BINDERFS + scripts/config --set-str CONFIG_ANDROID_BINDER_DEVICES binder,hwbinder,vndbinder + echo "Disabling TCP_CONG_CUBIC..." + scripts/config --module CONFIG_TCP_CONG_CUBIC + scripts/config --disable CONFIG_DEFAULT_CUBIC + echo "Enabling TCP_CONG_BBR2..." + scripts/config --enable CONFIG_TCP_CONG_BBR2 + scripts/config --enable CONFIG_DEFAULT_BBR2 + scripts/config --set-str CONFIG_DEFAULT_TCP_CONG bbr2 + echo "Enable CONFIG_VHBA" + scripts/config --module CONFIG_VHBA + scripts/config --disable CONFIG_BPF_PRELOAD + + + +### 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 - ### Running make gconfig - [[ -z "$_makegconfig" ]] || make gconfig +### Save configuration for later reuse + echo "Save config for reuse" + cat .config > "${startdir}/config.last" - ### Save configuration for later reuse - cat .config > "${startdir}/config.last" } build() { |