diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-14 10:55:20 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-14 10:55:20 -0700 | 
| commit | 93263e5283d5c2bc447bc42956f4fa58a3a0a63a (patch) | |
| tree | f30b3539f1a259e22247efab51f5131ab73ec134 | |
| parent | ba3b7d827e96e90e3df82695c96b3f9a666c0d82 (diff) | |
| parent | 89ced125472b8551c65526934b7f6c733a6864fa (diff) | |
| download | olio-linux-3.10-93263e5283d5c2bc447bc42956f4fa58a3a0a63a.tar.xz olio-linux-3.10-93263e5283d5c2bc447bc42956f4fa58a3a0a63a.zip  | |
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Pull drm fixes from Dave Airlie:
 "One fix for a hotplug locking regressions, and one fix for an oops if
  you unplug the monitor at an inopportune moment on the udl device."
* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
  drm/fb-helper: Fix locking in drm_fb_helper_hotplug_event
  udl: handle EDID failure properly.
| -rw-r--r-- | drivers/gpu/drm/drm_fb_helper.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/udl/udl_connector.c | 4 | 
2 files changed, 9 insertions, 3 deletions
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 59d6b9bf204..892ff9f9597 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1544,10 +1544,10 @@ int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper)  	if (!fb_helper->fb)  		return 0; -	drm_modeset_lock_all(dev); +	mutex_lock(&fb_helper->dev->mode_config.mutex);  	if (!drm_fb_helper_is_bound(fb_helper)) {  		fb_helper->delayed_hotplug = true; -		drm_modeset_unlock_all(dev); +		mutex_unlock(&fb_helper->dev->mode_config.mutex);  		return 0;  	}  	DRM_DEBUG_KMS("\n"); @@ -1558,9 +1558,11 @@ int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper)  	count = drm_fb_helper_probe_connector_modes(fb_helper, max_width,  						    max_height); +	mutex_unlock(&fb_helper->dev->mode_config.mutex); + +	drm_modeset_lock_all(dev);  	drm_setup_crtcs(fb_helper);  	drm_modeset_unlock_all(dev); -  	drm_fb_helper_set_par(fb_helper->fbdev);  	return 0; diff --git a/drivers/gpu/drm/udl/udl_connector.c b/drivers/gpu/drm/udl/udl_connector.c index fe5cdbcf263..b44d548c56f 100644 --- a/drivers/gpu/drm/udl/udl_connector.c +++ b/drivers/gpu/drm/udl/udl_connector.c @@ -61,6 +61,10 @@ static int udl_get_modes(struct drm_connector *connector)  	int ret;  	edid = (struct edid *)udl_get_edid(udl); +	if (!edid) { +		drm_mode_connector_update_edid_property(connector, NULL); +		return 0; +	}  	/*  	 * We only read the main block, but if the monitor reports extension  |