[help] strange fan problems, partially solved in DSDT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I'll try describing my problem in detail to hopefully avoid
back-and-forth questions, please excuse my prolixity.

I have a Toshiba L300 21C (output dmidecode attached) with an Insyde H2O
(latest version from Toshiba as of today), which according to their site
is an EFI implementation, but which looks and behaves like a legacy
BIOS, so I assume it's a thin CSM on top of EFI.

Linux booted OK, but had a non-working thermal zone which always replied
a temperature of 0C (though the coretemp module worked ok) and an
apparently non-working fan interface which always seemed ON and didn't
respond to
'echo 3 > /proc/acpi/fan/FAN/state' (kernel logged the usual "failed to
transition to D3" message).
The fan also didn't seem to react to the processor temperature, suddenly
springing to full-power when it reached the 80C trip point (which wasn't
even reported in trip_points) and never switching off again.

These problems manifested with 2.6.2{6,8,9-rc7}.

I suspected there could be some problems in the thermal zone definition
so I tried the DSDT (both original and new version attached).
This was my first attempt at reading the ACPI spec and coding ASL, so
please bear with me if my assumptions are completely off-mark.

Opening the DSDT it became obvious that the FAN declaration was bogus,
always returning ON and not implementing the _ON and _OFF methods.
The next step was debugging the temperature problem, since it seemed to
be an awful big chunk of code to be simply useless, and the fan problem
seemed harder to find now that I didn't know where else to look.
While I was stumbling with the _TMP method and adding debugging output
all around the code, the fan suddenly became responsive during one of
the boot cycles.
I traced it back to reading from any field inside the EC
OperationRegion, through a "Store(\_SB.PCI0.LPC.EC0.FNST, Debug)" (I
started with FNST because it looked like it might mean "fan status", but
reading from other fields also reliably triggered the same behavior).
FNST itself seems to return 0 in all situations I tried, so I still
don't know what it actually stands for.

At this point I also got the _TMP method working, albeit with an
apparent temperature skew of a few degrees in relation to the temps
reported by coretemp, but this wasn't so important as the fan problem.

Debugging blindly a bit further I noticed whenever the fan crossed the
35C/50C/60C/80C barriers (again: not the same as trip_points) the _Q11
method got called and this seemed to adjust the fan speed to whatever
speed was appropriate.
Changing just the "Store(\_SB.PCI0.LPC.EC0.FNST, Debug)" line to read
from some other value not inside the EC made this stop working.

Another interesting characteristic: it stopped working after a full
suspend-resume cycle, but continued to work when put through all the
test levels in /sys/power/pm-test, only stopping when we actually cut
the power and entered S3 proper.

To "fix" this I made the fan's _PSC method call _Q11() and read from the
EC, which seemed to keep things working through suspend-resume.

Right now everything seems to be working almost perfectly, though I have
seen the fan control stop working and only jerk back into action after a
suspend-resume cycle, without being able to reproduce the failure reliably.
I'm totally aware that this is far from a perfect solution and was - in
fact - just a fluke.

My questions are:
- am I right in assuming the EC could be playing behind ACPI's back and
controlling the fan speed by itself, only depending on ACPI to react
when issued the _Q11 event? Or did I completely misunderstand the way
the _Qxx methods are supposed to work?

- should this problem be understood as a failure in the DSDT for not
explicitly initializing something; a failure in ACPI for not implicitly
initializing something or a failure in the hardware/BIOS for depending
on partially non-ACPI behavior to control fan speed?

- what would be the "least wrong" way of solving this problem?

Cheers and thanks for the lesson (if anyone had the patience to read
this whole thing... :) )

-- 
*Leo Antunes*





Attachment: dsdt.working.dsl.gz
Description: GNU Zip compressed data

Attachment: dsdt.orig.dsl.gz
Description: GNU Zip compressed data

# dmidecode 2.9
SMBIOS 2.4 present.
35 structures occupying 1489 bytes.
Table at 0x000E8150.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
	Vendor: INSYDE
	Version: 1.60
	Release Date: 12/23/2008
	ROM Size: 1024 kB
	Characteristics:
		PCI is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		Boot from CD is supported
		Selectable boot is supported
		BIOS ROM is socketed
		EDD is supported
		Japanese floppy for NEC 9800 1.2 MB is supported (int 13h)
		Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
		5.25"/360 KB floppy services are supported (int 13h)
		5.25"/1.2 MB floppy services are supported (int 13h)
		3.5"/720 KB floppy services are supported (int 13h)
		3.5"/2.88 MB floppy services are supported (int 13h)
		8042 keyboard services are supported (int 9h)
		CGA/mono video services are supported (int 10h)
		ACPI is supported
		USB legacy is supported
		Targeted content distribution is supported

Handle 0x0001, DMI type 1, 27 bytes
System Information
	Manufacturer: TOSHIBA
	Product Name: Satellite L300
	Version: PSLB8E-0H301VGR
	Serial Number: 19027396Q
	UUID: 0A80D6A0-D6C5-11DD-A70E-001E338F4BA5
	Wake-up Type: Power Switch
	SKU Number: Montevina_Fab
	Family: Intel_Mobile

Handle 0x0002, DMI type 2, 16 bytes
Base Board Information
	Manufacturer: TOSHIBA
	Product Name: Portable PC
	Version: Base Board Version
	Serial Number: Base Board Serial Number
	Asset Tag: Base Board Asset Tag
	Features:
		Board is a hosting board
		Board is replaceable
	Location In Chassis: Base Board Chassis Location
	Chassis Handle: 0x0003
	Type: Motherboard
	Contained Object Handles: 0

Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
	Manufacturer: Chassis Manufacturer
	Type: Notebook
	Lock: Not Present
	Version: Chassis Version
	Serial Number: Chassis Serial Number
	Asset Tag: No Asset Tag
	Boot-up State: Safe
	Power Supply State: Safe
	Thermal State: Safe
	Security Status: None
	OEM Information: 0x00000000
	Height: Unspecified
	Number Of Power Cords: 1
	Contained Elements: 0

Handle 0x0004, DMI type 5, 20 bytes
Memory Controller Information
	Error Detecting Method: None
	Error Correcting Capabilities:
		None
	Supported Interleave: One-way Interleave
	Current Interleave: One-way Interleave
	Maximum Memory Module Size: 4096 MB
	Maximum Total Memory Size: 8192 MB
	Supported Speeds:
		Other
	Supported Memory Types:
		Other
	Memory Module Voltage: Unknown
	Associated Memory Slots: 2
		0x0000
		0x0000
	Enabled Error Correcting Capabilities:
		None

Handle 0x0005, DMI type 9, 13 bytes
System Slot Information
	Designation: J6B2
	Type: x16 PCI Express
	Current Usage: Available
	Length: Other
	ID: 0
	Characteristics:
		PME signal is supported
		Hot-plug devices are supported

Handle 0x0006, DMI type 9, 13 bytes
System Slot Information
	Designation: J6B1
	Type: x1 PCI Express
	Current Usage: Available
	Length: Other
	ID: 0
	Characteristics:
		PME signal is supported
		Hot-plug devices are supported

Handle 0x0007, DMI type 9, 13 bytes
System Slot Information
	Designation: J6C2
	Type: x1 PCI Express
	Current Usage: Available
	Length: Other
	ID: 1
	Characteristics:
		PME signal is supported
		Hot-plug devices are supported

Handle 0x0008, DMI type 9, 13 bytes
System Slot Information
	Designation: J7B1
	Type: x1 PCI Express
	Current Usage: Available
	Length: Other
	ID: 2
	Characteristics:
		PME signal is supported
		Hot-plug devices are supported

Handle 0x0009, DMI type 9, 13 bytes
System Slot Information
	Designation: J8B3
	Type: x1 PCI Express
	Current Usage: Available
	Length: Other
	ID: 3
	Characteristics:
		PME signal is supported
		Hot-plug devices are supported

Handle 0x000A, DMI type 9, 13 bytes
System Slot Information
	Designation: J8D1
	Type: x1 PCI Express
	Current Usage: Available
	Length: Other
	ID: 4
	Characteristics:
		PME signal is supported
		Hot-plug devices are supported

Handle 0x000B, DMI type 11, 5 bytes
OEM Strings
	String 1: SSLB8E0H301VGR
	String 2:              
	String 3:              
	String 4:              
	String 5: SSLB8E0H301VGR

Handle 0x000C, DMI type 12, 5 bytes
System Configuration Options
	Option 1: NVR:00707002
	Option 2: DSN:K61DT8C2BKT4        
	Option 3: DSN:16HTF25664HY-800E1E81D8954 
	Option 4: DSN:4D0F3E37

Handle 0x000D, DMI type 15, 29 bytes
System Event Log
	Area Length: 32672 bytes
	Header Start Offset: 0x0000
	Data Start Offset: 0x0000
	Access Method: General-purpose non-volatile data functions
	Access Address: 0x0000
	Status: Valid, Not Full
	Change Token: 0x12345678
	Header Format: OEM-specific
	Supported Log Type Descriptors: 3
	Descriptor 1: POST memory resize
	Data Format 1: None
	Descriptor 2: POST error
	Data Format 2: POST results bitmap
	Descriptor 3: Log area reset/cleared
	Data Format 3: None

Handle 0x000E, DMI type 21, 7 bytes
Built-in Pointing Device
	Type: Touch Pad
	Interface: PS/2
	Buttons: 4

Handle 0x000F, DMI type 27, 14 bytes
Cooling Device
	Type: Fan
	Status: OK
	OEM-specific Information: 0x00000000
	Nominal Speed: 43690 rpm

Handle 0x0010, DMI type 32, 20 bytes
System Boot Information
	Status: No errors detected

Handle 0x0011, DMI type 39, 22 bytes
System Power Supply
	Location: OEM_Define0
	Name: OEM_Define1
	Manufacturer: OEM_Define2
	Serial Number: OEM_Define2
	Asset Tag: OEM_Define3
	Model Part Number: OEM_Define4
	Revision: OEM_Define5
	Max Power Capacity: 0.075 W
	Status: Present, OK
	Type: Regulator
	Input Voltage Range Switching: Auto-switch
	Plugged: No
	Hot Replaceable: No

Handle 0x0012, DMI type 129, 5 bytes
OEM-specific Type
	Header and Data:
		81 05 12 00 4F
	Strings:
		em Test 1
		Oem Test 2

Handle 0x0013, DMI type 16, 15 bytes
Physical Memory Array
	Location: System Board Or Motherboard
	Use: System Memory
	Error Correction Type: None
	Maximum Capacity: 8 GB
	Error Information Handle: No Error
	Number Of Devices: 2

Handle 0x0014, DMI type 6, 12 bytes
Memory Module Information
	Socket Designation: DIMM0
	Bank Connections: 0 0
	Current Speed: 1 ns
	Type: None
	Installed Size: 2048 MB (Single-bank Connection)
	Enabled Size: 2048 MB (Single-bank Connection)
	Error Status: OK

Handle 0x0015, DMI type 17, 27 bytes
Memory Device
	Array Handle: 0x0013
	Error Information Handle: 0x0016
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: SODIMM
	Set: None
	Locator: DIMM0
	Bank Locator: BANK 0
	Type: DDR2
	Type Detail: Synchronous
	Speed: 667 MHz (1.5 ns)
	Manufacturer: Micron
	Serial Number: E81D8978
	Asset Tag: Unknown
	Part Number: 787878787878787878787878787878787878

Handle 0x0016, DMI type 18, 23 bytes
32-bit Memory Error Information
	Type: OK
	Granularity: Unknown
	Operation: Unknown
	Vendor Syndrome: Unknown
	Memory Array Address: Unknown
	Device Address: Unknown
	Resolution: Unknown

Handle 0x0017, DMI type 20, 19 bytes
Memory Device Mapped Address
	Starting Address: 0x00000000000
	Ending Address: 0x0007FFFFFFF
	Range Size: 2 GB
	Physical Device Handle: 0x0015
	Memory Array Mapped Address Handle: 0x001D
	Partition Row Position: Unknown
	Interleave Position: 1
	Interleaved Data Depth: 1

Handle 0x0018, DMI type 6, 12 bytes
Memory Module Information
	Socket Designation: DIMM2
	Bank Connections: 0 0
	Current Speed: 1 ns
	Type: None
	Installed Size: 2048 MB (Single-bank Connection)
	Enabled Size: 2048 MB (Single-bank Connection)
	Error Status: OK

Handle 0x0019, DMI type 17, 27 bytes
Memory Device
	Array Handle: 0x0013
	Error Information Handle: 0x001A
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: SODIMM
	Set: None
	Locator: DIMM2
	Bank Locator: BANK 2
	Type: DDR2
	Type Detail: Synchronous
	Speed: 667 MHz (1.5 ns)
	Manufacturer: Micron
	Serial Number: E7236BD9
	Asset Tag: Unknown
	Part Number: D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9

Handle 0x001A, DMI type 18, 23 bytes
32-bit Memory Error Information
	Type: OK
	Granularity: Unknown
	Operation: Unknown
	Vendor Syndrome: Unknown
	Memory Array Address: Unknown
	Device Address: Unknown
	Resolution: Unknown

Handle 0x001B, DMI type 20, 19 bytes
Memory Device Mapped Address
	Starting Address: 0x00000000000
	Ending Address: 0x0007FFFFFFF
	Range Size: 2 GB
	Physical Device Handle: 0x0019
	Memory Array Mapped Address Handle: 0x001D
	Partition Row Position: Unknown
	Interleave Position: 2
	Interleaved Data Depth: 1

Handle 0x001C, DMI type 18, 23 bytes
32-bit Memory Error Information
	Type: OK
	Granularity: Unknown
	Operation: Unknown
	Vendor Syndrome: Unknown
	Memory Array Address: Unknown
	Device Address: Unknown
	Resolution: Unknown

Handle 0x001D, DMI type 19, 15 bytes
Memory Array Mapped Address
	Starting Address: 0x00000000000
	Ending Address: 0x000FFFFFFFF
	Range Size: 4 GB
	Physical Array Handle: 0x0013
	Partition Width: 0

Handle 0x001E, DMI type 4, 35 bytes
Processor Information
	Socket Designation: CPU
	Type: Central Processor
	Family: Pentium M
	Manufacturer: Intel(R) Corporation
	ID: FD 06 00 00 FF FB EB BF
	Signature: Type 0, Family 6, Model 15, Stepping 13
	Flags:
		FPU (Floating-point unit on-chip)
		VME (Virtual mode extension)
		DE (Debugging extension)
		PSE (Page size extension)
		TSC (Time stamp counter)
		MSR (Model specific registers)
		PAE (Physical address extension)
		MCE (Machine check exception)
		CX8 (CMPXCHG8 instruction supported)
		APIC (On-chip APIC hardware supported)
		SEP (Fast system call)
		MTRR (Memory type range registers)
		PGE (Page global enable)
		MCA (Machine check architecture)
		CMOV (Conditional move instruction supported)
		PAT (Page attribute table)
		PSE-36 (36-bit page size extension)
		CLFSH (CLFLUSH instruction supported)
		DS (Debug store)
		ACPI (ACPI supported)
		MMX (MMX technology supported)
		FXSR (Fast floating-point save and restore)
		SSE (Streaming SIMD extensions)
		SSE2 (Streaming SIMD extensions 2)
		SS (Self-snoop)
		HTT (Hyper-threading technology)
		TM (Thermal monitor supported)
		PBE (Pending break enabled)
	Version: Intel(R) Pentium(R) Dual  CPU  T3400  @ 2.16GHz
	Voltage: 1.6 V
	External Clock: 667 MHz
	Max Speed: 2166 MHz
	Current Speed: 1000 MHz
	Status: Populated, Enabled
	Upgrade: <OUT OF SPEC>
	L1 Cache Handle: 0x0021
	L2 Cache Handle: 0x001F
	L3 Cache Handle: Not Provided
	Serial Number: Not Specified
	Asset Tag: FFFF
	Part Number: Not Specified

Handle 0x001F, DMI type 7, 19 bytes
Cache Information
	Socket Designation: Unknown
	Configuration: Enabled, Not Socketed, Level 2
	Operational Mode: Write Back
	Location: Internal
	Installed Size: 1024 KB
	Maximum Size: 1024 KB
	Supported SRAM Types:
		Synchronous
	Installed SRAM Type: Synchronous
	Speed: Unknown
	Error Correction Type: Single-bit ECC
	System Type: Unified
	Associativity: 4-way Set-associative

Handle 0x0020, DMI type 7, 19 bytes
Cache Information
	Socket Designation: Unknown
	Configuration: Enabled, Not Socketed, Level 1
	Operational Mode: Write Back
	Location: Internal
	Installed Size: 32 KB
	Maximum Size: 32 KB
	Supported SRAM Types:
		Synchronous
	Installed SRAM Type: Synchronous
	Speed: Unknown
	Error Correction Type: Single-bit ECC
	System Type: Instruction
	Associativity: 8-way Set-associative

Handle 0x0021, DMI type 7, 19 bytes
Cache Information
	Socket Designation: Unknown
	Configuration: Enabled, Not Socketed, Level 1
	Operational Mode: Write Back
	Location: Internal
	Installed Size: 32 KB
	Maximum Size: 32 KB
	Supported SRAM Types:
		Synchronous
	Installed SRAM Type: Synchronous
	Speed: Unknown
	Error Correction Type: Single-bit ECC
	System Type: Data
	Associativity: 8-way Set-associative

Handle 0x0022, DMI type 127, 4 bytes
End Of Table




[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux