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)