Re: Debugging spurious wakeup

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

 



Hello,

Yesterday I took the time to read the document about GPE / PME handling and I
compared the wakeup code of my BIOS with the examples in that document.

I noticed that some vital wakeup code was executed only when a variable (PMSX)
was set. That variable was set by a global NPME() method and that method was
called by _OSC().

And in my logs I had this message:

giu 19 18:31:06 zanac kernel: acpi PNP0A08:00: _OSC: OS supports
[ExtendedConfig ASPM ClockPM Segments MSI]
giu 19 18:31:06 zanac kernel: \_SB_.PCI0:_OSC invalid UUID
giu 19 18:31:06 zanac kernel: _OSC request data:1 1f 0
giu 19 18:31:06 zanac kernel: acpi PNP0A08:00: _OSC failed (AE_ERROR);
disabling ASPM

A googled a bit and found the following bugzilla entry, that applies to my
situation perfectly: the NEXP variable isn't set anywhere, yet in Windows it
is.

https://bugzilla.kernel.org/show_bug.cgi?id=36932

So I disassembled the DSDT, I removed any test involving the NEXP variable in
the code, I recompiled and replaced the table with GRUB.

And then the _OSC() invocation completed successfully, giving me a working WOL
without spontaneous wakeups!

What puzzles me is that the location of the NEXP variables is marked as ACPI
NVS and the kernel never touches that region of memory. What is Windows doing
differently that makes it work?

However I consider the issue solved now. I leave also the link to the Arch
forum post where I describe in detail what I did for future reference.

https://bbs.archlinux.org/viewtopic.php?pid=1538895#p1538895

The document 074_GPE_Routing.doc proved very useful and I want to thank you for
your hints and the help I got from people in this mailing list.

Gianluca

PS: the PME ReqID marks the source of the latest wakeup and was then a lead of
the device responsible for the wakeup. But the problem was elsewhere...

On Mon, Jun 22, 2015 at 09:48:55PM +0200, Gianluca Anzolin wrote:
> Thank you for sharing your experience, the document about GPE and PME
> seems useful to pinpoint the issue: as explained in another email, I
> found a difference in lspci when the undesired wakeup occurs and it
> involves PME signals:
> 
> -		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> +		RootSta: PME ReqID 0400, PMEStatus- PMEPending-
> 
> The problem is, these difference is not related to the network PCI
> device but to the PCI bridge behind which the network device sits.
> 
> If I find something useful (unlikely, but never lose the hope) I'll send
> an update :)
> 
> Thank you,
> 
> Gianluca
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in



[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