Bug 8451
Summary: | Vaio hangs when power connected | ||
---|---|---|---|
Product: | Power Management | Reporter: | Jim McElwaine (jnm11) |
Component: | Other | Assignee: | Zhang Rui (rui.zhang) |
Status: | REJECTED INVALID | ||
Severity: | blocking | CC: | astarikovskiy, devzero, protasnb, Robert.Moore |
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | kernel-2.6.20-1.2948.fc6 | Subsystem: | |
Regression: | --- | Bisected commit-id: | |
Attachments: |
print out which GPE is fired when ac is plugged in
/var/log/messages of crash with and without patch acpidump output .config from kernel compile ./acpidump > acpidump_output dmesg from after a crash /var/log/messages smartctl -a /dev/sda >smart ./acpidump --addr 0x7FE76C73 --length 0x000001EA -o aslb1 ./acpidump --addr 0x7FE76E5D --length 0x00000089 -o aslb2 ./acpidump --addr 0x7FE769B9 --length 0x00000235 -o aslb3 ./acpidump --addr 0x7FE76BEE --length 0x00000085 -o aslb4 Patch to eliminate improper warning message Linuxized version of previous patch |
Description
Jim McElwaine
2007-05-08 03:36:41 UTC
Jim, Is the problem still there? Sounds like hardware problem. Does it work with any other kernel/OS? Thanks. I upgraded to fedora core 8 last week and the problem still exists. There is something related to the time the power is disconnected. If it is up to around 5 seconds it doesn't tend to crash. If it is disconnectd longer before reconnection then it crashes. This suggests to me that it is not a hardware problem though I suppose it could be. I don't know how to find out the cause. How do I disable all power management or enable more verbose logging? Created attachment 13637 [details]
print out which GPE is fired when ac is plugged in
please apply this patch and see if there is something print out when the ac adapter is plugged in.
And please attach the acpidump as well.
It is definitely not the hardware. If I keep the system in grub rather than booting linux there are no problems with removing and inserting the power. Where do I find acpidump. I need either an rpm package or the source code. All I can find are .deb packages I'm compiling the patch Please download and build the pmtools-20070511.tar.gz at http://www.kernel.org/pub/linux/kernel/people/lenb/acpi/utils/ Created attachment 13644 [details]
/var/log/messages of crash with and without patch
This attachment shows the laptop crashing twice. once with the original kernel and once with the patch apply and compiled. I had trouble applying the patch with the rpm build system and ended up modifying the file by hand.
Hi, Jim,
It seems that GPE 0x17 keeps on firing when you connect the power.
> There is something related to the time the power is disconnected.
Please do the following test:
dmesg -c
echo 0x40 > /sys/module/acpi/parameters/debug_layer
echo 0x8800001f > /sys/module/acpi/parameters/debug_level
disconnect and connect the power
and attach the dmesg output in both crash and non-crash case.
In order to get to know what the GPE 0x17 stands for, please attach the acpidump.
Created attachment 13904 [details]
acpidump output
I can't execute
echo 0x40 > /sys/module/acpi/parameters/debug_layer
echo 0x8800001f > /sys/module/acpi/parameters/debug_level
since /sys/module/acpi/parameters/debug_layer does not exist on my system.
I get an error permission denied.
I've tried recompiling my kernel with acpi debugging but it didn't help.
How do I get this to work
Please try the latest kernel release, say 2.6.23 And please make sure CONFIG_ACPI_DEBUG is set. I am using 2.6.23 and I have compiled with 2.6.23 but there is only one file in the directory [jnm11@thalay parameters]$ ls /sys/module/acpi/parameters/ acpica_version I'm attaching my .config. What do I need to change? Created attachment 13960 [details]
.config from kernel compile
please set CONFIG_ACPI_DEBUG close this bug because there is no response from the bug reporter. I have compiled it with the flags. then if i plug and unplug and it doesn't crash when I run dmesg again I get dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (3), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (3), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (3), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (3), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (3), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (3), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (3), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (3), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (3), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (3), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated [root@thalay parameters]# Jim, could you please make acpidump by utility from pmtools package available here: http://www.lesswatts.org/projects/acpi/utilities.php Created attachment 15126 [details]
./acpidump > acpidump_output
here is the current acpidump
so far I have been unable to get it to crash with debugging enabled Could you crash it with debugging disabled? It will still crash but less often Seems to need to be disconnected for longer to crash on reconnection and then not every time. What information should I attach /var/log/dmesg contains information from the next time I boot up There is nothing in /var/log/messages exert form /var/log/messages ... Mar 3 22:02:49 thalay kernel:last message repeated 3 times Mar 3 22:02:49 thalay kernel: dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated Mar 3 22:02:50 thalay kernel: dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated Mar 3 22:02:50 thalay kernel:last message repeated 3 times Mar 3 22:02:50 thalay kernel: dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated Mar 3 22:02:52 thalay smartd[2544]: Device: /dev/sda, SMART Usage Attribute: 195 Hardware_ECC_Recovered changed from 73 to 72 Mar 3 22:07:39 thalay ntpd[2065]: synchronized to 212.13.194.71, stratum 2 crash occurred here then reboot Mar 3 22:14:06 thalay rsyslogd: [origin software="rsyslogd" swVersion="2.0.2" x-pid="1968" x-info="http://www.rsyslog.com"][x-configInfo udpReception="No" udpPort="514" tcpReception="No" tcpPort="0"] restart Mar 3 22:14:06 thalay kernel: rklogd 2.0.2, log source = /proc/kmsg started. ... Created attachment 15127 [details]
dmesg from after a crash
this is dmesg from after a crash but nothing seems to be there relating to the crash
Created attachment 15128 [details]
/var/log/messages
/var/log/messages
from after a crash and reboot. Nothing form the crash appears to be there
Just realised my comments are a little ambiguous. It crashes less often with the kernel I have compiled with CONFIG_ACPI_DEBUG true, but still crashes. I don't know how to collect any information from a crash however. Jim, there is some message from potentially dangerous sources: smartd and iTCO watchdog timer... Could you please check that disk is ok and disable watchdog altogether? Also, is it possible for you to upgrade to more recent 2.6.24 kernel? I've added Robert Moore to CC list, as he is an expert in ACPICA internals. smartctl tests indicate that the disc is ok. I will attach the file I am downloading the 2.6.24 kernel and will report when that is compiled How do I disable the watchdog? Created attachment 15129 [details]
smartctl -a /dev/sda >smart
disc test
smartctl -t short /dev/sda
smartctl -a /dev/sda > smart
I don't see anything overtly suspicious in the DSDT and 3 SSDTs. However, there exist 4 different SSDTs that can be dynamically loaded: Name (SSDT, Package (0x0C) { "CPU0IST ", 0x7FE76C73, 0x000001EA, "CPU1IST ", 0x7FE76E5D, 0x00000089, "CPU0CST ", 0x7FE769B9, 0x00000235, "CPU1CST ", 0x7FE76BEE, 0x00000085 }) Commands to dump these tables should look something like this: acpidump --addr 0x7FE76C73 --length 0x000001EA -o aslb acpidump --addr 0x7FE76E5D --length 0x00000089 -o aslb acpidump --addr 0x7FE769B9 --length 0x00000235 -o aslb acpidump --addr 0x7FE76BEE --length 0x00000085 -o aslb Please run these and post the results. Created attachment 15142 [details]
./acpidump --addr 0x7FE76C73 --length 0x000001EA -o aslb1
Created attachment 15143 [details]
./acpidump --addr 0x7FE76E5D --length 0x00000089 -o aslb2
Created attachment 15144 [details]
./acpidump --addr 0x7FE769B9 --length 0x00000235 -o aslb3
Created attachment 15145 [details]
./acpidump --addr 0x7FE76BEE --length 0x00000085 -o aslb4
now running with kernel 2.6.24.2 echo 0x40 > /sys/module/acpi/parameters/debug_layer echo 0x8800001f > /sys/module/acpi/parameters/debug_level output of dmesg -c after unplugging power CPU0 attaching NULL sched-domain. CPU1 attaching NULL sched-domain. CPU0 attaching sched-domain: domain 0: span 00000003 groups: 00000001 00000002 domain 1: span 00000003 groups: 00000003 CPU1 attaching sched-domain: domain 0: span 00000003 groups: 00000002 00000001 domain 1: span 00000003 groups: 00000003 dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (5), truncated Clocksource tsc unstable (delta = -141845786 ns) [ output of dmesg -c on reinserting power if it doesn't crash CPU0 attaching NULL sched-domain. CPU1 attaching NULL sched-domain. CPU0 attaching sched-domain: domain 0: span 00000003 groups: 00000001 00000002 CPU1 attaching sched-domain: domain 0: span 00000003 groups: 00000002 00000001 dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (4), truncated dsobject-0456 [00] ds_build_internal_pack: Package List length larger than NumElements count (3), truncated [
>Package List length larger than NumElements count (4), truncated
This looks like a bug in the debug output code and does not necessarily mean that anything is wrong. The message is incorrectly emitted when the package is correct.
Created attachment 15155 [details]
Patch to eliminate improper warning message
Here's a patch to eliminate the package warning. It's not in Linux format, but should be easy to convert
The patch is a bit of a nuisance as the variable names are all different to 2.6.24.2 arg not Arg element_count not ElementCount etc... which kernel is the patch for ? It's the original untranslated ACPICA code. Robert maintains it, then Len translates it to Linux. FreeBSD uses it as-is. Created attachment 15164 [details]
Linuxized version of previous patch
Here is the linuxized version of the patch, created with "acpisrc -l -d". Line numbers are not valid, however, but the variable names will be correct. Let me know if this is helpful.
Thanks, though, I think I successfully made all the changes by hand. I left it compiling when I came to work this morning so I'll see tonight. Jim These are the outputs now when power is unplugged and plugged back in when it doesn't crash dmesh -c CPU0 attaching NULL sched-domain. CPU1 attaching NULL sched-domain. CPU0 attaching sched-domain: domain 0: span 00000003 groups: 00000001 00000002 domain 1: span 00000003 groups: 00000003 CPU1 attaching sched-domain: domain 0: span 00000003 groups: 00000002 00000001 domain 1: span 00000003 groups: 00000003 [root@thalay jnm11]# dmesg -c Clocksource tsc unstable (delta = -139949034 ns) CPU0 attaching NULL sched-domain. CPU1 attaching NULL sched-domain. CPU0 attaching sched-domain: domain 0: span 00000003 groups: 00000001 00000002 CPU1 attaching sched-domain: domain 0: span 00000003 groups: 00000002 00000001 [ What else can I do to help track down this bug? did you try any other OS besides linux? any possibility to try that? (temporarly swapping hdd or clonezilla the disk contents somewhere else) I don't have the possibility of trying another OS is there any difference if you boot with "acpi_apic_instance=2"? Does this still happen if you boot with "maxcpus=1"? If yes, what about "maxcpus=0"? I can't get it to crash anymore no matter how many times I plug and unplug. Something in the recent updates must have fixed the bug. Okay. Close it and mark it as UNREPRODUCIBLE It turns out that the bug is still there. It's just that it occurs much less often. If the laptop is disconnected from mains power for a while then very occasionally it will hang when power is reconnected. Previously it was nearly every time. Well, I don't know how to debug this bug as it's random and hard to reproduce. :( Well it's much less of a problem now so I don't mind if you decide to close it. Is there any further way to instrument the kernel do trace what happens the power is reconnected. The problem at the moment is that there is never anything in the logs. I suppose this might require a serial connection or somesuch. Is there any other way to dump out data to the network or disks before the crash occurs for later analysis? |