Skip to content
Snippets Groups Projects
  • Daniel Vetter's avatar
    1b1d5397
    drm/fb-helper: don't sleep for screen unblank when an oopps is in progress · 1b1d5397
    Daniel Vetter authored
    Otherwise the system will burn even brighter and worse, leave the user
    wondering what's going on exactly.
    
    Since we already have a panic handler which will (try) to restore the
    entire fbdev console mode, we can just bail out. Inspired by a patch
    from Konstantin Khlebnikov. The callchain leading to this, cut&pasted
    from Konstantin's original patch:
    
    callstack:
    panic()
    bust_spinlocks(1)
    unblank_screen()
    vc->vc_sw->con_blank()
    fbcon_blank()
    fb_blank()
    info->fbops->fb_blank()
    drm_fb_helper_blank()
    drm_fb_helper_dpms()
    drm_modeset_lock_all()
    mutex_lock(&dev->mode_config.mutex)
    
    Note that the entire locking in the fb helper around panic/sysrq and
    kdbg is ... non-existant. So we have a decent change of blowing up
    everything. But since reworking this ties in with funny concepts like
    the fbdev notifier chain or the impressive things which happen around
    console_lock while oopsing, I'll leave that as an exercise for braver
    souls than me.
    
    v2: Drop the -EBUSY return value I've copied, we don't need it since
    the we'll take care of things ourselves anyway.
    
    Cc: Konstantin Khlebnikov <khlebnikov@openvz.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    References: https://patchwork.kernel.org/patch/1878181/
    
    
    Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    1b1d5397
    History
    drm/fb-helper: don't sleep for screen unblank when an oopps is in progress
    Daniel Vetter authored
    Otherwise the system will burn even brighter and worse, leave the user
    wondering what's going on exactly.
    
    Since we already have a panic handler which will (try) to restore the
    entire fbdev console mode, we can just bail out. Inspired by a patch
    from Konstantin Khlebnikov. The callchain leading to this, cut&pasted
    from Konstantin's original patch:
    
    callstack:
    panic()
    bust_spinlocks(1)
    unblank_screen()
    vc->vc_sw->con_blank()
    fbcon_blank()
    fb_blank()
    info->fbops->fb_blank()
    drm_fb_helper_blank()
    drm_fb_helper_dpms()
    drm_modeset_lock_all()
    mutex_lock(&dev->mode_config.mutex)
    
    Note that the entire locking in the fb helper around panic/sysrq and
    kdbg is ... non-existant. So we have a decent change of blowing up
    everything. But since reworking this ties in with funny concepts like
    the fbdev notifier chain or the impressive things which happen around
    console_lock while oopsing, I'll leave that as an exercise for braver
    souls than me.
    
    v2: Drop the -EBUSY return value I've copied, we don't need it since
    the we'll take care of things ourselves anyway.
    
    Cc: Konstantin Khlebnikov <khlebnikov@openvz.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    References: https://patchwork.kernel.org/patch/1878181/
    
    
    Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.