Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93263e52 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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.
parents ba3b7d82 89ced125
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -1544,10 +1544,10 @@ int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper)
	if (!fb_helper->fb)
	if (!fb_helper->fb)
		return 0;
		return 0;


	drm_modeset_lock_all(dev);
	mutex_lock(&fb_helper->dev->mode_config.mutex);
	if (!drm_fb_helper_is_bound(fb_helper)) {
	if (!drm_fb_helper_is_bound(fb_helper)) {
		fb_helper->delayed_hotplug = true;
		fb_helper->delayed_hotplug = true;
		drm_modeset_unlock_all(dev);
		mutex_unlock(&fb_helper->dev->mode_config.mutex);
		return 0;
		return 0;
	}
	}
	DRM_DEBUG_KMS("\n");
	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,
	count = drm_fb_helper_probe_connector_modes(fb_helper, max_width,
						    max_height);
						    max_height);
	mutex_unlock(&fb_helper->dev->mode_config.mutex);

	drm_modeset_lock_all(dev);
	drm_setup_crtcs(fb_helper);
	drm_setup_crtcs(fb_helper);
	drm_modeset_unlock_all(dev);
	drm_modeset_unlock_all(dev);

	drm_fb_helper_set_par(fb_helper->fbdev);
	drm_fb_helper_set_par(fb_helper->fbdev);


	return 0;
	return 0;
+4 −0
Original line number Original line Diff line number Diff line
@@ -61,6 +61,10 @@ static int udl_get_modes(struct drm_connector *connector)
	int ret;
	int ret;


	edid = (struct edid *)udl_get_edid(udl);
	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
	 * We only read the main block, but if the monitor reports extension