How to find acpi drivers for specific acpi device / Solving kernel suspend bug

Solution 1:

What is the issue?

One line in your dmesg output stands out. That is:

[    2.543596] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM

Active State Power Management or ASPM is required for power saving features upon which the suspend process relies. This issue is reported here. The quoted text below from Launchpad is pretty much what you need to know.

This error message occurs when the kernel runs the root PCI bridge _OSC control method in your firmware and the execution fails, perhaps due to a bug in the firmware or perhaps it does not exist. The kernel hence cannot determine the features supported or capabilities provided by the device (as specified by your firmware) and hence has to disable PCIe ASPM (Active State Power Management).

The downside of Active State Power Management not being enabled is that the machine is less power efficient, however, one can force this on with the kernel boot parameter "pcie_aspm=force" however, forcing this on may cause system lockups.


Why are you having this issue?

Your laptop as it seems is manufactured for use with the Windows OS and although Ubuntu and other Linux distributions will mimic the Windows OS calls to the BIOS, there are times when this transaction is unsuccessful on ether ends and such issues happen.

The issues caused by this can range from just suspend issues to WiFi, Ethernet, battery, hard drives, SSDs and others. Hence my comment above:

are you having wifi/ethernet problems? is your battery/power behaving okay? do you have external USB devices connected? have you noticed other issues?

Some of these issues appear with certain Linux kernels and disappear with others. They might differ but, are unlikely to disappear completely until the communication between system BIOS and the kernel is fixed. The ideal fix is a BIOS update that addresses ASPM.


How to resolve this issue?

I would suggest the following solutions in the following sequence until this issue is resolved:

  1. Update your Ubuntu to a newer version. A newer kernel might have better support for your BIOS.
  2. Update your BIOS. A newer BIOS version might provide better communication with your OS.
  3. Press e at GRUB boot menu and try the kernel boot parameter pcie_aspm=force. Refer to this answer on how to add boot parameters.

Solution 2:

My system has an Intel Thunderbolt controller the same as one of your acpi matches:

$ lspci | grep 39
39:00.0 USB controller: Intel Corporation DSL6340 USB 3.1 Controller [Alpine Ridge]

About a year ago my suspend/resume broke so I had to create this script:

#!/bin/bash

# Original script was using /bin/sh but shellcheck reporting warnings.

# NAME: custom-xhci_hcd
# PATH: /lib/systemd/system-sleep
# CALL: Called from SystemD automatically
# DESC: Suspend broken for USB3.0 as of Oct 25/2018 various kernels all at once

# DATE: Oct 28 2018.

# NOTE: From comment #61 at: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/522998

TMPLIST=/tmp/xhci-dev-list

# Original script was: case "${1}" in hibernate|suspend)

case $1/$2 in
  pre/*)
    echo "$0: Going to $2..."
    echo -n '' > $TMPLIST
          for i in `ls /sys/bus/pci/drivers/xhci_hcd/ | egrep '[0-9a-z]+\:[0-9a-z]+\:.*$'`; do
              # Unbind xhci_hcd for first device XXXX:XX:XX.X:
               echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/unbind
           echo "$i" >> $TMPLIST
          done
        ;;
  post/*)
    echo "$0: Waking up from $2..."
    for i in `cat $TMPLIST`; do
              # Bind xhci_hcd for first device XXXX:XX:XX.X:
              echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/bind
    done
    rm $TMPLIST
        ;;
esac

Create the file using: sudo -H gedit /lib/systemd/system-sleep/custom-xhci_hcd

Copy and paste the above code into the file, save the file and exit gedit.

Mark it executable using sudo chmod a+x /lib/systemd/system-sleep/custom-xhci_hcd

Reboot.