brightness setting and sleep/suspend (echo mem > /sys/power/state) , s2ram and s2disk fail for 5.4.0 and s2disk fail for 5.4.22

Bug #1864930 reported by Marian Klein
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

1) After resuming from suspend (uswsusp/s2ram) and/or after resuming from "echo mem > /sys/power/state" there is a black screen on laptop after resume with 5.4.0-14-generic kernel only. Kernel seems to be working as CTRL+ALT+F2 and CTRL+ALT+DEL restarts laptop.

 A) 3 Different combinations of this distro with other kernels work well:

  kubunut20.04 + linux-image-5.3.0-40-generic
   (copied from kubuntu 19.10 from /lib/modules/5.3.0-40-generic and /boot/vmlinuz-5.3.0-40-generic)

Installed from
https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.6-rc3/

  kubuntu20.04 + linux-image-unsigned-5.5.6-050506-generic is working.
  kubuntu20.04 + linux-image-unsigned-5.6.0-050600rc3-generic is working.

  B) This kernel 5.4.0-14-generic when copied manually into kubuntu 19.10 behaves the same as in 20.04 (NOT WORKING for suspend to ram)

2) setting brightness with keys on laptop keyboard does not work for this kernel 5.4.0-14-generic only
Neither using this command line method
marian@kubuntu2004:~/Downloads$ cat /sys/class/backlight/intel_backlight/max_brightness
255
marian@kubuntu2004:~/Downloads$ cat /sys/class/backlight/intel_backlight/max_brightness
255
marian@kubuntu2004:~/Downloads$ cat /sys/class/backlight/intel_backlight/actual_brightness
255
marian@kubuntu2004:~/Downloads$ cat /sys/class/backlight/intel_backlight/brightness
242
marian@kubuntu2004:~/Downloads$ echo 200 | sudo tee /sys/class/backlight/intel_backlight/brightness
200
marian@kubuntu2004:~/Downloads$ cat /sys/class/backlight/intel_backlight/brightness
Again kernel 5.3 copied into kubuntu20.04 got working brigthness keys.

However this works for all tested kernels above (including 5.4.0-14-generic)
xrandr --output eDP-1 --brightness 0.8

3) after uswsusp/hibernate (s2disk) and "echo disk > /sys/power/state" do not seem to resume/thaw
for those kernels: linux-image-5.4.0-14-generic, linux-image-unsigned-5.5.6-050506-generic , linux-image-unsigned-5.6.0-050600rc3-generic, on the other hand kernel linux-image-5.3.0-40-generic manually copied from kubuntu 19.10 into kubuntu 20.04 seems to be working fine when thawing/resuming from hibernation.

  Again I tested different combination of kernels and distros for this issue.
  This kernel (5.4.0-14-generic) also does not work for hibernate/resume even when copied from kubuntu20.04 into kubuntu19.10

4)
Starting kubuntu without installation from daily build from 25th Feb 2020 shows the same problem for brightness setting and for black screen after resuming from sleep.

http://cdimage.ubuntu.com/kubuntu/daily-live/current/

Note I always recreated imagerd in target place when copied kernels manually:
update-initramfs -u -k 5.3.0-40-generic

ProblemType: Bug
DistroRelease: Ubuntu 20.04
Package: linux-image-5.4.0-14-generic 5.4.0-14.17
ProcVersionSignature: Ubuntu 5.4.0-14.17-generic 5.4.18
Uname: Linux 5.4.0-14-generic x86_64
ApportVersion: 2.20.11-0ubuntu18
Architecture: amd64
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC0: marian 1214 F.... pulseaudio
CurrentDesktop: KDE
Date: Wed Feb 26 22:20:29 2020
Lsusb:
 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 001 Device 003: ID 8087:0a2b Intel Corp.
 Bus 001 Device 002: ID 05c8:0815 Cheng Uei Precision Industry Co., Ltd (Foxlink) HP Wide Vision FHD Camera
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
MachineType: HP HP Spectre x360 Convertible 13-ae0xx
ProcEnviron:
 LANGUAGE=
 TERM=xterm-256color
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 SHELL=/bin/bash
ProcFB: 0 i915drmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-5.4.0-14-generic root=/dev/mapper/sysvg-ub2004deboot ro resume=/dev/nvme0n1p8 quiet splash resume=/dev/nvme0n1p8 vt.handoff=7
RelatedPackageVersions:
 linux-restricted-modules-5.4.0-14-generic N/A
 linux-backports-modules-5.4.0-14-generic N/A
 linux-firmware 1.186
SourcePackage: linux-5.4
UpgradeStatus: No upgrade log present (probably fresh install)
WifiSyslog:

dmi.bios.date: 01/07/2019
dmi.bios.vendor: AMI
dmi.bios.version: F.24
dmi.board.asset.tag: Base Board Asset Tag
dmi.board.name: 83B9
dmi.board.vendor: HP
dmi.board.version: 56.43
dmi.chassis.type: 31
dmi.chassis.vendor: HP
dmi.chassis.version: Chassis Version
dmi.modalias: dmi:bvnAMI:bvrF.24:bd01/07/2019:svnHP:pnHPSpectrex360Convertible13-ae0xx:pvr:rvnHP:rn83B9:rvr56.43:cvnHP:ct31:cvrChassisVersion:
dmi.product.family: 103C_5335KV HP Spectre
dmi.product.name: HP Spectre x360 Convertible 13-ae0xx
dmi.product.sku: 2QH34EA#ABU
dmi.sys.vendor: HP

Revision history for this message
Marian Klein (sandokan9) wrote :
Revision history for this message
Marian Klein (sandokan9) wrote :

To be precise
With kernel 5.4.0-14-generic
"echo disk > /sys/power/state" does not seem to spend time on saving memory to disk like s2disk does , but laptop switches off (I assume it hibernates) and resume will not pick up where I left it. It starts normally.
With kernels linux-image-unsigned-5.5.6-050506-generic and linux-image-unsigned-5.6.0-050600rc3-generic . The actual commands s2disk and "echo disk > /sys/power/state" return immediately as if something was wrong during memory saving. Laptop does not switches off.

Revision history for this message
Marian Klein (sandokan9) wrote :

I tested 5.4.22:
https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.4.22/linux-image-unsigned-5.4.22-050422-generic_5.4.22-050422.202002240833_amd64.deb

Brigthness, s2ram and "echo mem > /sys/power/state" is working fine.

"echo disk > /sys/power/state" gets laptop into hibernate (it switches off), but thawing does not work.

Revision history for this message
Marian Klein (sandokan9) wrote :

sudo s2disk does not work for 5.4.22 for my laptop "HP Spectre x360 Convertible 13-ae0xx".
It returns immediately without switching off laptop.
Note "echo disk > /sys/power/state" switches off my laptop, but thawing not working.

summary: brightness setting and sleep/suspend (echo mem > /sys/power/state) ,
- s2ram and s2disk do not work linux-image-5.4.0-14-generic (default
- kernel for LTS candidate)
+ s2ram and s2disk do not work for 5.4.0 and s2disk not working for 5.4.22
summary: brightness setting and sleep/suspend (echo mem > /sys/power/state) ,
- s2ram and s2disk do not work for 5.4.0 and s2disk not working for 5.4.22
+ s2ram and s2disk fail for 5.4.0 and s2disk fail for 5.4.22
Revision history for this message
Marian Klein (sandokan9) wrote :

I am looking into
https://wiki.ubuntu.com/DebuggingKernelHibernate
and I will provide more info.

Revision history for this message
Marian Klein (sandokan9) wrote :
Download full text (4.0 KiB)

I booted into minimal non-GUI ubuntu20.04 1.4G with 5.4.22-050422 kernel

I removed all possible kernel modules by repeating few times next two commands:
lsmod | grep 0$ | sed 's/^\([^ ]*\).*/rmmod \1/g' > rmmods.sh
source rmmods.sh

root@kubuntu2004:/home/marian# cat /mnt/ub2004min/root/lsmod_fail_s2disk_5.4.22-050422-generic.txt
Module Size Used by
crct10dif_pclmul 16384 1
i915 1982464 1
drm_kms_helper 184320 1 i915
drm 487424 3 drm_kms_helper,i915
i2c_algo_bit 16384 1 i915
fb_sys_fops 16384 1 drm_kms_helper
syscopyarea 16384 1 drm_kms_helper
sysfillrect 16384 1 drm_kms_helper
sysimgblt 16384 1 drm_kms_helper
sch_fq_codel 20480 1
autofs4 45056 2
nvme 45056 2
nvme_core 102400 4 nvme
video 49152 1 i915

dmesg

[ 1242.425985] Filesystems sync: 0.000 seconds
[ 1242.425988] Freezing user space processes ... (elapsed 0.001 seconds) done.
[ 1242.427321] OOM killer disabled.
[ 1242.427555] PM: Marking nosave pages: [mem 0x00000000-0x00000fff]
[ 1242.427557] PM: Marking nosave pages: [mem 0x00058000-0x00058fff]
[ 1242.427558] PM: Marking nosave pages: [mem 0x0009e000-0x000fffff]
[ 1242.427562] PM: Marking nosave pages: [mem 0x28e10000-0x28e11fff]
[ 1242.427563] PM: Marking nosave pages: [mem 0x2c8f5000-0x2c955fff]
[ 1242.427567] PM: Marking nosave pages: [mem 0x2ce62000-0x2ce62fff]
[ 1242.427568] PM: Marking nosave pages: [mem 0x2e4de000-0x2fffefff]
[ 1242.427750] PM: Marking nosave pages: [mem 0x30000000-0xffffffff]
[ 1242.430613] PM: Basic memory bitmaps created
[ 1242.431558] PM: Preallocating image memory... done (allocated 163748 pages)
[ 1242.788826] PM: Allocated 654992 kbytes in 0.35 seconds (1871.40 MB/s)
[ 1242.788827] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[ 1242.790321] printk: Suspending console(s) (use no_console_suspend to debug)
[ 1243.078179] ACPI: EC: interrupt blocked
[ 1243.086425] ACPI: Preparing to enter system sleep state S4
[ 1243.098213] ACPI: EC: event blocked
[ 1243.098214] ACPI: EC: EC stopped
[ 1243.098214] PM: Saving platform NVS memory
[ 1243.100159] Disabling non-boot CPUs ...
[ 1243.101448] smpboot: CPU 1 is now offline
[ 1243.103291] smpboot: CPU 2 is now offline
[ 1243.104851] smpboot: CPU 3 is now offline
[ 1243.106522] smpboot: CPU 4 is now offline
[ 1243.108200] smpboot: CPU 5 is now offline
[ 1243.109928] smpboot: CPU 6 is now offline
[ 1243.111501] smpboot: CPU 7 is now offline
[ 1243.113364] PM: Creating hibernation image:
[ 1243.597752] PM: Need to copy 161991 pages
[ 1243.597756] PM: Normal pages needed: 161991 + 1024, available pages: 3967507
[ 1244.202907] PM: Hibernation image created (161991 pages copied)
[ 1243.113966] PM: Restoring platform NVS memory
[ 1243.114826] ACPI: EC: EC started
[ 1243.115498] Enabling non-boot CPUs ...
[ 1243.115562] x86: Booting SMP configuration:
[ 1243.115563] smpboot: Booting Node 0 Processor 1 APIC 0x2
[ 1243.116889] CPU1 is up
[ 1243.116938] smpboot: Booting Node 0 Processor 2 APIC 0x4
[ 1243.118201] CPU2 is up
[ 1243.118241] smpboo...

Read more...

Revision history for this message
Marian Klein (sandokan9) wrote :

I also installed
apt install linux-image-5.3.0-1008-oracle.
This kernel works for s2ram, s2disk , brightness , but the special keys (setting brightness,switch for external monitor, speaker volume, media playback keys, plane mode key) on my laptop keyboard do not work.

kernels linux-image-5.3.0-1008-oracle, linux-image-5.3.0-1011-gcp work for s2disk, but s2ram does not work (by design?)

linux-image-5.3.0-1009-azure, linux-image-5.3.0-1009-kvm do not boot for me.

Revision history for this message
Marian Klein (sandokan9) wrote :

Ops, mistake:
linux-image-5.3.0-1010-aws and linux-image-5.3.0-1011-gcp work for s2disk, but s2ram does not work (by design?). linux-image-5.3.0-1008-oracle is working for both s2disk and s2ram.

Revision history for this message
Marian Klein (sandokan9) wrote :

sudo /usr/lib/systemd/systemd-sleep hibernate
for kernel 5.3.0-40-generic switches off laptop, but does not resume/thaw to original state (it boots normally)

Revision history for this message
Marian Klein (sandokan9) wrote :

The same goes for 5.4.22-050422-generic:
sudo /usr/lib/systemd/systemd-sleep hibernate
for kernel 5.4.22-050422-generic switches off laptop, but does not resume/thaw to original state (it boots normally)

Revision history for this message
Marian Klein (sandokan9) wrote :

Problem identified and reported upstream
https://bugzilla.kernel.org/show_bug.cgi?id=206713

Revision history for this message
Marian Klein (sandokan9) wrote :
Download full text (3.3 KiB)

patch exist, please apply for ubuntu 20.04:

marian@kubuntu2004:~/kernelubuntu/linux$ git diff
diff --git a/include/linux/swap.h b/include/linux/swap.h
index de2c67a33b7e..da1dc5a338cc 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -456,6 +456,7 @@ extern void swap_free(swp_entry_t);
 extern void swapcache_free_entries(swp_entry_t *entries, int n);
 extern int free_swap_and_cache(swp_entry_t);
 extern int swap_type_of(dev_t, sector_t, struct block_device **);
+extern void swap_relockall(void);
 extern unsigned int count_swap_pages(int, int);
 extern sector_t map_swap_page(struct page *, struct block_device **);
 extern sector_t swapdev_block(int, pgoff_t);
diff --git a/kernel/power/user.c b/kernel/power/user.c
index 77438954cc2b..bfef2097edaa 100644
--- a/kernel/power/user.c
+++ b/kernel/power/user.c
@@ -271,6 +271,8 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
                        break;
                }
                error = hibernation_restore(data->platform_support);
+ if (!error)
+ swap_relockall();
                break;

        case SNAPSHOT_FREE:
@@ -372,10 +374,16 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
                         */
                        swdev = new_decode_dev(swap_area.dev);
                        if (swdev) {
+ struct block_device *bd;
                                offset = swap_area.offset;
- data->swap = swap_type_of(swdev, offset, NULL);
+ data->swap = swap_type_of(swdev, offset, &bd);
                                if (data->swap < 0)
                                        error = -ENODEV;
+
+ inode_lock(bd->bd_inode);
+ bd->bd_inode->i_flags &= ~S_SWAPFILE;
+ inode_unlock(bd->bd_inode);
+ bdput(bd);
                        } else {
                                data->swap = -1;
                                error = -EINVAL;
diff --git a/mm/swapfile.c b/mm/swapfile.c
index dab43523afdd..c7c83d3a313b 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -1799,6 +1799,32 @@ int swap_type_of(dev_t device, sector_t offset, struct block_device **bdev_p)
        return -ENODEV;
 }

+/* Re-lock swap devices after resuming from userspace suspend. */
+void swap_relockall(void)
+{
+ int type;
+
+ spin_lock(&swap_lock);
+ for (type = 0; type < nr_swapfiles; type++) {
+ struct swap_info_struct *sis = swap_info[type];
+ struct block_device *bdev = bdgrab(sis->bdev);
+
+ /*
+ * uswsusp only knows how to suspend to block devices, so we
+ * can skip swap files.
+ */
+ if (!(sis->flags & SWP_WRITEOK) ||
+ !(sis->flags & SWP_BLKDEV))
+ continue;
+
+ inode_lock(bdev->bd_inode);
+ bdev->bd_inode->i_flags |= S_SWAPFILE;
+ inode_unlock(bdev->bd_inode);
+ bdput(bdev);
+ ...

Read more...

Revision history for this message
cosine (mvanross) wrote :

The hibernation bug is likely linked to #1866984
(also no solution there...)

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in linux-5.4 (Ubuntu):
status: New → Confirmed
affects: linux-5.4 (Ubuntu) → linux (Ubuntu)
Revision history for this message
Kai-Heng Feng (kaihengfeng) wrote :

What's the output of `cat /sys/power/mem_sleep`?

Revision history for this message
Marian Klein (sandokan9) wrote :

Contact
<email address hidden>

The problem is properly fixed upstream for later 5.4.X and 5.6.X versions. Copy that.

https://lkml.org/lkml/2020/4/22/938

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.