entering gnome lockscreen causes astfb displays to hang
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
When I install ubuntu-desktop on servers with an AMI BMC, I find a remote desktop running on the BMC's virtual KVM display hangs when I transition to the lock screen. The screen either goes blank and fails to wake up on keyboard/mouse input - or the lock screen appears but freezes, leaving the clock display frozen in time.
Correlated with the issue are the following messages in /var/log/syslog, which are emitted when I move the mouse cursor while the lock screen is frozen:
Jan 19 20:34:53 starbuck gnome-shell[5002]: Failed to post KMS update: drmModeAtomicCo
Jan 19 20:34:53 starbuck gnome-shell[5002]: Page flip discarded: drmModeAtomicCo
Jan 19 20:34:53 starbuck gnome-shell[5002]: Failed to post KMS update: drmModeAtomicCo
Jan 19 20:34:53 starbuck gnome-shell[5002]: Page flip discarded: drmModeAtomicCo
Jan 19 20:34:53 starbuck gnome-shell[5002]: Failed to post KMS update: drmModeAtomicCo
Jan 19 20:34:53 starbuck gnome-shell[5002]: Page flip discarded: drmModeAtomicCo
Jan 19 20:34:53 starbuck gnome-shell[5002]: Failed to post KMS update: drmModeAtomicCo
A commonality of these systems is that they use the astfb driver.
I've found that this issue follows the kernel version. If I run a jammy desktop with jammy's 5.15 kernel, this issue occurs. If I downgrade just the kernel back to focal's 5.4, the issue vanishes.
Changed in linux (Ubuntu): | |
status: | New → Confirmed |
tags: | added: rls-jj-incoming |
I found that this issue also impacts upstream kernels, so I bisected and found that the problem was introduced in this commit:
commit d6ddbd5c97d1b91 56646ac5c42b885 1edd664ee2
Author: Thomas Zimmermann <email address hidden>
Date: Thu May 7 11:06:40 2020 +0200
drm/ast: Don't check new mode if CRTC is being disabled
I verified that this issue can still be reproduced with current upstream (currently between v5.16 & v5.17-rc1), and that reverting the above patch[*] causes it to go away.
[*] The patch doesn't cleanly revert because the underlying code has evolved a bit, but it's straightforward to back out:
diff --git a/drivers/ gpu/drm/ ast/ast_ mode.c b/drivers/ gpu/drm/ ast/ast_ mode.c .336c545c46f5 100644 gpu/drm/ ast/ast_ mode.c gpu/drm/ ast/ast_ mode.c helper_ atomic_ check(struct drm_crtc *crtc,
index 956c8982192b.
--- a/drivers/
+++ b/drivers/
@@ -1012,9 +1012,6 @@ static int ast_crtc_
const struct drm_format_info *format;
bool succ;
- if (!crtc_ state-> enable) crtc_state( crtc_state) ;
- return 0; /* no mode checks if CRTC is being disabled */
-
ast_state = to_ast_
format = ast_state->format;