Bug 55691
Summary: | Laptop overheats, no fan control - Toshiba u500 | ||
---|---|---|---|
Product: | ACPI | Reporter: | nmc (naomechateies+bugs) |
Component: | Power-Fan | Assignee: | Zhang Rui (rui.zhang) |
Status: | CLOSED INSUFFICIENT_DATA | ||
Severity: | high | CC: | aaron.lu |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 3.5.0-26-generic | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: |
acpidump
/sys/class/thermal custom DSDT /sys/class/thermal - fresh boot /sys/class/thermal - fresh boot + suspend customized DSDT lspci output, as requested |
Description
nmc
2013-03-24 05:37:16 UTC
please attach the acpidump output of your laptop. please attach the output of "grep . /sys/class/thermal/*/*" of your laptop after a fresh boot. Created attachment 96231 [details]
acpidump
ACPI dump. Got a 'Wrong checksum for generic table!' message at the end.
Created attachment 96241 [details]
/sys/class/thermal
Somehow, running the grep command you asked for, turns on the fan. I had experienced something similar in a previous install where running 'acpi -t' would have the same effect. From the /sys/class/thermal output, we can see that all the ACPI controlled fans are in ON state (cur_state = 1). But you said that the fan will not start until overheat in comment #0, please double check if the fan is spinning when you get the /sys/class/thermal output in comment #3. Or please make sure that the fan is not spinning after a fresh boot and then get the output of "grep . /sys/class/thermal/*/*" again. please attach the output of "grep . /sys/class/thermal/*/*" after resume from suspend. Created attachment 96251 [details] custom DSDT it seems that there are some AML errors in your ACPI table, could you please redo the test (grep . /sys/class/thermal/*/* when fan is cool and when resume from suspend) with the customized DSDT table? HOWTO override the dsdt can be found at https://lesswatts.org/projects/acpi/overridingDSDT.php Created attachment 96321 [details]
/sys/class/thermal - fresh boot
When I ran this command the CPU had been under full load for some time (from a fresh boot), and the fan was coming on for very short bursts (other than those bursts it was simply not running). After I closed the program that was causing that load, the fan appeared to be running. It appears that the grep command does affect something in the fan control.
Created attachment 96331 [details]
/sys/class/thermal - fresh boot + suspend
This is the output from the grep command after a fresh boot and suspend sequence (i.e., I didn't run the command before suspending the laptop).
Thank you for the help thus far! Can I try to override the DSDT or is there anything you want me to do before that? Created attachment 96341 [details]
customized DSDT
please apply this custom dsdt, and do the following
1. echo 1 > /sys/module/acpi/parameters/aml_debug_output
2. try to burn the processors by large workload (the temperature should goes up but the fan is not spinning at this time)
3. dmesg > dmesg-1
4. cat /sys/class/thermal/thermal_zone0/temp (the fan should begin to spinning a few seconds later, right?)
5. dmesg > dmesg-2
6. wait until the fan begins to sping
7. dmesg > dmesg-3
so that I can see what happens during step 2/4/6.
Is there a way to apply your DSDT without (re)building the kernel? I do not think so. is there any reason that you can not do this? (In reply to comment #11) > Is there a way to apply your DSDT without (re)building the kernel? If your kernel config has CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y, then see Documentation/acpi/initrd_table_override.txt for details on how to override dsdt with initrd. (In reply to comment #12) > I do not think so. > is there any reason that you can not do this? Other than the time it takes, do I have to redo it every time I want to update the kernel? (In reply to comment #13) > (In reply to comment #11) > > Is there a way to apply your DSDT without (re)building the kernel? > > If your kernel config has CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y, then see > Documentation/acpi/initrd_table_override.txt for details on how to override > dsdt with initrd. Sadly, it appears it doesn't (Ubuntu 12.04)...but thanks for the answer! I just add some debug information in the custom dsdt to see what causes the problem. so please give it a try, or else I'll close this bug report as I can not debug this issue. :) BTW, please attach the lspci output of your laptop. Created attachment 106001 [details]
lspci output, as requested
Can you please provide more info on how to include/use the custom DSDT you have provided? Here are two links: https://01.org/linux-acpi/documentation/overriding-dsdt http://lxr.linux.no/#linux+v3.9.7/Documentation/acpi/initrd_table_override.txt BTW, I would be surprise if Ubuntu doesn't set this config by default. Fedora provides this: [aaron@aaronlu linux]$ grep ACPI_INITRD /boot/config-3.9.6-200.fc18.x86_64 CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y BTW, from Ubuntu's manual page, it seems they support an easier way to override DSDT in initrd: /etc/mkinitrd/DSDT If this file exists, it will be appended to the initrd in a way that causes it to be loaded by ACPI. http://manpages.ubuntu.com/manpages/dapper/man8/mkinitrd.8.html So you just need to move the new dsdt file to /etc/mkinitrd/DSDT and re-generate initrd file should be OK. Bug closed as there is no response from the bug reporter. please feel free if you can do the test requested in comment #10. |