Поиск по блогу

воскресенье, 23 августа 2020 г.

Черный экран при выходе из hibernate

Иногда после выхода из спящего режима нет изображения на экране ноутбука. Чаще это случается если ноутбук ушел в спящий режим подключенным к док-станции (в этом случае изображение выводится на два внешних монитора, а экран ноутбука отключен), а выходит из спящего режима будучи отключенным от док-станции. В такой момент можно подключиться по SSH и сделать перезагрузку или попытаться переключиться в консоль и затем обратно в иксы. Иногда последнее помогает, но не всегда. Не помню конда это началось, но из-за нехватки времени и спонтанности ошибки решение откладывалось до лучших времен. Сегодня воспроизвелось еще раз и пора с этим разобраться.

Подключился по SSH и первым делом попробовал вывести список подключенных мониторов через xrandr (сначала нужно вытащить значение XAUTHORITY и для этого у меня есть скриптик grabenv)

$ eval $(grabenv xfdesktop)
$ xrandr -q

но вместо вывода списка xrandr завис а в лог сыплются ошибки вида

[drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [CRTC:55:pipe B] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [CRTC:69:pipe C] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [CONNECTOR:96:DP-2] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [PLANE:42:plane 1B] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [PLANE:56:plane 1C] flip_done timed out
------------[ cut here ]------------
vblank wait timed out on crtc 2
WARNING: CPU: 2 PID: 1011 at drivers/gpu/drm/drm_vblank.c:1092 drm_wait_one_vblank+0x15a/0x170 [drm]
Modules linked in: rfcomm xt_nat xt_tcpudp veth xt_conntrack ipt_MASQUERADE nf_conntrack_netlink xfrm_user xfrm_algo nft_counter xt_addrtype nft_compat nft_cha
 nls_cp437 videobuf2_memops btusb iwlmvm dell_smbios btrtl videobuf2_v4l2 vfat snd_hwdep btbcm dcdbas fat intel_rapl_perf joydev btintel videobuf2_common dell_
 x_tables autofs4 ext4 crc16 mbcache jbd2 crc32c_generic fscrypto ecb algif_skcipher af_alg dm_crypt dm_mod hid_generic usbhid hid crct10dif_pclmul crc32_pclmu
CPU: 2 PID: 1011 Comm: Xorg Tainted: G        W  OE     4.19.0-10-amd64 #1 Debian 4.19.132-1
Hardware name: Dell Inc. Latitude E7270/0K4CNR, BIOS 1.22.8 10/08/2019
RIP: 0010:drm_wait_one_vblank+0x15a/0x170 [drm]
Code: e9 0f 0b e9 39 ff ff ff 48 89 e6 4c 89 f7 e8 0d 00 38 e9 45 85 e4 0f 85 1b ff ff ff 89 ee 48 c7 c7 50 99 16 c0 e8 f0 69 33 e9 <0f> 0b e9 06 ff ff ff e8 d
RSP: 0018:ffffbe6482e63a60 EFLAGS: 00010286
RAX: 0000000000000000 RBX: ffff9f1c779a0000 RCX: 0000000000000006
RDX: 0000000000000007 RSI: 0000000000000086 RDI: ffff9f1c85b166b0
RBP: 0000000000000002 R08: 0000000000000521 R09: 0000000000000004
R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000000
R13: 0000000000001735 R14: ffff9f1c7821eaf8 R15: ffff9f1c7ee1d800
FS:  00007fd8691cff00(0000) GS:ffff9f1c85b00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f03580140f8 CR3: 000000023aaa2005 CR4: 00000000003606e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 ? finish_wait+0x80/0x80
 skl_update_crtcs+0x1e5/0x320 [i915]
 ? __finish_swait+0x31/0x50
 intel_atomic_commit_tail+0x35d/0xd40 [i915]
 intel_atomic_commit+0x2a7/0x2e0 [i915]
 ? drm_mode_getcrtc+0x180/0x180 [drm]
 drm_atomic_helper_set_config+0x75/0x80 [drm_kms_helper]
 drm_mode_setcrtc+0x18d/0x6d0 [drm]
 ? unix_stream_recvmsg+0x53/0x70
 ? drm_mode_getcrtc+0x180/0x180 [drm]
 drm_ioctl_kernel+0xa1/0xf0 [drm]
 drm_ioctl+0x205/0x3a0 [drm]
 ? drm_mode_getcrtc+0x180/0x180 [drm]
 ? hrtimer_start_range_ns+0x1b7/0x2c0
 do_vfs_ioctl+0xa4/0x630
 ? __sys_recvmsg+0x83/0xa0
 ksys_ioctl+0x60/0x90
 __x64_sys_ioctl+0x16/0x20
 do_syscall_64+0x53/0x110
 entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x7fd8698ff427
Code: 00 00 90 48 8b 05 69 aa 0c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c
RSP: 002b:00007fff7d0aa338 EFLAGS: 00003246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 0000000000000008 RCX: 00007fd8698ff427
RDX: 00007fff7d0aa370 RSI: 00000000c06864a2 RDI: 000000000000000d
RBP: 00007fff7d0aa370 R08: 000000000000005a R09: 00007fd8681c4000
R10: 0000000000000000 R11: 0000000000003246 R12: 00000000c06864a2
R13: 000000000000000d R14: 00007fd8681c4000 R15: 0000000000000000
---[ end trace d3629140e770685d ]---
[drm:drm_atomic_helper_wait_for_flip_done [drm_kms_helper]] *ERROR* [CRTC:69:pipe C] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [CRTC:69:pipe C] flip_done timed out
[drm:drm_atomic_helper_wait_for_flip_done [drm_kms_helper]] *ERROR* [CRTC:69:pipe C] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [CRTC:69:pipe C] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [CONNECTOR:98:DP-3] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [PLANE:56:plane 1C] flip_done timed out

Поиск по багтрекеру вывел на ошибку #93782 ([i9xx TV][BISECT] vblank wait timeout on crtc), которую вроде исправили начиная с ядер 5.x. Чтобы проверить это нужно установить ядро из бэкпортов

$ sudo apt-get update
$ sudo apt-get install -t buster-backports linux-image-amd64 linux-headers-amd64 firmware-misc-nonfree
$ sudo reboot

После нескольких циклов hibernate ошибка не воспроизвелась - посмотрю как будет дальше.

Комментариев нет:

Отправка комментария