diff --git a/pkgs/os-specific/linux/kernel/xanmod-kernels.nix b/pkgs/os-specific/linux/kernel/xanmod-kernels.nix index 80beae4c400d..1cf9b2ead31d 100644 --- a/pkgs/os-specific/linux/kernel/xanmod-kernels.nix +++ b/pkgs/os-specific/linux/kernel/xanmod-kernels.nix @@ -47,32 +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; - # Full preemption - PREEMPT = lib.mkOverride 60 yes; - PREEMPT_VOLUNTARY = lib.mkOverride 60 no; + # 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 Full Tickless Kernel at 250Hz - HZ = freeform "250"; - HZ_250 = yes; - HZ_1000 = no; + # Preemptive tickless idle kernel + HZ = freeform "250"; + HZ_250 = yes; + NO_HZ = no; + NO_HZ_FULL = lib.mkOverride 60 no; + NO_HZ_IDLE = 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; - }; + # 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; + + # 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 = [