mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 06:34:11 +08:00
drm/crtc-helper: skip locking checks in panicking path
Skip locking checks in drm_helper_*_in_use() if they are called in panicking path. See similar code in drm_warn_on_modeset_not_all_locked(). After panic information has been output, these WARN_ONs go off outputing a lot of lines and scrolling the panic information out of the screen. Here is a partial call trace showing how execution reaches them: ? drm_helper_crtc_in_use() ? __drm_helper_disable_unused_functions() ? several *_set_config functions ? drm_fb_helper_restore_fbdev_mode() Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Sergei Antonov <saproj@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
3640da2faa
commit
ba6f582606
@ -29,6 +29,7 @@
|
|||||||
* Jesse Barnes <jesse.barnes@intel.com>
|
* Jesse Barnes <jesse.barnes@intel.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/kernel.h>
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/moduleparam.h>
|
#include <linux/moduleparam.h>
|
||||||
|
|
||||||
@ -88,7 +89,13 @@ bool drm_helper_encoder_in_use(struct drm_encoder *encoder)
|
|||||||
struct drm_connector *connector;
|
struct drm_connector *connector;
|
||||||
struct drm_device *dev = encoder->dev;
|
struct drm_device *dev = encoder->dev;
|
||||||
|
|
||||||
WARN_ON(!mutex_is_locked(&dev->mode_config.mutex));
|
/*
|
||||||
|
* We can expect this mutex to be locked if we are not panicking.
|
||||||
|
* Locking is currently fubar in the panic handler.
|
||||||
|
*/
|
||||||
|
if (!oops_in_progress)
|
||||||
|
WARN_ON(!mutex_is_locked(&dev->mode_config.mutex));
|
||||||
|
|
||||||
list_for_each_entry(connector, &dev->mode_config.connector_list, head)
|
list_for_each_entry(connector, &dev->mode_config.connector_list, head)
|
||||||
if (connector->encoder == encoder)
|
if (connector->encoder == encoder)
|
||||||
return true;
|
return true;
|
||||||
@ -112,7 +119,13 @@ bool drm_helper_crtc_in_use(struct drm_crtc *crtc)
|
|||||||
struct drm_encoder *encoder;
|
struct drm_encoder *encoder;
|
||||||
struct drm_device *dev = crtc->dev;
|
struct drm_device *dev = crtc->dev;
|
||||||
|
|
||||||
WARN_ON(!mutex_is_locked(&dev->mode_config.mutex));
|
/*
|
||||||
|
* We can expect this mutex to be locked if we are not panicking.
|
||||||
|
* Locking is currently fubar in the panic handler.
|
||||||
|
*/
|
||||||
|
if (!oops_in_progress)
|
||||||
|
WARN_ON(!mutex_is_locked(&dev->mode_config.mutex));
|
||||||
|
|
||||||
list_for_each_entry(encoder, &dev->mode_config.encoder_list, head)
|
list_for_each_entry(encoder, &dev->mode_config.encoder_list, head)
|
||||||
if (encoder->crtc == crtc && drm_helper_encoder_in_use(encoder))
|
if (encoder->crtc == crtc && drm_helper_encoder_in_use(encoder))
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user