kernel-ark/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 drivers/macintosh/adb-iop.c: flags should be unsigned long 2010-11-12 07:55:30 -08:00
adb.c macintosh/adb: Replace __WAITQUEUE_INITIALIZER with more standard DECLARE_WAITQUEUE. 2013-06-25 17:24:39 +10:00
adbhid.c Fix common misspellings 2011-03-31 11:26:23 -03:00
ans-lcd.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
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 Input: mac mouse emulation - add locking 2010-11-11 22:22:19 -08:00
macio_asic.c Drivers: macintosh: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
macio_sysfs.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
macio-adb.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
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 drivers: fix up various ->llseek() implementations 2011-07-20 20:47:58 -04:00
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 powerpc: Fix G5 thermal shutdown 2010-03-09 11:55:27 +11:00
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 m68k/irq: Remove obsolete IRQ_FLG_* users 2011-11-08 22:35:48 +01:00
via-pmu68k.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
via-pmu-backlight.c backlight: add backlight type 2011-03-22 17:43:59 -07:00
via-pmu-event.c
via-pmu-event.h
via-pmu-led.c powerpc/via-pmu-led.c: Add of_node_put to avoid memory leak 2010-09-02 14:07:33 +10:00
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
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
windfarm.h powerpc/powermac: New windfarm driver for PowerMac G5 (AGP) and Xserve G5 2012-04-30 15:37:25 +10:00