Commit 730ff34de766a6fddee25ac1c32bc49c1a2fd758

Authored by Len Brown
1 parent 72b33ef8bb

ACPI: thermal: expose "thermal.tzp=" to set global polling frequency

Thermal Zone Polling frequency (_TZP) is an optional ACPI object
recommending the rate that the OS should poll the associated thermal zone.

If _TZP is 0, no polling should be used.
If _TZP is non-zero, then the platform recommends that
the OS poll the thermal zone at the specified rate.
The minimum period is 30 seconds.
The maximum period is 5 minutes.

(note _TZP and thermal.tzp units are in deci-seconds,
 so _TZP = 300 corresponds to 30 seconds)

If _TZP is not present, ACPI 3.0b recommends that the
thermal zone be polled at an "OS provided default frequency".

However, common industry practice is:
1. The BIOS never specifies any _TZP
2. High volume OS's from this century never poll any thermal zones

Ie. The OS depends on the platform's ability to
provoke thermal events when necessary, and
the "OS provided default frequency" is "never":-)

There is a proposal that ACPI 4.0 be updated to reflect
common industry practice -- ie. no _TZP, no polling.

The Linux kernel already follows this practice --
thermal zones are not polled unless _TZP is present and non-zero.

But thermal zone polling is useful as a workaround for systems
which have ACPI thermal control, but have an issue preventing
thermal events.  Indeed, some Linux distributions still
set a non-zero thermal polling frequency for this reason.

But rather than ask the user to write a polling frequency
into all the /proc/acpi/thermal_zone/*/polling_frequency
files, here we simply document and expose the already
existing module parameter to do the same at system level,
to simplify debugging those broken platforms.

Note that thermal.tzp is a module-load time parameter only.

Signed-off-by: Len Brown <len.brown@intel.com>

Showing 2 changed files with 6 additions and 1 deletions Side-by-side Diff

Documentation/kernel-parameters.txt
... ... @@ -1823,6 +1823,11 @@
1823 1823 thermal.off= [HW,ACPI]
1824 1824 1: disable ACPI thermal control
1825 1825  
  1826 + thermal.tzp= [HW,ACPI]
  1827 + Specify global default ACPI thermal zone polling rate
  1828 + <deci-seconds>: poll all this frequency
  1829 + 0: no polling (default)
  1830 +
1826 1831 time Show timing data prefixed to each printk message line
1827 1832 [deprecated, see 'printk.time']
1828 1833  
drivers/acpi/thermal.c
... ... @@ -75,7 +75,7 @@
75 75 MODULE_LICENSE("GPL");
76 76  
77 77 static int tzp;
78   -module_param(tzp, int, 0);
  78 +module_param(tzp, int, 0444);
79 79 MODULE_PARM_DESC(tzp, "Thermal zone polling frequency, in 1/10 seconds.\n");
80 80  
81 81 static int off;