• Aaro Koskinen's avatar
    powerpc/windfarm: Fix overtemperature clearing · 4bb29711
    Aaro Koskinen authored
    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: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    4bb29711
windfarm_pm121.c 24.8 KB