41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ lib, ... }:
 | 
						|
 | 
						|
{
 | 
						|
  # Disable frequency boost by default. Use the intel_pstate driver instead of
 | 
						|
  # acpi_cpufreq driver because the acpi_cpufreq driver does not read the
 | 
						|
  # complete range of P-States [1]. Use the intel_pstate passive mode [2] to
 | 
						|
  # disable HWP, which allows a core to "select P-states by itself". Also, this
 | 
						|
  # disables intel governors, which confusingly, have the same names as the
 | 
						|
  # generic ones but behave differently [3].
 | 
						|
 | 
						|
  # Essentially, we use the generic governors, but use the intel driver to read
 | 
						|
  # the P-state list.
 | 
						|
 | 
						|
  # [1] - https://www.kernel.org/doc/html/latest/admin-guide/pm/intel_pstate.html#intel-pstate-vs-acpi-cpufreq
 | 
						|
  # [2] - https://www.kernel.org/doc/html/latest/admin-guide/pm/intel_pstate.html#passive-mode
 | 
						|
  # [3] - https://www.kernel.org/doc/html/latest/admin-guide/pm/intel_pstate.html#active-mode
 | 
						|
  # https://www.kernel.org/doc/html/latest/admin-guide/pm/cpufreq.html
 | 
						|
 | 
						|
  # set intel_pstate to passive mode
 | 
						|
  boot.kernelParams = [
 | 
						|
    "intel_pstate=passive"
 | 
						|
  ];
 | 
						|
  # Disable frequency boost
 | 
						|
  system.activationScripts = {
 | 
						|
    disableFrequencyBoost.text = ''
 | 
						|
      echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
 | 
						|
    '';
 | 
						|
  };
 | 
						|
 | 
						|
  ## disable intel_pstate
 | 
						|
  #boot.kernelParams = [
 | 
						|
  #  "intel_pstate=disable"
 | 
						|
  #];
 | 
						|
  ## Disable frequency boost
 | 
						|
  #system.activationScripts = {
 | 
						|
  #  disableFrequencyBoost.text = ''
 | 
						|
  #    echo 0 > /sys/devices/system/cpu/cpufreq/boost
 | 
						|
  #  '';
 | 
						|
  #};
 | 
						|
}
 |