diff options
author | Alberto Berti <alberto@metapensiero.it> | 2018-06-03 01:31:17 +0200 |
---|---|---|
committer | Alberto Berti <alberto@metapensiero.it> | 2018-06-03 01:31:17 +0200 |
commit | 654262071f8b9f0c15704d4da195c60739707e4b (patch) | |
tree | abc19259447fa4f10a6efbed5921f4258395c78b /lenovo | |
parent | 5dd535392df4ed2299ed39c4500bbd432e62cff0 (diff) |
Add the temporary fix for the cpu-throttling issue
See https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Power_management.2FThrottling_issues
Diffstat (limited to 'lenovo')
-rw-r--r-- | lenovo/thinkpad/x1/6th-gen/default.nix | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lenovo/thinkpad/x1/6th-gen/default.nix b/lenovo/thinkpad/x1/6th-gen/default.nix index ea63de0..848cc00 100644 --- a/lenovo/thinkpad/x1/6th-gen/default.nix +++ b/lenovo/thinkpad/x1/6th-gen/default.nix @@ -1,3 +1,4 @@ +{ config, pkgs, ... }: { imports = [ ../. @@ -17,4 +18,41 @@ START_CHARGE_THRESH_BAT0=75 STOP_CHARGE_THRESH_BAT0=80 ''; + + # 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" + ]; + }; + } |