Message ID | 20200507090640.21561-1-tzimmermann@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] drm/ast: Don't check new mode if CRTC is being disabled | expand |
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@suse.de> > Reported-by: Cary Garrett <cogarre@gmail.com> > Tested-by: Cary Garrett <cogarre@gmail.com> > Fixes: b48e1b6ffd28 ("drm/ast: Add CRTC helpers for atomic modesetting") > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: Gerd Hoffmann <kraxel@redhat.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: Sam Ravnborg <sam@ravnborg.org> > Cc: <stable@vger.kernel.org> # v5.6+ Yeah legacy crtc helpers just let you shut stuff off and no checks. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> > --- > 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; > -- > 2.26.0 >
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@suse.de> > Reported-by: Cary Garrett <cogarre@gmail.com> > Tested-by: Cary Garrett <cogarre@gmail.com> > Fixes: b48e1b6ffd28 ("drm/ast: Add CRTC helpers for atomic modesetting") > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: Gerd Hoffmann <kraxel@redhat.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: Sam Ravnborg <sam@ravnborg.org> > Cc: <stable@vger.kernel.org> # 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
Hi Am 21.01.22 um 16:25 schrieb dann frazier: [...] > > 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 Thanks for reporting. I'll investigate soon. Best regards Thomas > > 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
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;