Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jan 2016 23:49:11 +0100
From:      Xavier HILAIRE <xavier.hilaire@gmail.com>
To:        freebsd-ppc@freebsd.org
Subject:   On-die temperatures not reported on a Powermac dual G5
Message-ID:  <56AA9AE7.6030402@gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,

I recently got an old Powermac dual G5 on which I installed both FreeBSD 
10.2 and Linux (Debian, jessie).

After booting FreeBSD I noticed the fans were running at an unusual low 
speed given the CPU-intensive work I was doing (recompile some ports + 
X11 drivers). A sysctl -a | grep temp showed the following:

> net.inet6.ip6.use_tempaddr: 0
> net.inet6.ip6.temppltime: 86400
> net.inet6.ip6.tempvltime: 604800
> net.inet6.ip6.prefer_tempaddr: 0
> hw.usb.template: 0
> dev.ad7417.1.sensor.cpu_b_ad7417_amb.temp: 31.0C
> dev.ad7417.0.sensor.cpu_a_ad7417_amb.temp: 33.2C
> dev.ds1631.0.sensor.mlb_inlet_amb.temp: 22.2C
> dev.ds1631.0.%pnpinfo: name=temp-monitor compat=ds1631
> dev.max6690.0.sensor.u3_heatsink.temp: 63.0C
> dev.max6690.0.sensor.backside.temp: 35.3C
> dev.max6690.0.%pnpinfo: name=temp-monitor compat=max6690
> dev.ds1775.0.sensor.drive_bay.temp: 21.0C
> dev.ds1775.0.%pnpinfo: name=temp-monitor compat=ds1775
> x


The only two available temperatures related to the CPUs seem to be those 
reported by the AD7417 supply monitor's sensors, and there is *no* 
temperature reported from the on-die sensors at all.

When rebooting Linux, the kernel complained about CPU0's temperature 
higher than the critical value, and shut down the system almost immediately.

Now, (well, after a few hours cooling, ideed!) here is copy of what I 
get on Debian after cd'ing to /sys/devices/platform/windfarm.0 :

> xavier@pomme:/sys/devices/platform/windfarm.0$ for f in $(find . -type f); do
>> echo -n "$f -> "; cat $f
>> done
> ./backside-temp -> 66.000
> ./backside-fan -> 19 %
> ./cpu-amb-temp-0 -> 38.250
> ./cpu-amb-temp-1 -> 35.250
> ./power/control -> auto
> ./power/async -> disabled
> ./power/runtime_enabled -> disabled
> ./power/runtime_active_kids -> 0
> ./power/runtime_active_time -> 0
> ./power/autosuspend_delay_ms -> cat: ./power/autosuspend_delay_ms: Erreur d'entrée/sortie
> ./power/runtime_status -> unsupported
> ./power/runtime_usage -> 0
> ./power/runtime_suspended_time -> 0
> ./cpu-current-0 -> 35.522
> ./cpu-current-1 -> 33.447
> ./cpu-pump-0 -> 1250 RPM
> ./cpu-pump-1 -> 1250 RPM
> ./cpu-front-fan-0 -> 660 RPM
> ./cpu-front-fan-1 -> 660 RPM
> ./modalias -> platform:windfarm
> ./cpu-rear-fan-0 -> 681 RPM
> ./cpu-rear-fan-1 -> 681 RPM
> ./cpu-12v-current-0 -> 5.004
> ./cpu-12v-current-1 -> 4.577
> ./cpu-voltage-0 -> 1.374
> ./cpu-voltage-1 -> 1.364
> ./hd-temp -> 24.000
> ./cpufreq-clamp -> 0
> ./drive-bay-fan -> 300 RPM
> ./uevent -> DRIVER=windfarm
> MODALIAS=platform:windfarm
> ./cpu-diode-temp-0 -> 70.987
> ./cpu-diode-temp-1 -> 60.784
> ./slots-fan -> 39 %


The cpu-diode-temp-* lines just do not have their equivalent from sysctl 
on FreeBSD. I took a look at the powermac_thermal.{c,h} files in the 
source tree, and my understanding is that the fans are not managed 
properly because the on-die temperatures are just not reported, thus 
accounted for at all  in the fan management loop (indeed, the cpu-amb-* 
temperatures can remain quite stable, while the cpu-diode-temp can 
increase substantially)

Am I right?

This is weird, because a "sysctl -a | grep smu" does not report 
anything, while the kernel *does* include the smu driver, and 
temperature sensors are normally attached to this device AFAIK.

I would *love* using FreeBSD again (rather than Linux, for compatibility 
reasons). But my code is CPU intensive and relies a lot on Altivec, I 
wouldn't want to fire my everything...

The machine is an M9032LL/A according to Apple's specs:
https://support.apple.com/kb/sp96?locale=en_US


Any help will be greatly appreciated.

Thanks,

Xavier










Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56AA9AE7.6030402>