From f4946c7db746d1144928946e782c6c848f91bf02 Mon Sep 17 00:00:00 2001 From: ElXreno Date: Tue, 23 Sep 2025 14:58:59 +0300 Subject: [PATCH 1/2] linux_xanmod: Sync config with upstream --- .../linux/kernel/xanmod-kernels.nix | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/xanmod-kernels.nix b/pkgs/os-specific/linux/kernel/xanmod-kernels.nix index 80beae4c400d..b4d8ee066198 100644 --- a/pkgs/os-specific/linux/kernel/xanmod-kernels.nix +++ b/pkgs/os-specific/linux/kernel/xanmod-kernels.nix @@ -52,18 +52,26 @@ let CPU_FREQ_DEFAULT_GOV_PERFORMANCE = lib.mkOverride 60 yes; CPU_FREQ_DEFAULT_GOV_SCHEDUTIL = lib.mkOverride 60 no; - # Full preemption - PREEMPT = lib.mkOverride 60 yes; + # Lazy preemption + PREEMPT_LAZY = yes; PREEMPT_VOLUNTARY = lib.mkOverride 60 no; + PREEMPTIRQ_DELAY_TEST = unset; # Google's BBRv3 TCP congestion Control TCP_CONG_BBR = yes; DEFAULT_BBR = yes; - # Preemptive Full Tickless Kernel at 250Hz + # Preemptive tickless idle kernel HZ = freeform "250"; HZ_250 = yes; - HZ_1000 = no; + NO_HZ = no; + NO_HZ_FULL = lib.mkOverride 60 no; + NO_HZ_IDLE = yes; + + # CPU idle governors favored + CPU_IDLE_GOV_HALTPOLL = yes; # Already enabled + CPU_IDLE_GOV_LADDER = yes; + CPU_IDLE_GOV_TEO = yes; # RCU_BOOST and RCU_EXP_KTHREAD RCU_EXPERT = yes; @@ -72,6 +80,12 @@ let RCU_BOOST = yes; RCU_BOOST_DELAY = freeform "0"; RCU_EXP_KTHREAD = yes; + RCU_NOCB_CPU = yes; + RCU_DOUBLE_CHECK_CB_TIME = yes; + + # x86 features + X86_FRED = yes; + X86_POSTED_MSI = yes; }; extraPassthru.updateScript = { From ad0a9d2fd544b923eef617245d62509d2a1edc18 Mon Sep 17 00:00:00 2001 From: ElXreno Date: Sun, 19 Oct 2025 13:56:58 +0300 Subject: [PATCH 2/2] linux_xanmod: Conditionally enable lazy preemption --- .../linux/kernel/xanmod-kernels.nix | 74 ++++++++++--------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/xanmod-kernels.nix b/pkgs/os-specific/linux/kernel/xanmod-kernels.nix index b4d8ee066198..1cf9b2ead31d 100644 --- a/pkgs/os-specific/linux/kernel/xanmod-kernels.nix +++ b/pkgs/os-specific/linux/kernel/xanmod-kernels.nix @@ -47,46 +47,52 @@ let inherit hash; }; - structuredExtraConfig = with lib.kernel; { - # CPUFreq governor Performance - CPU_FREQ_DEFAULT_GOV_PERFORMANCE = lib.mkOverride 60 yes; - CPU_FREQ_DEFAULT_GOV_SCHEDUTIL = lib.mkOverride 60 no; + structuredExtraConfig = + with lib.kernel; + { + # CPUFreq governor Performance + CPU_FREQ_DEFAULT_GOV_PERFORMANCE = lib.mkOverride 60 yes; + CPU_FREQ_DEFAULT_GOV_SCHEDUTIL = lib.mkOverride 60 no; - # Lazy preemption - PREEMPT_LAZY = yes; - PREEMPT_VOLUNTARY = lib.mkOverride 60 no; - PREEMPTIRQ_DELAY_TEST = unset; + # Preemption + PREEMPT = lib.mkOverride 60 yes; + PREEMPT_VOLUNTARY = lib.mkOverride 60 no; - # Google's BBRv3 TCP congestion Control - TCP_CONG_BBR = yes; - DEFAULT_BBR = yes; + # Google's BBRv3 TCP congestion Control + TCP_CONG_BBR = yes; + DEFAULT_BBR = yes; - # Preemptive tickless idle kernel - HZ = freeform "250"; - HZ_250 = yes; - NO_HZ = no; - NO_HZ_FULL = lib.mkOverride 60 no; - NO_HZ_IDLE = yes; + # Preemptive tickless idle kernel + HZ = freeform "250"; + HZ_250 = yes; + NO_HZ = no; + NO_HZ_FULL = lib.mkOverride 60 no; + NO_HZ_IDLE = yes; - # CPU idle governors favored - CPU_IDLE_GOV_HALTPOLL = yes; # Already enabled - CPU_IDLE_GOV_LADDER = yes; - CPU_IDLE_GOV_TEO = yes; + # CPU idle governors favored + CPU_IDLE_GOV_HALTPOLL = yes; # Already enabled + CPU_IDLE_GOV_LADDER = yes; + CPU_IDLE_GOV_TEO = yes; - # RCU_BOOST and RCU_EXP_KTHREAD - RCU_EXPERT = yes; - RCU_FANOUT = freeform "64"; - RCU_FANOUT_LEAF = freeform "16"; - RCU_BOOST = yes; - RCU_BOOST_DELAY = freeform "0"; - RCU_EXP_KTHREAD = yes; - RCU_NOCB_CPU = yes; - RCU_DOUBLE_CHECK_CB_TIME = yes; + # RCU_BOOST and RCU_EXP_KTHREAD + RCU_EXPERT = yes; + RCU_FANOUT = freeform "64"; + RCU_FANOUT_LEAF = freeform "16"; + RCU_BOOST = yes; + RCU_BOOST_DELAY = freeform "0"; + RCU_EXP_KTHREAD = yes; + RCU_NOCB_CPU = yes; + RCU_DOUBLE_CHECK_CB_TIME = yes; - # x86 features - X86_FRED = yes; - X86_POSTED_MSI = yes; - }; + # x86 features + X86_FRED = yes; + X86_POSTED_MSI = yes; + } + // lib.optionalAttrs (lib.versionAtLeast (lib.versions.majorMinor version) "6.13") { + # Lazy preemption + PREEMPT = lib.mkOverride 70 no; + PREEMPT_LAZY = yes; + }; extraPassthru.updateScript = { command = [