linux/drivers/macintosh
Aaro Koskinen 4bb2971134 powerpc/windfarm: Fix overtemperature clearing
With pm81/pm91/pm121, when the overtemperature state is entered, and
when it remains on after skipped ticks, the driver will try to leave
it too soon (immediately on the next tick). This is because the active
FAILURE_OVERTEMP state is not visible in "new_failure" variable of the
current tick. Furthermore, the driver will keep trying to clear condition
in subsequent ticks as FAILURE_OVERTEMP remains set in the "last_failure"
variable. These will start to trigger WARNINGS from windfarm core:

[  100.082735] windfarm: Clamping CPU frequency to minimum !
[  100.108132] windfarm: Overtemp condition detected !
[  101.952908] windfarm: Overtemp condition cleared !
[...]
[  102.980388] WARNING: at drivers/macintosh/windfarm_core.c:463
[...]
[  103.982227] WARNING: at drivers/macintosh/windfarm_core.c:463
[...]
[  105.030494] WARNING: at drivers/macintosh/windfarm_core.c:463
[...]
[  105.973666] WARNING: at drivers/macintosh/windfarm_core.c:463
[...]
[  106.977913] WARNING: at drivers/macintosh/windfarm_core.c:463

Fix by adding a helper global variable. We leave the overtemp state only
after all failure bits have been cleared.

I saw this error on iMac G5 iSight (pm121). Also pm81/pm91 are fixed
based on the observation that these are almost identical/copy-pasted code.

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2013-07-01 11:10:34 +10:00
..
ams workqueue: deprecate flush[_delayed]_work_sync() 2012-08-20 14:51:24 -07:00
adb-iop.c
adb.c macintosh/adb: Replace __WAITQUEUE_INITIALIZER with more standard DECLARE_WAITQUEUE. 2013-06-25 17:24:39 +10:00
adbhid.c
ans-lcd.c
ans-lcd.h
apm_emu.c
Kconfig drivers/macintosh: remove depends on CONFIG_EXPERIMENTAL 2013-01-21 14:52:44 -08:00
mac_hid.c
macio-adb.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
macio_asic.c Drivers: macintosh: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
macio_sysfs.c
Makefile powerpc/powermac: New windfarm driver for PowerMac G5 (AGP) and Xserve G5 2012-04-30 15:37:25 +10:00
mediabay.c Drivers: macintosh: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
nvram.c
rack-meter.c Drivers: macintosh: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
smu.c powerpc/pmac/smu: Use %*ph to print small buffers 2013-04-23 16:39:31 +10:00
therm_adt746x.c powerpc/pmac: Convert therm_adt746x to new i2c probing 2012-04-30 15:37:18 +10:00
therm_pm72.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
therm_pm72.h
therm_windtunnel.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
via-cuda.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
via-macii.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
via-maciisi.c
via-pmu-backlight.c
via-pmu-event.c
via-pmu-event.h
via-pmu-led.c
via-pmu.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2013-05-02 10:16:16 -07:00
via-pmu68k.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
windfarm.h powerpc/powermac: New windfarm driver for PowerMac G5 (AGP) and Xserve G5 2012-04-30 15:37:25 +10:00
windfarm_ad7417_sensor.c Drivers: macintosh: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
windfarm_core.c powerpc/powermac: New windfarm driver for PowerMac G5 (AGP) and Xserve G5 2012-04-30 15:37:25 +10:00
windfarm_cpufreq_clamp.c powerpc/powermac: New windfarm driver for PowerMac G5 (AGP) and Xserve G5 2012-04-30 15:37:25 +10:00
windfarm_fcu_controls.c Drivers: macintosh: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
windfarm_lm75_sensor.c powerpc/windfarm: Use module_i2c_driver to simplify the code 2012-11-15 12:59:30 +11:00
windfarm_lm87_sensor.c powerpc/windfarm: Add lm87 sensor 2012-04-30 15:37:21 +10:00
windfarm_max6690_sensor.c powerpc/windfarm: Use module_i2c_driver to simplify the code 2012-11-15 12:59:30 +11:00
windfarm_mpu.h powerpc/powermac: New windfarm driver for PowerMac G5 (AGP) and Xserve G5 2012-04-30 15:37:25 +10:00
windfarm_pid.c
windfarm_pid.h
windfarm_pm72.c powerpc/windfarm: Use for_each_node_by_type() macro 2013-01-10 17:00:36 +11:00
windfarm_pm81.c powerpc/windfarm: Fix overtemperature clearing 2013-07-01 11:10:34 +10:00
windfarm_pm91.c powerpc/windfarm: Fix overtemperature clearing 2013-07-01 11:10:34 +10:00
windfarm_pm112.c powerpc/windfarm: Use for_each_node_by_type() macro 2013-01-10 17:00:36 +11:00
windfarm_pm121.c powerpc/windfarm: Fix overtemperature clearing 2013-07-01 11:10:34 +10:00
windfarm_rm31.c powerpc/windfarm: Use for_each_node_by_type() macro 2013-01-10 17:00:36 +11:00
windfarm_smu_controls.c powerpc/windfarm: Remove spurrious sysfs_attr_init() 2012-04-30 15:37:20 +10:00
windfarm_smu_sat.c powerpc/windfarm: Use module_i2c_driver to simplify the code 2012-11-15 12:59:30 +11:00
windfarm_smu_sensors.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00