Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 03 Apr 2010 01:57:29 +0100
From:      Bartosz Fabianowski <freebsd@chillt.de>
To:        freebsd-acpi@freebsd.org
Subject:   Spurious thermal shutdowns on Dell Studio 1557
Message-ID:  <4BB69279.6060005@chillt.de>

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

I have a Dell Studio 1557 laptop. When I first set up the machine in 
January 2010, I was able to compile the FreeBSD 8-STABLE base system and 
700 ports without any thermal issues.

Around mid-February 2010, I updated to a newer 8-STABLE. Since then, the 
computer has been shutting down due to "critical temperatures" whenever 
I run a CPU-intensive task for more than a few minutes. It is now 
impossible to compile Firefox or OpenOffice.org.

The shutdowns are caused by TZ1, representing the CPU. The relevant 
sysctl output is:


hw.acpi.thermal.tz1.temperature: 60.0C
hw.acpi.thermal.tz1.active: 1
hw.acpi.thermal.tz1.passive_cooling: 1
hw.acpi.thermal.tz1.thermal_flags: 0
hw.acpi.thermal.tz1._PSV: 95.0C
hw.acpi.thermal.tz1._HOT: -1
hw.acpi.thermal.tz1._CRT: 85.0C
hw.acpi.thermal.tz1._ACx: 71.0C 55.0C -1 -1 -1 -1 -1 -1 -1 -1
hw.acpi.thermal.tz1._TC1: 0
hw.acpi.thermal.tz1._TC2: 10
hw.acpi.thermal.tz1._TSP: 2


Notice how _PSV=95°C > _CRT=85°C. This looks very fishy to me. At 95°C, 
the CPU should start throttling its speed, passively reducing 
temperature. But before it gets a chance to do so, the system shuts down 
due to reaching 85°C. I can work around this by overriding _CRT, setting 
it to e.g. 99°C. But this clearly is a hack. Prior to some change in 
FreeBSD, I did not experience any such problems.

I disassembled the DSDT. The threshold values are computed as follows:


Method (_PSV, 0, Serialized)
{
     Return (Add (0x0AAC, Multiply (PSVT, 0x0A)))
}

Method (_CRT, 0, Serialized)
{
     Return (Add (0x0AAC, Multiply (CRTT, 0x0A)))
}


The constants PSVT and CRTT are found in the following memory region:


OperationRegion (GNVS, SystemMemory, 0xC779BC9E, 0x0200)


Their actual values are PSVT=0x5F and CRTT=0x55, corresponding to a _PSV 
threshold 10°C higher than _CRT.

All of this could be the BIOS' fault - a table of nonsense values set up 
incorrectly by Dell. However, I never touched the BIOS since first 
setting up the machine. The only thing that has changed is FreeBSD, not 
the BIOS. Could this be some problem in FreeBSD's ACPI implementation? 
Are the values being read or interpreted wrong?

I know manufacturers often provide sloppy, wrong DSDTs. But these values 
would make even Windows shut down under moderate to high load. That 
cannot be right.

I am happy to debug further if someone could give me pointers where to look.

- Bartosz



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4BB69279.6060005>