1

I have built a new ACPI table to enable s3 suspend on Lenovo Ideapad Slim 5. The instructions end up with a cpio archive called acpi_override in /boot, and the following modification to /etc/default/grub

GRUB_EARLY_INITRD_LINUX_CUSTOM="acpi_override"

S3 is supported when booting the mainline kernel 5.12 But with the stock kernel, S3 is not supported.

Secure boot is off.

When I examine /boot/grub/grub.cfg the three kernels, I see

initrd /boot/acpi_override /boot/initrd....

which looks correct. Certainly, it works for the mainline kernel.

dmesg | grep ACPI :

ACPI: DSDT ACPI table found in initrd [kernel/firmware/acpi/dsdt.aml]

followed by

ACPI: Table Upgrade: install [DSDT-LENOVO-CB-01   ]

these messages are the same in the 5.12 (working) kernel.

I don't know how to debug this further. The problem is that in 5.12 suspend works, but it does not resume (display does not start). I'm hoping that in 5.11 resume works, but obviously, I can't get it to suspend at all in 5.11 without S3 working.

UPDATE both the ACPI table and resume from suspend works in mainline 5.10 kernel. There is a bug introduced in 5.11 which breaks AMD graphics when s3 is used, apparently. It may be fixed in 5.13. https://gitlab.freedesktop.org/drm/amd/-/issues/1503

The bug where S3 does not work in the ubuntu 5.11 kernel is something else.

UPDATE Oct 2021 In kernel 5.13, modern suspend is working well on the IdeaPad (which previously required S3 to be enabled) and also my ThinkPad X1 Gen 9. So we are not using S3 suspend anymore with Linux (Ubuntu on the Ideapad, Fedora on the Thinkpad)

Tim Richardson
  • 2,294
  • 3
  • 25
  • 43

2 Answers2

0

I'm fighting a similar issue with an IdeaPad 5 14ARE05 but I started with Ubuntu 21.04 and wasn't aware that the 5.11 kernel was the culprit. I tried patching DSDT and overriding the ACPI tables at boot as you did, but although it seemed to go OK, S3 wasn't shown as supported.

I found a hidden BIOS menu with an option to enable S3 directly, but then I ran into another issue. Perhaps it will work for you, and might be worth a try. Here's what I did (not sure whether it's the same on a Slim 5):

First, in the regular BIOS, disable OneKeyBattery (saving the setting) and then shut down the machine.

Then, while shut down, type this 15-key sequence (the pattern will become clear when you do it): F4 4 R F V F5 5 T G B F6 6 Y H N.

Then start up directly into BIOS (via the F2 key). On the 14ARE05, there are more menus than usual: Debug, Information, Configuration, Main, Advanced, Security, Power, Boot, AMD PBS, AMD CBS, and Exit. I don't always get into this mode on the first attempt and sometimes have to try a second time.

Advanced>ACPI and Power seemed promising, but I found what I was looking for under AMD PBS. That menu takes a few seconds to load and has a lot of options, which scroll off the bottom of the page. Somewhere towards the bottom is "S3/Modern Standby Support". I changed this from "Modern Standby Enable" to "S3 Enable".

With that BIOS setting (and no ACPI override), Ubuntu shows S3 is supported, and selecting suspend puts the laptop to sleep with power light pulsing, etc., and it wakes up with no problems. BUT...it only works once (at least for me); the second time it's suspended it goes to sleep but immediately wakes on its own, and won't even shut down (or rather will shut down but then immediately restart). The only way I can get it to turn off is by holding down the power button, after which it behaves normally again until the next suspend/resume cycle. I'm still looking for a fix or workaround.

unipay
  • 1
0

I have similar issues with my new kernel at Ubuntu for my Lenovo Yoga. The overriding worked before but with the new kernel it doesn't. Still it shows the found overriding acpi DSDT table and reports the load of the new vaues. When you are looking at

/sys/firmware/acpi/tables 

I find now a DSDT1 and a DSDT2 table. With the old kernel there's only one DSDT file.