On-die temperatures not reported on a Powermac dual G5
Xavier HILAIRE
xavier.hilaire at gmail.com
Thu Jan 28 22:49:16 UTC 2016
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 at 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
More information about the freebsd-ppc
mailing list