On Thu, May 07, 2020 at 11:06:40AM +0200, Thomas Zimmermann wrote: > Suspending failed because there's no mode if the CRTC is being > disabled. Early-out in this case. This fixes runtime PM for ast. > > v3: > * fixed commit message > v2: > * added Tested-by/Reported-by tags > * added Fixes tags and CC (Sam) > * improved comment > > Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx> > Reported-by: Cary Garrett <cogarre@xxxxxxxxx> > Tested-by: Cary Garrett <cogarre@xxxxxxxxx> > Fixes: b48e1b6ffd28 ("drm/ast: Add CRTC helpers for atomic modesetting") > Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> > Cc: Gerd Hoffmann <kraxel@xxxxxxxxxx> > Cc: Dave Airlie <airlied@xxxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Sam Ravnborg <sam@xxxxxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> # v5.6+ > --- > drivers/gpu/drm/ast/ast_mode.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c > index 7a9f20a2fd303..0cbbb21edb4e1 100644 > --- a/drivers/gpu/drm/ast/ast_mode.c > +++ b/drivers/gpu/drm/ast/ast_mode.c > @@ -801,6 +801,9 @@ static int ast_crtc_helper_atomic_check(struct drm_crtc *crtc, > return -EINVAL; > } > > + if (!state->enable) > + return 0; /* no mode checks if CRTC is being disabled */ > + > ast_state = to_ast_crtc_state(state); > > format = ast_state->format; hey, I'm seeing a regression that I bisected down to this change. I installed GNOME on a couple of different server models that have AMI-based BMCs, which provide a web-based graphics display (virtual KVM). When I enter the lock screen on current upstream kernels, the display freezes, and I see the following messages appear in syslog whenever I generate keyboard/mouse events on that display: Jan 19 20:34:53 starbuck gnome-shell[5002]: Failed to post KMS update: drmModeAtomicCommit: Invalid argument Jan 19 20:34:53 starbuck gnome-shell[5002]: Page flip discarded: drmModeAtomicCommit: Invalid argument Jan 19 20:34:53 starbuck gnome-shell[5002]: Failed to post KMS update: drmModeAtomicCommit: Invalid argument Jan 19 20:34:53 starbuck gnome-shell[5002]: Page flip discarded: drmModeAtomicCommit: Invalid argument Jan 19 20:34:53 starbuck gnome-shell[5002]: Failed to post KMS update: drmModeAtomicCommit: Invalid argument Jan 19 20:34:53 starbuck gnome-shell[5002]: Page flip discarded: drmModeAtomicCommit: Invalid argument Jan 19 20:34:53 starbuck gnome-shell[5002]: Failed to post KMS update: drmModeAtomicCommit: Invalid argument If I back out this change w/ the following patch (code has evolved slightly preventing a clean revert), then the lock screen once again behaves normally: diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c index 956c8982192b..336c545c46f5 100644 --- a/drivers/gpu/drm/ast/ast_mode.c +++ b/drivers/gpu/drm/ast/ast_mode.c @@ -1012,9 +1012,6 @@ static int ast_crtc_helper_atomic_check(struct drm_crtc *crtc, const struct drm_format_info *format; bool succ; - if (!crtc_state->enable) - return 0; /* no mode checks if CRTC is being disabled */ - ast_state = to_ast_crtc_state(crtc_state); format = ast_state->format; Apologies for noticing so long after the fact. I don't normally run a desktop environment on these servers, I just happened to be debugging something recently that required it. -dann