Hi Am 07.10.20 um 15:30 schrieb Daniel Vetter: > We didn't take the kernel_fb_helper_lock mutex, which protects that > code. While at it, simplify the code > - inline the function (originally shared with kgdb I think) > - drop the error tracking and all the complications > - drop the pointless early out, it served nothing > > Signed-off-by: Daniel Vetter > Cc: Maarten Lankhorst > Cc: Maxime Ripard > Cc: Thomas Zimmermann > Cc: David Airlie > Cc: Daniel Vetter > --- > drivers/gpu/drm/drm_fb_helper.c | 26 +++++--------------------- > 1 file changed, 5 insertions(+), 21 deletions(-) > > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index 8697554ccd41..c2f72bb6afb1 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -281,18 +281,12 @@ int drm_fb_helper_restore_fbdev_mode_unlocked(struct drm_fb_helper *fb_helper) > EXPORT_SYMBOL(drm_fb_helper_restore_fbdev_mode_unlocked); > > #ifdef CONFIG_MAGIC_SYSRQ > -/* > - * restore fbcon display for all kms driver's using this helper, used for sysrq > - * and panic handling. > - */ > -static bool drm_fb_helper_force_kernel_mode(void) > +/* emergency restore, don't bother with error reporting */ > +static void drm_fb_helper_restore_work_fn(struct work_struct *ignored) > { > - bool ret, error = false; > struct drm_fb_helper *helper; > > - if (list_empty(&kernel_fb_helper_list)) > - return false; > - > + mutex_lock(&kernel_fb_helper_lock); > list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) { > struct drm_device *dev = helper->dev; > > @@ -300,22 +294,12 @@ static bool drm_fb_helper_force_kernel_mode(void) > continue; > > mutex_lock(&helper->lock); > - ret = drm_client_modeset_commit_locked(&helper->client); > - if (ret) > - error = true; > + drm_client_modeset_commit_locked(&helper->client); > mutex_unlock(&helper->lock); > } > - return error; > + mutex_unlock(&kernel_fb_helper_lock); > } > > -static void drm_fb_helper_restore_work_fn(struct work_struct *ignored) > -{ > - bool ret; > - > - ret = drm_fb_helper_force_kernel_mode(); > - if (ret == true) > - DRM_ERROR("Failed to restore crtc configuration\n"); Is there a specific reason for removing that warning? Even if it doesn't show up on screen, is it not helpful in the kernel's log? In any case, the rest looks good. Acked-by: Thomas Zimmermann Best regards Thomas > -} > static DECLARE_WORK(drm_fb_helper_restore_work, drm_fb_helper_restore_work_fn); > > static void drm_fb_helper_sysrq(int dummy1) > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer