Fixing suspend on ACPI 5.0 motherboards

2015-06-09: Current state on Linux 4.0

Today I got really pissed of to see than mw Debian testing machine was still unable to resume correctly from suspend out of the box…
So I decided to upgrade to kernel 4.0 and update motherboard BIOS to the latest release: no luck.

While looking at Google about that issue I finally found out some information… right here, on my own blog. That was quite disappointing.

I figured out I still had all these error message, just like 3 years ago:

So what happened with that patch fixing the issue in 2012 ? Does it got rejected ? Lost somewhere in some random git space ?
I checked the official git master branch and the fix was applied. The idea was good again, no luck.

Finally, I figured out the issue was triggered by some (new?) ACPI/SATA related stuff that were probably not existing in 2012.

The proper fix is simply to boot your kernel with libata.noacpi=1 and resume works again, YAY \o/

To make it permanent on Debian, edit /etc/default/grub and set the following line:

Then regenerate grub config by running update-grub.

After a reboot I checked my ACPI related error message:

That’s a lot less and suspend seems to be reliable so far.


Original post from 2012

There’s a bunch of new motherboard coming which uses ACPI 5.0 however it’s not supported yet by Linux kernel.

If you own a recent Asus motherboard (seems to append on P67, H67 & Z68 chipset based series) and your computer suspend just fine but never wakes up, you may really love this post 😉

Here we go, check if your is affected by this bug:

If you see lines looking like this:

Great, you should be able to fix your suspend issue !

Next step is quite easy. We’re going to build latest 3.2.1 kernel patched with ACPICA_Fix_to_allow_region_arguments_to_reference_other_scopes.

Install latest 3.2 kernel from Debian and compilation tools:

Download and extract 3.2.1 kernel sources:

Download the patch attached to this blog post, and apply it:

Copy debian’s 3.2 kernel config:

Start building…. (Use -j N, N = number of CPU cores)

It will ask for a few new config options (drivers added between 3.2.0-rc7 and 3.2.1), just accept default settings.

Install new kernel:

On my system, the initrd has been updated automatically using the debian way. Despite it’s 100Mb (??), it works as excepted.

After rebooting on this new kernel, you should be able to suspend and resume sucessfully.

References:
GIT commit in linux-next
ArchLinux forum topic who gave me the right fix
ACPI devel mailing list archive

Known motherboard affected by this bug:
Asus P8Z68-V LX
Asus P8Z68-V LE
Asus P8H67

Future:
According to a co-worker (kernel developper), the patch has been committed to linux-next GIT repository, so it should be integrated to official kernel release starting on version 3.4.