diff --git a/lenovo/thinkpad/cpu-throttling-bug.nix b/lenovo/thinkpad/cpu-throttling-bug.nix new file mode 100644 index 0000000..a44bb72 --- /dev/null +++ b/lenovo/thinkpad/cpu-throttling-bug.nix @@ -0,0 +1,38 @@ +{ config, pkgs, ... }: +{ + # Temporary fix for cpu throttling issues visible in the kernel log + # (journalctl -k) by setting the same temperature limits used by + # Window$ + # See https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Power_management.2FThrottling_issues + systemd.services.cpu-throttling = { + enable = true; + description = "Sets the offset to 3 °C, so the new trip point is 97 °C"; + documentation = [ + "https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Power_management.2FThrottling_issues" + ]; + path = [ pkgs.msr-tools ]; + script = "wrmsr -a 0x1a2 0x3000000"; + serviceConfig = { + Type = "oneshot"; + }; + wantedBy = [ + "timers.target" + ]; + }; + + systemd.timers.cpu-throttling = { + enable = true; + description = "Set cpu heating limit to 97 °C"; + documentation = [ + "https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Power_management.2FThrottling_issues" + ]; + timerConfig = { + OnActiveSec = 60; + OnUnitActiveSec = 60; + Unit = "cpu-throttling.service"; + }; + wantedBy = [ + "timers.target" + ]; + }; +} diff --git a/lenovo/thinkpad/t480s/default.nix b/lenovo/thinkpad/t480s/default.nix index 026332e..2f4b8a9 100644 --- a/lenovo/thinkpad/t480s/default.nix +++ b/lenovo/thinkpad/t480s/default.nix @@ -4,6 +4,7 @@ imports = [ ../../../common/cpu/intel ../acpi_call.nix + ../cpu-throttling-bug.nix ../. ]; } diff --git a/lenovo/thinkpad/x1/6th-gen/default.nix b/lenovo/thinkpad/x1/6th-gen/default.nix index b28fb5b..4fc8ece 100644 --- a/lenovo/thinkpad/x1/6th-gen/default.nix +++ b/lenovo/thinkpad/x1/6th-gen/default.nix @@ -7,16 +7,9 @@ { imports = [ ../. + ../../cpu-throttling.nix + ../../acpi_call.nix ]; - # Give TLP service more control over battery - boot = { - extraModulePackages = with config.boot.kernelPackages; [ - acpi_call - ]; - kernelModules = [ - "acpi_call" - ]; - }; # See https://linrunner.de/en/tlp/docs/tlp-faq.html#battery services.tlp.extraConfig = '' @@ -26,42 +19,6 @@ ENERGY_PERF_POLICY_ON_BAT=powersave ''; - # Temporary fix for cpu throttling issues visible in the kernel log - # (journalctl -k) by setting the same temperature limits used by - # Window$ - # See https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Power_management.2FThrottling_issues - systemd.services.cpu-throttling = { - enable = true; - description = "Sets the offset to 3 °C, so the new trip point is 97 °C"; - documentation = [ - "https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Power_management.2FThrottling_issues" - ]; - path = [ pkgs.msr-tools ]; - script = "wrmsr -a 0x1a2 0x3000000"; - serviceConfig = { - Type = "oneshot"; - }; - wantedBy = [ - "timers.target" - ]; - }; - - systemd.timers.cpu-throttling = { - enable = true; - description = "Set cpu heating limit to 97 °C"; - documentation = [ - "https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Power_management.2FThrottling_issues" - ]; - timerConfig = { - OnActiveSec = 60; - OnUnitActiveSec = 60; - Unit = "cpu-throttling.service"; - }; - wantedBy = [ - "timers.target" - ]; - }; - # Enable S3 suspend state: you have to manually follow the # instructions shown here: https://delta-xi.net/#056 in order to # produce the ACPI patched table. Put the CPIO archive in /boot and