Bug 10485

Summary: Interrupt storm when lid closed on Acer Travelmate 8104
Product: ACPI Reporter: Jools Wills (jools)
Component: ACPICA-CoreAssignee: ykzhao (yakui.zhao)
Status: REJECTED DOCUMENTED    
Severity: normal CC: f, yakui.zhao
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.24 Subsystem:
Regression: No Bisected commit-id:
Attachments: output of dmesg
output of lspci -vvxxx
output of acpidump
try the custom DSDT

Description Jools Wills 2008-04-19 07:44:15 UTC
Distribution: Ubuntu 
Hardware Environment: Acer travelmate 8104wlmi laptop
Software Environment: Hardy (But tested with stock kernel)
Problem Description:
On Closing the lid, continuous acpi events are created, and so CPU is maxed out as the acpid script continually runs the lid event script. The bug is the same as on http://bugzilla.kernel.org/show_bug.cgi?id=5853 (But a different acer model). I assume there may well be something buggy in the bios etc, but there are no newer versions available for my model. (Im on bios 3c25)

Steps to reproduce:
close the lid (or press the lid button) for a few seconds.
Look at the /var/log/acpid log and see the lid script triggered many times.
or
stop acpid. do
jools@travelmate:/etc$ sudo cat /proc/acpi/event

press the lid button/close the lid for a few seconds.

and you will get:
button/lid LID 00000080 0000000a
button/lid LID 00000080 0000000b
button/lid LID 00000080 0000000c
button/lid LID 00000080 0000000d
button/lid LID 00000080 0000000e
button/lid LID 00000080 0000000f
button/lid LID 00000080 00000010
button/lid LID 00000080 00000011
button/lid LID 00000080 00000012
button/lid LID 00000080 00000013
button/lid LID 00000080 00000014
... etc

I will attach the output of acpidump/dmesg and lspci
Comment 1 Jools Wills 2008-04-19 07:46:39 UTC
Created attachment 15817 [details]
output of dmesg
Comment 2 Jools Wills 2008-04-19 07:47:24 UTC
Created attachment 15818 [details]
output of lspci -vvxxx
Comment 3 Jools Wills 2008-04-19 07:47:40 UTC
Created attachment 15819 [details]
output of acpidump
Comment 4 ykzhao 2008-04-21 06:47:10 UTC
Created attachment 15828 [details]
try the custom DSDT

Will you please try the custom DSDT and see whether the problem still exists?
How to use the custom DSDT can be found in the following:
http://www.lesswatts.org/projects/acpi/faq.php

Thanks.
Comment 5 Jools Wills 2008-04-21 07:31:42 UTC
Wow thanks!

This DSDT fixes the problem - a problem which has meant i have been unable to close my laptop lid with the power on for >2 years!.

Now there is one event for lid closed and one for lid open. Does this mean that the bug is in the bios for the machine ? If so, what do you think are the chances of getting Acer to fix this (The bug seems to affect many different models of laptop from them). Or is it something which can be worked around in the kernel ?
Comment 6 ykzhao 2008-04-21 23:21:07 UTC
Hi,Jools
   Thanks for the test. It is obvious that the problem is caused by the broken BIOS.
   On this laptop the lid device is connected with the GPIO(0x0B) , which controls the status bit (0x1B) of GPE status register. (Of course the LID polarity control bit should be defined).In such cases the correct flowchart of lid event handler should be following: 
   a. flip the polarity of LIDP bit
   b. send the notify event(0x80) to the LID device
  
   Unfortunately the polarity of LIDP bit is not flipped in the lid event handler. And after the LID is pressed, the correspond GPE status bit is always set, which causes the ACPI interrupt storm. In the custom DSDT the polarity of LIDP bit is flipped in the LID event handler.
 >   Method (_L1B, 0, NotSerialized)     {
  >          Not (LIDP, LIDP)
   >         Notify (\_SB.LID, 0x80)
    >    }

   IMO this is a BIOS bug and it is appropriate to fix it by upgrading BIOS.( It is difficult to write the work around patch in kernel).
Comment 7 ykzhao 2008-04-21 23:30:11 UTC
Will you please confirm whether windows can work on this laptop?
Comment 8 Jools Wills 2008-04-22 05:12:31 UTC
It does work with windows. Some bits of the laptop still only work on windows (the MMC reader - unsupported o2micro unit on linux and the smartcard reader with shipped smartcard)

Unfortunately this is the latest bios version already on the laptop. All the versions seem to have this bug, and other Acer models of laptop also seem to have it. Perhaps someone in the kernel development has some contact with the devs at Acer?
Comment 9 Shaohua 2008-04-22 19:49:05 UTC
when you said windows work, does it work with a fresh windows installation without any drivers provided by Acer?
Comment 10 Jools Wills 2008-04-23 00:26:15 UTC
It does work yes. Although you don't of course get full chipset support until you download the intel chipset drivers, the gfx card drivers and so on. Or are you after some other information?
Comment 11 ykzhao 2008-04-23 19:57:11 UTC
Thanks for the test.
Will you please confirm whether the lid still works after the lid is closed/reopend?
Comment 12 Jools Wills 2008-04-24 10:43:52 UTC
On Linux the lid works perfectly/opening/closing/opening/closing etc.
Or do you mean for me to test it on windows ?
Comment 13 ykzhao 2008-04-24 22:20:20 UTC
Yes. Please test it on windows. 
It will be great if you confirm whether the LID event is received on windows when the LID is reopened.
Thanks.
Comment 14 ykzhao 2008-04-30 01:35:22 UTC
Hi, Jools
    This bug is related with bios bug. But it is very strange that windows can work well on it.
    Will you please try to do the following test on windows?
    a. change the Power option for LID :the default action is to enter standby mode. Please choose to do nothing when close the lid. 
    b. press the LID several times and see whether the system can work well.
    c. restore the power default option for the LID.( the default option is to enter stand by). And then press the lid switch to check whether the system can enter the standby mode.
    
    Thanks.
    
Comment 15 Jools Wills 2008-05-08 16:38:52 UTC
Sorry for this delayed reply. Finally I had the courage to boot into windows ;-)

I removed all the acer epowermanagement software. and set lid closed to "do nothing". I then pressed the lid button for 10 seconds. then let it go and repeated the process a few times. The machine did nothing (apart from backlight turning off - which is done in hardware)

I then changed the lid button to "go into standby" mode and pressed the lid button. The machine went into standby correctly, and i was able to return from sandby mode fine. I could also repeat this process and it worked ok.
Comment 16 ykzhao 2008-05-28 19:21:42 UTC
Hi, Jools
    Thanks for test. 
    Will you please do the following test again on windows again?
   a. change the Power option for LID :the default action is to enter standby
mode. Please choose to do nothing when close the lid. 
   b. Open the windows task manager and switch to the Performance property sheet. 
   c. close the LID button for 10 seconds and reopen it. Please check whether the cpu usage is very high in cpu uage history diagram.
   
    Thanks.
Comment 17 Jools Wills 2008-05-29 16:32:32 UTC
Thanks for your reply. I have tested this. There was no noticeable high cpu on the graph. There were tiny bumps (2-4% cpu use) at the point the lid button was pressed/released, but nothing while it was being held down.
Comment 18 ykzhao 2008-05-30 00:57:11 UTC
Hi, Jools
    Thanks for the test. From your description it seems that windows can work well on this laptop. But the result is different with what I have tested.
    There is a laptop in hand on which the GPIO is used by the LID device. The AML code related with the LID event is listed in the following:
 >   Method (_L1B, 0, Serialized)
        {
      >        TGPP (0x0B) // flip the LID polarity
     >         Notify (\_SB.LID, 0x80) // send the LID notification
    >    }
    Because the LID polarity is flipped, windows/Linux can work well on this laptop. But if the custom DSDT is used on windows(delete the AML code in BIOS that flips the LID polarity), there also exists the interrupt storm  when the LID is closed. And the CPU usage is very high.
    
    I don't know why windows can work well on your laptop.
    Will you please double check it again?
    thanks.    
Comment 19 Stephan Dale 2008-07-28 04:21:55 UTC
I can verify that DSDT provided fixes the continuous lid event problem on an Acer Travelmate 8104 WLMi running linux-2.6.18-gentoo-r6. A single event is generated when the lid button is pressed and again when released. Many thanks. (I've written a brief article on how to apply the DSDT: http://mindspill.net/computing/linux-notes/acpi/custom-dsdt.html)
Comment 20 ykzhao 2008-08-26 00:39:38 UTC
As this is an obvious BIOS bug, it had better be fixed by upgrading BIOS. IMO this bug can be rejected. 
Of course the problem can be fixed by the custom DSDT.
Comment 21 Jools Wills 2008-09-05 04:29:06 UTC
unfortunately there is no bios upgrade though to fix it. And it does seem to work ok under windows. However, having a patch for the DSDT is appreciated.
Comment 22 ykzhao 2009-07-17 01:35:02 UTC
Hi, Jools
    Will you please attach the output of dmidecode?
    Thanks.