diff options
Diffstat (limited to 'SOURCES/tkg.patch')
-rw-r--r-- | SOURCES/tkg.patch | 888 |
1 files changed, 281 insertions, 607 deletions
diff --git a/SOURCES/tkg.patch b/SOURCES/tkg.patch index aeffc95..f29c409 100644 --- a/SOURCES/tkg.patch +++ b/SOURCES/tkg.patch @@ -1,357 +1,64 @@ -From c304f43d14e98d4bf1215fc10bc5012f554bdd8a Mon Sep 17 00:00:00 2001 -From: Alexandre Frade <admfrade@gmail.com> -Date: Mon, 29 Jan 2018 16:59:22 +0000 -Subject: [PATCH 02/17] dcache: cache_pressure = 50 decreases the rate at which - VFS caches are reclaimed +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jan200101 <sentrycraft123@gmail.com> +Date: Tue, 6 Aug 2024 19:20:54 +0200 +Subject: [PATCH] tkg glitched base -Signed-off-by: Alexandre Frade <admfrade@gmail.com> +Signed-off-by: Jan200101 <sentrycraft123@gmail.com> --- - fs/dcache.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + .../admin-guide/kernel-parameters.txt | 3 ++ + Makefile | 3 ++ + block/elevator.c | 6 ++-- + drivers/cpufreq/intel_pstate.c | 2 ++ + drivers/infiniband/core/addr.c | 1 + + drivers/input/evdev.c | 19 ++++++----- + drivers/md/dm-crypt.c | 5 +++ + fs/dcache.c | 2 +- + include/linux/mm.h | 3 +- + include/linux/pageblock-flags.h | 2 +- + include/linux/pagemap.h | 2 +- + init/Kconfig | 32 +++++++++++++++++++ + init/Makefile | 2 +- + kernel/sched/rt.c | 4 +-- + mm/huge_memory.c | 4 +++ + mm/page_alloc.c | 9 +++--- + net/ipv4/Kconfig | 4 +++ + net/sched/Kconfig | 4 +++ + scripts/setlocalversion | 14 ++++---- + 19 files changed, 91 insertions(+), 30 deletions(-) -diff --git a/fs/dcache.c b/fs/dcache.c -index 361ea7ab30ea..0c5cf69b241a 100644 ---- a/fs/dcache.c -+++ b/fs/dcache.c -@@ -71,7 +71,7 @@ - * If no ancestor relationship: - * arbitrary, since it's serialized on rename_lock - */ --int sysctl_vfs_cache_pressure __read_mostly = 100; -+int sysctl_vfs_cache_pressure __read_mostly = 50; - EXPORT_SYMBOL_GPL(sysctl_vfs_cache_pressure); - - __cacheline_aligned_in_smp DEFINE_SEQLOCK(rename_lock); --- -2.28.0 - - -diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c -index f788cd61df21..2bfbb4213707 100644 ---- a/kernel/sched/rt.c -+++ b/kernel/sched/rt.c -@@ -22,7 +22,7 @@ - * part of the period that we allow rt tasks to run in us. - * default: 0.95s - */ --int sysctl_sched_rt_runtime = 950000; -+int sysctl_sched_rt_runtime = 980000; - - #ifdef CONFIG_SYSCTL - static int sysctl_sched_rr_timeslice = (MSEC_PER_SEC * RR_TIMESLICE) / HZ; --- -2.28.0 - - -From acc49f33a10f61dc66c423888cbb883ba46710e4 Mon Sep 17 00:00:00 2001 -From: Alexandre Frade <admfrade@gmail.com> -Date: Mon, 29 Jan 2018 17:41:29 +0000 -Subject: [PATCH 04/17] scripts: disable the localversion "+" tag of a git repo - -Signed-off-by: Alexandre Frade <admfrade@gmail.com> ---- - scripts/setlocalversion | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/scripts/setlocalversion b/scripts/setlocalversion -index 20f2efd57b11..0552d8b9f582 100755 ---- a/scripts/setlocalversion -+++ b/scripts/setlocalversion -@@ -54,7 +54,7 @@ scm_version() - # If only the short version is requested, don't bother - # running further git commands - if $short; then -- echo "+" -+ #echo "+" - return - fi - # If we are past the tagged commit, we pretty print it. --- -2.28.0 - - -From 360c6833e07cc9fdef5746f6bc45bdbc7212288d Mon Sep 17 00:00:00 2001 -From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> -Date: Fri, 26 Oct 2018 11:22:33 +0100 -Subject: [PATCH 06/17] infiniband: Fix __read_overflow2 error with -O3 - inlining - ---- - drivers/infiniband/core/addr.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c -index 3a98439bba83..6efc4f907f58 100644 ---- a/drivers/infiniband/core/addr.c -+++ b/drivers/infiniband/core/addr.c -@@ -820,6 +820,7 @@ int rdma_addr_find_l2_eth_by_grh(const union ib_gid *sgid, - union { - struct sockaddr_in _sockaddr_in; - struct sockaddr_in6 _sockaddr_in6; -+ struct sockaddr_ib _sockaddr_ib; - } sgid_addr, dgid_addr; - int ret; - --- -2.28.0 - - -From f85ed068b4d0e6c31edce8574a95757a60e58b87 Mon Sep 17 00:00:00 2001 -From: Etienne Juvigny <Ti3noU@gmail.com> -Date: Mon, 3 Sep 2018 17:36:25 +0200 -Subject: [PATCH 07/17] Add Zenify option - ---- - init/Kconfig | 32 ++++++++++++++++++++++++++++++++ - 1 file changed, 32 insertions(+) - -diff --git a/init/Kconfig b/init/Kconfig -index 3ae8678e1145..da708eed0f1e 100644 ---- a/init/Kconfig -+++ b/init/Kconfig -@@ -92,6 +92,38 @@ config THREAD_INFO_IN_TASK - - menu "General setup" - -+config ZENIFY -+ bool "A selection of patches from Zen/Liquorix kernel and additional tweaks for a better gaming experience" -+ default y -+ help -+ Tunes the kernel for responsiveness at the cost of throughput and power usage. -+ -+ --- Virtual Memory Subsystem --------------------------- -+ -+ Mem dirty before bg writeback..: 10 % -> 20 % -+ Mem dirty before sync writeback: 20 % -> 50 % -+ -+ --- Block Layer ---------------------------------------- -+ -+ Queue depth...............: 128 -> 512 -+ Default MQ scheduler......: mq-deadline -> bfq -+ -+ --- CFS CPU Scheduler ---------------------------------- -+ -+ Scheduling latency.............: 6 -> 3 ms -+ Minimal granularity............: 0.75 -> 0.3 ms -+ Wakeup granularity.............: 1 -> 0.5 ms -+ CPU migration cost.............: 0.5 -> 0.25 ms -+ Bandwidth slice size...........: 5 -> 3 ms -+ Ondemand fine upscaling limit..: 95 % -> 85 % -+ -+ --- MuQSS CPU Scheduler -------------------------------- -+ -+ Scheduling interval............: 6 -> 3 ms -+ ISO task max realtime use......: 70 % -> 25 % -+ Ondemand coarse upscaling limit: 80 % -> 45 % -+ Ondemand fine upscaling limit..: 95 % -> 45 % -+ - config BROKEN - bool - --- -2.28.0 - - -From e92e67143385cf285851e12aa8b7f083dd38dd24 Mon Sep 17 00:00:00 2001 -From: Steven Barrett <damentz@liquorix.net> -Date: Sun, 16 Jan 2011 18:57:32 -0600 -Subject: [PATCH 08/17] ZEN: Allow TCP YeAH as default congestion control - -4.4: In my tests YeAH dramatically slowed down transfers over a WLAN, - reducing throughput from ~65Mbps (CUBIC) to ~7MBps (YeAH) over 10 - seconds (netperf TCP_STREAM) including long stalls. - - Be careful when choosing this. ~heftig ---- - net/ipv4/Kconfig | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig -index e64e59b536d3..bfb55ef7ebbe 100644 ---- a/net/ipv4/Kconfig -+++ b/net/ipv4/Kconfig -@@ -691,6 +691,9 @@ choice - config DEFAULT_VEGAS - bool "Vegas" if TCP_CONG_VEGAS=y - -+ config DEFAULT_YEAH -+ bool "YeAH" if TCP_CONG_YEAH=y -+ - config DEFAULT_VENO - bool "Veno" if TCP_CONG_VENO=y - -@@ -724,6 +727,7 @@ config DEFAULT_TCP_CONG - default "htcp" if DEFAULT_HTCP - default "hybla" if DEFAULT_HYBLA - default "vegas" if DEFAULT_VEGAS -+ default "yeah" if DEFAULT_YEAH - default "westwood" if DEFAULT_WESTWOOD - default "veno" if DEFAULT_VENO - default "reno" if DEFAULT_RENO --- -2.28.0 - - -From 76dbe7477bfde1b5e8bf29a71b5af7ab2be9b98e Mon Sep 17 00:00:00 2001 -From: Steven Barrett <steven@liquorix.net> -Date: Wed, 28 Nov 2018 19:01:27 -0600 -Subject: [PATCH 09/17] zen: Use [defer+madvise] as default khugepaged defrag - strategy - -For some reason, the default strategy to respond to THP fault fallbacks -is still just madvise, meaning stall if the program wants transparent -hugepages, but don't trigger a background reclaim / compaction if THP -begins to fail allocations. This creates a snowball affect where we -still use the THP code paths, but we almost always fail once a system -has been active and busy for a while. - -The option "defer" was created for interactive systems where THP can -still improve performance. If we have to fallback to a regular page due -to an allocation failure or anything else, we will trigger a background -reclaim and compaction so future THP attempts succeed and previous -attempts eventually have their smaller pages combined without stalling -running applications. - -We still want madvise to stall applications that explicitely want THP, -so defer+madvise _does_ make a ton of sense. Make it the default for -interactive systems, especially if the kernel maintainer left -transparent hugepages on "always". - -Reasoning and details in the original patch: https://lwn.net/Articles/711248/ ---- - mm/huge_memory.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/mm/huge_memory.c b/mm/huge_memory.c -index 74300e337c3c..9277f22c10a7 100644 ---- a/mm/huge_memory.c -+++ b/mm/huge_memory.c -@@ -53,7 +53,11 @@ unsigned long transparent_hugepage_flags __read_mostly = - #ifdef CONFIG_TRANSPARENT_HUGEPAGE_MADVISE - (1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)| - #endif -+#ifdef CONFIG_ZENIFY -+ (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG)| -+#else - (1<<TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG)| -+#endif - (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG)| - (1<<TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG); - --- -2.28.0 - - -From 2b65a1329cb220b43c19c4d0de5833fae9e2b22d Mon Sep 17 00:00:00 2001 -From: Alexandre Frade <admfrade@gmail.com> -Date: Wed, 24 Oct 2018 16:58:52 -0300 -Subject: [PATCH 10/17] net/sched: allow configuring cake qdisc as default - -Signed-off-by: Alexandre Frade <admfrade@gmail.com> ---- - net/sched/Kconfig | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/net/sched/Kconfig b/net/sched/Kconfig -index 84badf00647e..6a922bca9f39 100644 ---- a/net/sched/Kconfig -+++ b/net/sched/Kconfig -@@ -471,6 +471,9 @@ choice - config DEFAULT_SFQ - bool "Stochastic Fair Queue" if NET_SCH_SFQ +diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt +index 2569e7f19b47..5b79a61afd6d 100644 +--- a/Documentation/admin-guide/kernel-parameters.txt ++++ b/Documentation/admin-guide/kernel-parameters.txt +@@ -355,6 +355,9 @@ + disable + Do not enable amd_pstate as the default + scaling driver for the supported processors ++ enable ++ Enable intel_pstate in-case "disable" was passed ++ previously in the kernel boot parameters + passive + Use amd_pstate with passive mode as a scaling driver. + In this mode autonomous selection is disabled. +diff --git a/Makefile b/Makefile +index c0af6d8aeb05..94d76f300914 100644 +--- a/Makefile ++++ b/Makefile +@@ -999,6 +999,9 @@ KBUILD_CFLAGS += $(call cc-option, -fstrict-flex-arrays=3) + KBUILD_CFLAGS-$(CONFIG_CC_NO_STRINGOP_OVERFLOW) += $(call cc-option, -Wno-stringop-overflow) + KBUILD_CFLAGS-$(CONFIG_CC_STRINGOP_OVERFLOW) += $(call cc-option, -Wstringop-overflow) -+ config DEFAULT_CAKE -+ bool "Common Applications Kept Enhanced" if NET_SCH_CAKE ++# disable GCC vectorization on trees ++KBUILD_CFLAGS += $(call cc-option, -fno-tree-vectorize) + - config DEFAULT_PFIFO_FAST - bool "Priority FIFO Fast" - endchoice -@@ -453,6 +453,7 @@ - default "fq_codel" if DEFAULT_FQ_CODEL - default "fq_pie" if DEFAULT_FQ_PIE - default "sfq" if DEFAULT_SFQ -+ default "cake" if DEFAULT_CAKE - default "pfifo_fast" - endif - --- -2.28.0 - - -From 90240bcd90a568878738e66c0d45bed3e38e347b Mon Sep 17 00:00:00 2001 -From: Tk-Glitch <ti3nou@gmail.com> -Date: Fri, 19 Apr 2019 12:33:38 +0200 -Subject: [PATCH 12/17] Set vm.max_map_count to 262144 by default - -The value is still pretty low, and AMD64-ABI and ELF extended numbering -supports that, so we should be fine on modern x86 systems. - -This fixes crashes in some applications using more than 65535 vmas (also -affects some windows games running in wine, such as Star Citizen). ---- - include/linux/mm.h | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/include/linux/mm.h b/include/linux/mm.h -index bc05c3588aa3..b0cefe94920d 100644 ---- a/include/linux/mm.h -+++ b/include/linux/mm.h -@@ -190,8 +190,7 @@ static inline void __mm_zero_struct_page(struct page *page) - * not a hard limit any more. Although some userspace tools can be surprised by - * that. - */ --#define MAPCOUNT_ELF_CORE_MARGIN (5) --#define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN) -+#define DEFAULT_MAX_MAP_COUNT (262144) - - extern int sysctl_max_map_count; - --- -2.28.0 - - -From 3a34034dba5efe91bcec491efe8c66e8087f509b Mon Sep 17 00:00:00 2001 -From: Tk-Glitch <ti3nou@gmail.com> -Date: Mon, 27 Jul 2020 00:19:18 +0200 -Subject: [PATCH 13/17] mm: bump DEFAULT_MAX_MAP_COUNT - -Some games such as Detroit: Become Human tend to be very crash prone with -lower values. ---- - include/linux/mm.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/linux/mm.h b/include/linux/mm.h -index b0cefe94920d..890165099b07 100644 ---- a/include/linux/mm.h -+++ b/include/linux/mm.h -@@ -190,7 +190,7 @@ static inline void __mm_zero_struct_page(struct page *page) - * not a hard limit any more. Although some userspace tools can be surprised by - * that. - */ --#define DEFAULT_MAX_MAP_COUNT (262144) -+#define DEFAULT_MAX_MAP_COUNT (16777216) - - extern int sysctl_max_map_count; + # disable invalid "can't wrap" optimizations for signed / pointers + KBUILD_CFLAGS += -fno-strict-overflow --- -2.28.0 - -From 977812938da7c7226415778c340832141d9278b7 Mon Sep 17 00:00:00 2001 -From: Alexandre Frade <admfrade@gmail.com> -Date: Mon, 25 Nov 2019 15:13:06 -0300 -Subject: [PATCH 14/17] elevator: set default scheduler to bfq for blk-mq - -Signed-off-by: Alexandre Frade <admfrade@gmail.com> ---- - block/elevator.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - diff --git a/block/elevator.c b/block/elevator.c -index 4eab3d70e880..79669aa39d79 100644 +index f64ebd726e58..73227b97162b 100644 --- a/block/elevator.c +++ b/block/elevator.c -@@ -623,19 +623,19 @@ static inline bool elv_support_iosched(struct request_queue *q) +@@ -557,8 +557,8 @@ static inline bool elv_support_iosched(struct request_queue *q) } /* @@ -362,10 +69,7 @@ index 4eab3d70e880..79669aa39d79 100644 */ static struct elevator_type *elevator_get_default(struct request_queue *q) { - if (q->tag_set && q->tag_set->flags & BLK_MQ_F_NO_SCHED_BY_DEFAULT) - return NULL; - - if (q->nr_hw_queues != 1 && +@@ -569,7 +569,7 @@ static struct elevator_type *elevator_get_default(struct request_queue *q) !blk_mq_is_shared_tags(q->tag_set->flags)) return NULL; @@ -374,86 +78,11 @@ index 4eab3d70e880..79669aa39d79 100644 } /* --- -2.28.0 - -From 3c229f434aca65c4ca61772bc03c3e0370817b92 Mon Sep 17 00:00:00 2001 -From: Alexandre Frade <kernel@xanmod.org> -Date: Mon, 3 Aug 2020 17:05:04 +0000 -Subject: [PATCH 16/17] mm: set 2 megabytes for address_space-level file - read-ahead pages size - -Signed-off-by: Alexandre Frade <kernel@xanmod.org> ---- - include/linux/pagemap.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h -index cf2468da68e9..007dea784451 100644 ---- a/include/linux/pagemap.h -+++ b/include/linux/pagemap.h -@@ -1181,7 +1181,7 @@ - ._index = i, \ - } - --#define VM_READAHEAD_PAGES (SZ_128K / PAGE_SIZE) -+#define VM_READAHEAD_PAGES (SZ_2M / PAGE_SIZE) - - void page_cache_ra_unbounded(struct readahead_control *, - unsigned long nr_to_read, unsigned long lookahead_count); --- -2.28.0 - - -From 716f41cf6631f3a85834dcb67b4ce99185b6387f Mon Sep 17 00:00:00 2001 -From: Steven Barrett <steven@liquorix.net> -Date: Wed, 15 Jan 2020 20:43:56 -0600 -Subject: [PATCH 17/17] ZEN: intel-pstate: Implement "enable" parameter - -If intel-pstate is compiled into the kernel, it will preempt the loading -of acpi-cpufreq so you can take advantage of hardware p-states without -any friction. - -However, intel-pstate is not completely superior to cpufreq's ondemand -for one reason. There's no concept of an up_threshold property. - -In ondemand, up_threshold essentially reduces the maximum utilization to -compare against, allowing you to hit max frequencies and turbo boost -from a much lower core utilization. - -With intel-pstate, you have the concept of minimum and maximum -performance, but no tunable that lets you define, maximum frequency -means 50% core utilization. For just this oversight, there's reasons -you may want ondemand. - -Lets support setting "enable" in kernel boot parameters. This lets -kernel maintainers include "intel_pstate=disable" statically in the -static boot parameters, but let users of the kernel override this -selection. ---- - Documentation/admin-guide/kernel-parameters.txt | 3 +++ - drivers/cpufreq/intel_pstate.c | 2 ++ - 2 files changed, 5 insertions(+) - -diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index fb95fad81c79..3e92fee81e33 100644 ---- a/Documentation/admin-guide/kernel-parameters.txt -+++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -2133,6 +2133,9 @@ - disable - Do not enable intel_pstate as the default - scaling driver for the supported processors -+ enable -+ Enable intel_pstate in-case "disable" was passed -+ previously in the kernel boot parameters - active - Use intel_pstate driver to bypass the scaling - governors layer of cpufreq and provides it own diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c -index 36a469150ff9..aee891c9b78a 100644 +index c31914a9876f..d6ed90b3c930 100644 --- a/drivers/cpufreq/intel_pstate.c +++ b/drivers/cpufreq/intel_pstate.c -@@ -3533,6 +3533,8 @@ +@@ -3558,6 +3558,8 @@ static int __init intel_pstate_setup(char *str) if (!strcmp(str, "no_hwp")) no_hwp = 1; @@ -462,54 +91,20 @@ index 36a469150ff9..aee891c9b78a 100644 if (!strcmp(str, "force")) force_load = 1; if (!strcmp(str, "hwp_only")) --- -2.28.0 - -From 379cbab18b5c75c622b93e2c5abdfac141fe9654 Mon Sep 17 00:00:00 2001 -From: Kenny Levinsen <kl@kl.wtf> -Date: Sun, 27 Dec 2020 14:43:13 +0000 -Subject: [PATCH] ZEN: Input: evdev - use call_rcu when detaching client - -Significant time was spent on synchronize_rcu in evdev_detach_client -when applications closed evdev devices. Switching VT away from a -graphical environment commonly leads to mass input device closures, -which could lead to noticable delays on systems with many input devices. - -Replace synchronize_rcu with call_rcu, deferring reclaim of the evdev -client struct till after the RCU grace period instead of blocking the -calling application. - -While this does not solve all slow evdev fd closures, it takes care of a -good portion of them, including this simple test: - - #include <fcntl.h> - #include <unistd.h> - - int main(int argc, char *argv[]) - { - int idx, fd; - const char *path = "/dev/input/event0"; - for (idx = 0; idx < 1000; idx++) { - if ((fd = open(path, O_RDWR)) == -1) { - return -1; - } - close(fd); - } - return 0; - } - -Time to completion of above test when run locally: - - Before: 0m27.111s - After: 0m0.018s - -Signed-off-by: Kenny Levinsen <kl@kl.wtf> ---- - drivers/input/evdev.c | 19 +++++++++++-------- - 1 file changed, 11 insertions(+), 8 deletions(-) - +diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c +index be0743dac3ff..358eb15e1d69 100644 +--- a/drivers/infiniband/core/addr.c ++++ b/drivers/infiniband/core/addr.c +@@ -814,6 +814,7 @@ int rdma_addr_find_l2_eth_by_grh(const union ib_gid *sgid, + union { + struct sockaddr_in _sockaddr_in; + struct sockaddr_in6 _sockaddr_in6; ++ struct sockaddr_ib _sockaddr_ib; + } sgid_addr, dgid_addr; + int ret; + diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c -index 95f90699d2b17b..2b10fe29d2c8d9 100644 +index 51e0c4954600..35c3ad741870 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c @@ -46,6 +46,7 @@ struct evdev_client { @@ -523,7 +118,7 @@ index 95f90699d2b17b..2b10fe29d2c8d9 100644 @@ -377,13 +378,22 @@ static void evdev_attach_client(struct evdev *evdev, spin_unlock(&evdev->client_lock); } - + +static void evdev_reclaim_client(struct rcu_head *rp) +{ + struct evdev_client *client = container_of(rp, struct evdev_client, rcu); @@ -542,110 +137,198 @@ index 95f90699d2b17b..2b10fe29d2c8d9 100644 - synchronize_rcu(); + call_rcu(&client->rcu, evdev_reclaim_client); } - + static int evdev_open_device(struct evdev *evdev) @@ -436,7 +446,6 @@ static int evdev_release(struct inode *inode, struct file *file) { struct evdev_client *client = file->private_data; struct evdev *evdev = client->evdev; - unsigned int i; - + mutex_lock(&evdev->mutex); - + @@ -448,11 +457,6 @@ static int evdev_release(struct inode *inode, struct file *file) - + evdev_detach_client(evdev, client); - + - for (i = 0; i < EV_CNT; ++i) - bitmap_free(client->evmasks[i]); - - kvfree(client); - evdev_close_device(evdev); - + return 0; @@ -495,7 +499,6 @@ static int evdev_open(struct inode *inode, struct file *file) - + err_free_client: evdev_detach_client(evdev, client); - kvfree(client); return error; } - - -From 2aafb56f20e4b63d8c4af172fe9d017c64bc4129 Mon Sep 17 00:00:00 2001 -From: Sultan Alsawaf <sultan@kerneltoast.com> -Date: Wed, 20 Oct 2021 20:50:11 -0700 -Subject: [PATCH] ZEN: mm: Lower the non-hugetlbpage pageblock size to reduce - scheduling delays - -The page allocator processes free pages in groups of pageblocks, where -the size of a pageblock is typically quite large (1024 pages without -hugetlbpage support). Pageblocks are processed atomically with the zone -lock held, which can cause severe scheduling delays on both the CPU -going through the pageblock and any other CPUs waiting to acquire the -zone lock. A frequent offender is move_freepages_block(), which is used -by rmqueue() for page allocation. - -As it turns out, there's no requirement for pageblocks to be so large, -so the pageblock order can simply be reduced to ease the scheduling -delays and zone lock contention. PAGE_ALLOC_COSTLY_ORDER is used as a -reasonable setting to ensure non-costly page allocation requests can -still be serviced without always needing to free up more than one -pageblock's worth of pages at a time. - -This has a noticeable effect on overall system latency when memory -pressure is elevated. The various mm functions which operate on -pageblocks no longer appear in the preemptoff tracer, where previously -they would spend up to 100 ms on a mobile arm64 CPU processing a -pageblock with preemption disabled and the zone lock held. - -Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com> ---- - include/linux/pageblock-flags.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - + +diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c +index 1b7a97cc3779..bed9d9588b87 100644 +--- a/drivers/md/dm-crypt.c ++++ b/drivers/md/dm-crypt.c +@@ -3284,6 +3284,11 @@ static int crypt_ctr(struct dm_target *ti, unsigned int argc, char **argv) + goto bad; + } + ++#ifdef CONFIG_ZENIFY ++ set_bit(DM_CRYPT_NO_READ_WORKQUEUE, &cc->flags); ++ set_bit(DM_CRYPT_NO_WRITE_WORKQUEUE, &cc->flags); ++#endif ++ + ret = crypt_ctr_cipher(ti, argv[0], argv[1]); + if (ret < 0) + goto bad; +diff --git a/fs/dcache.c b/fs/dcache.c +index 4c144519aa70..fb0f9a1368c8 100644 +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -71,7 +71,7 @@ + * If no ancestor relationship: + * arbitrary, since it's serialized on rename_lock + */ +-int sysctl_vfs_cache_pressure __read_mostly = 100; ++int sysctl_vfs_cache_pressure __read_mostly = 50; + EXPORT_SYMBOL_GPL(sysctl_vfs_cache_pressure); + + __cacheline_aligned_in_smp DEFINE_SEQLOCK(rename_lock); +diff --git a/include/linux/mm.h b/include/linux/mm.h +index b58bad248eef..dbae141dc3ce 100644 +--- a/include/linux/mm.h ++++ b/include/linux/mm.h +@@ -192,8 +192,7 @@ static inline void __mm_zero_struct_page(struct page *page) + * not a hard limit any more. Although some userspace tools can be surprised by + * that. + */ +-#define MAPCOUNT_ELF_CORE_MARGIN (5) +-#define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN) ++#define DEFAULT_MAX_MAP_COUNT (16777216) + + extern int sysctl_max_map_count; + diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h -index 5f1ae07d724b88..97cda629c9e909 100644 +index 547e82cdc89a..67a999944cdb 100644 --- a/include/linux/pageblock-flags.h +++ b/include/linux/pageblock-flags.h -@@ -48,7 +48,7 @@ extern unsigned int pageblock_order; - #else /* CONFIG_HUGETLB_PAGE */ - +@@ -52,7 +52,7 @@ extern unsigned int pageblock_order; + #else /* CONFIG_TRANSPARENT_HUGEPAGE */ + /* If huge pages are not used, group by MAX_ORDER_NR_PAGES */ -#define pageblock_order MAX_PAGE_ORDER +#define pageblock_order PAGE_ALLOC_COSTLY_ORDER - + #endif /* CONFIG_HUGETLB_PAGE */ - - -From f22bc56be85e69c71c8e36041193856bb8b01525 Mon Sep 17 00:00:00 2001 -From: Sultan Alsawaf <sultan@kerneltoast.com> -Date: Wed, 20 Oct 2021 20:50:32 -0700 -Subject: [PATCH] ZEN: mm: Don't hog the CPU and zone lock in rmqueue_bulk() - -There is noticeable scheduling latency and heavy zone lock contention -stemming from rmqueue_bulk's single hold of the zone lock while doing -its work, as seen with the preemptoff tracer. There's no actual need for -rmqueue_bulk() to hold the zone lock the entire time; it only does so -for supposed efficiency. As such, we can relax the zone lock and even -reschedule when IRQs are enabled in order to keep the scheduling delays -and zone lock contention at bay. Forward progress is still guaranteed, -as the zone lock can only be relaxed after page removal. - -With this change, rmqueue_bulk() no longer appears as a serious offender -in the preemptoff tracer, and system latency is noticeably improved. - -Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com> ---- - mm/page_alloc.c | 23 ++++++++++++++++++----- - 1 file changed, 18 insertions(+), 5 deletions(-) - + +diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h +index a0a026d2d244..4d2e7d8512d1 100644 +--- a/include/linux/pagemap.h ++++ b/include/linux/pagemap.h +@@ -1281,7 +1281,7 @@ struct readahead_control { + ._index = i, \ + } + +-#define VM_READAHEAD_PAGES (SZ_128K / PAGE_SIZE) ++#define VM_READAHEAD_PAGES (SZ_2M / PAGE_SIZE) + + void page_cache_ra_unbounded(struct readahead_control *, + unsigned long nr_to_read, unsigned long lookahead_count); +diff --git a/init/Kconfig b/init/Kconfig +index febdea2afc3b..c8c6671c9549 100644 +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -132,6 +132,38 @@ config THREAD_INFO_IN_TASK + + menu "General setup" + ++config ZENIFY ++ bool "A selection of patches from Zen/Liquorix kernel and additional tweaks for a better gaming experience" ++ default y ++ help ++ Tunes the kernel for responsiveness at the cost of throughput and power usage. ++ ++ --- Virtual Memory Subsystem --------------------------- ++ ++ Mem dirty before bg writeback..: 10 % -> 20 % ++ Mem dirty before sync writeback: 20 % -> 50 % ++ ++ --- Block Layer ---------------------------------------- ++ ++ Queue depth...............: 128 -> 512 ++ Default MQ scheduler......: mq-deadline -> bfq ++ ++ --- CFS CPU Scheduler ---------------------------------- ++ ++ Scheduling latency.............: 6 -> 3 ms ++ Minimal granularity............: 0.75 -> 0.3 ms ++ Wakeup granularity.............: 1 -> 0.5 ms ++ CPU migration cost.............: 0.5 -> 0.25 ms ++ Bandwidth slice size...........: 5 -> 3 ms ++ Ondemand fine upscaling limit..: 95 % -> 85 % ++ ++ --- MuQSS CPU Scheduler -------------------------------- ++ ++ Scheduling interval............: 6 -> 3 ms ++ ISO task max realtime use......: 70 % -> 25 % ++ Ondemand coarse upscaling limit: 80 % -> 45 % ++ Ondemand fine upscaling limit..: 95 % -> 45 % ++ + config BROKEN + bool + +diff --git a/init/Makefile b/init/Makefile +index ab71cedc5fd6..eafc4ef50ab5 100644 +--- a/init/Makefile ++++ b/init/Makefile +@@ -33,7 +33,7 @@ build-timestamp = $(or $(KBUILD_BUILD_TIMESTAMP), $(build-timestamp-auto)) + + # Maximum length of UTS_VERSION is 64 chars + filechk_uts_version = \ +- utsver=$$(echo '$(pound)'"$(build-version)" $(smp-flag-y) $(preempt-flag-y) "$(build-timestamp)" | cut -b -64); \ ++ utsver=$$(echo '$(pound)'"$(build-version)" $(smp-flag-y) $(preempt-flag-y) "TKG" "$(build-timestamp)" | cut -b -64); \ + echo '$(pound)'define UTS_VERSION \""$${utsver}"\" + + # +diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c +index aa4c1c874fa4..cd58198e990f 100644 +--- a/kernel/sched/rt.c ++++ b/kernel/sched/rt.c +@@ -20,9 +20,9 @@ int sysctl_sched_rt_period = 1000000; + + /* + * part of the period that we allow rt tasks to run in us. +- * default: 0.95s ++ * XanMod default: 0.98s + */ +-int sysctl_sched_rt_runtime = 950000; ++int sysctl_sched_rt_runtime = 980000; + + #ifdef CONFIG_SYSCTL + static int sysctl_sched_rr_timeslice = (MSEC_PER_SEC * RR_TIMESLICE) / HZ; +diff --git a/mm/huge_memory.c b/mm/huge_memory.c +index 374a0d54b08d..1d4efe9df1a6 100644 +--- a/mm/huge_memory.c ++++ b/mm/huge_memory.c +@@ -63,7 +63,11 @@ unsigned long transparent_hugepage_flags __read_mostly = + #ifdef CONFIG_TRANSPARENT_HUGEPAGE_MADVISE + (1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)| + #endif ++#ifdef CONFIG_ZENIFY ++ (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG)| ++#else + (1<<TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG)| ++#endif + (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG)| + (1<<TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG); + diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index a0b0397e29ee4c..87a983a356530c 100644 +index df2c442f1c47..d8d83c503419 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -2152,16 +2152,17 @@ +@@ -2228,16 +2228,17 @@ __rmqueue(struct zone *zone, unsigned int order, int migratetype, } /* @@ -663,77 +346,68 @@ index a0b0397e29ee4c..87a983a356530c 100644 unsigned long flags; - int i; + const bool can_resched = !preempt_count() && !irqs_disabled(); -+ int i, last_mod = 0; ++ int i, allocated = 0, last_mod = 0; spin_lock_irqsave(&zone->lock, flags); for (i = 0; i < count; ++i) { -@@ -2170,6 +2171,18 @@ - if (unlikely(page == NULL)) - break; - -+ /* Reschedule and ease the contention on the lock if needed */ -+ if (i + 1 < count && ((can_resched && need_resched()) || -+ spin_needbreak(&zone->lock))) { -+ __mod_zone_page_state(zone, NR_FREE_PAGES, -+ -((i + 1 - last_mod) << order)); -+ last_mod = i + 1; -+ spin_unlock_irqrestore(&zone->lock, flags); -+ if (can_resched) -+ cond_resched(); -+ spin_lock_irqsave(&zone->lock, flags); -+ } -+ - /* - * Split buddy pages returned by expand() are received here in - * physical page order. The page is added to the tail of -@@ -2186,7 +2199,7 @@ - -(1 << order)); - } - -- __mod_zone_page_state(zone, NR_FREE_PAGES, -(i << order)); -+ __mod_zone_page_state(zone, NR_FREE_PAGES, -((i - last_mod) << order)); - spin_unlock_irqrestore(&zone->lock, flags); +diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig +index 8e94ed7c56a0..c103bc45c900 100644 +--- a/net/ipv4/Kconfig ++++ b/net/ipv4/Kconfig +@@ -700,6 +700,9 @@ choice + config DEFAULT_VEGAS + bool "Vegas" if TCP_CONG_VEGAS=y - return i; ++ config DEFAULT_YEAH ++ bool "YeAH" if TCP_CONG_YEAH=y ++ + config DEFAULT_VENO + bool "Veno" if TCP_CONG_VENO=y -From 6329525a0fa10cd13f39b76948b1296150f75c95 Mon Sep 17 00:00:00 2001 -From: Alexandre Frade <kernel@xanmod.org> -Date: Mon, 29 Aug 2022 16:47:26 +0000 -Subject: [PATCH 14/16] XANMOD: Makefile: Disable GCC vectorization on trees - -Signed-off-by: Alexandre Frade <kernel@xanmod.org> ---- - Makefile | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/Makefile b/Makefile -index 3f6628780eb2..35a5ae1ede42 100644 ---- a/Makefile -+++ b/Makefile -@@ -1002,6 +1002,9 @@ - KBUILD_CFLAGS-$(CONFIG_CC_NO_STRINGOP_OVERFLOW) += $(call cc-option, -Wno-stringop-overflow) - KBUILD_CFLAGS-$(CONFIG_CC_STRINGOP_OVERFLOW) += $(call cc-option, -Wstringop-overflow) +@@ -733,6 +736,7 @@ config DEFAULT_TCP_CONG + default "htcp" if DEFAULT_HTCP + default "hybla" if DEFAULT_HYBLA + default "vegas" if DEFAULT_VEGAS ++ default "yeah" if DEFAULT_YEAH + default "westwood" if DEFAULT_WESTWOOD + default "veno" if DEFAULT_VENO + default "reno" if DEFAULT_RENO +diff --git a/net/sched/Kconfig b/net/sched/Kconfig +index 8180d0c12fce..22c5a59d5058 100644 +--- a/net/sched/Kconfig ++++ b/net/sched/Kconfig +@@ -438,6 +438,9 @@ choice + config DEFAULT_SFQ + bool "Stochastic Fair Queue" if NET_SCH_SFQ -+# disable GCC vectorization on trees -+KBUILD_CFLAGS += $(call cc-option, -fno-tree-vectorize) ++ config DEFAULT_CAKE ++ bool "Common Applications Kept Enhanced" if NET_SCH_CAKE + - # disable invalid "can't wrap" optimizations for signed / pointers - KBUILD_CFLAGS += -fno-strict-overflow + config DEFAULT_PFIFO_FAST + bool "Priority FIFO Fast" + endchoice +@@ -449,6 +452,7 @@ config DEFAULT_NET_SCH + default "fq_codel" if DEFAULT_FQ_CODEL + default "fq_pie" if DEFAULT_FQ_PIE + default "sfq" if DEFAULT_SFQ ++ default "cake" if DEFAULT_CAKE + default "pfifo_fast" + endif --- -2.39.1 - -From f997578464b2c4c63e7bd1afbfef56212ee44f2d Mon Sep 17 00:00:00 2001 -From: Etienne JUVIGNY <ti3nou@gmail.com> -Date: Mon, 6 Mar 2023 13:54:09 +0100 -Subject: Don't add -dirty versioning on unclean trees - - diff --git a/scripts/setlocalversion b/scripts/setlocalversion -index ca5795e16..ad0d94477 100755 +index 38b96c6797f4..e22768e0e875 100755 --- a/scripts/setlocalversion +++ b/scripts/setlocalversion -@@ -85,12 +85,12 @@ scm_version() +@@ -92,7 +92,7 @@ scm_version() + # If only the short version is requested, don't bother + # running further git commands + if $short; then +- echo "+" ++ #echo "+" + return + fi + # If we are past the tagged commit, we pretty print it. +@@ -119,12 +119,12 @@ scm_version() # git-diff-index does not refresh the index, so it may give misleading # results. # See git-update-index(1), git-diff-index(1), and git-status(1). @@ -750,5 +424,5 @@ index ca5795e16..ad0d94477 100755 + # printf '%s' -dirty + #fi } - + collect_files() |