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

Commit 92881524 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-intel-fixes-2016-04-07' of git://anongit.freedesktop.org/drm-intel into drm-fixes

misc i915 fixes.

* tag 'drm-intel-fixes-2016-04-07' of git://anongit.freedesktop.org/drm-intel:
  drm/i915: fix deadlock on lid open
  drm/i915: Exit cherryview_irq_handler() after one pass
  drm/i915: Call intel_dp_mst_resume() before resuming displays
  drm/i915: Fix race condition in intel_dp_destroy_mst_connector()
parents d3de1b81 42bf7b46
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -758,10 +758,10 @@ static int i915_drm_resume(struct drm_device *dev)
		dev_priv->display.hpd_irq_setup(dev);
	spin_unlock_irq(&dev_priv->irq_lock);

	intel_display_resume(dev);

	intel_dp_mst_resume(dev);

	intel_display_resume(dev);

	/*
	 * ... but also need to make sure that hotplug processing
	 * doesn't cause havoc. Like in the driver load code we don't
+2 −2
Original line number Diff line number Diff line
@@ -1829,7 +1829,7 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg)
	/* IRQs are synced during runtime_suspend, we don't require a wakeref */
	disable_rpm_wakeref_asserts(dev_priv);

	for (;;) {
	do {
		master_ctl = I915_READ(GEN8_MASTER_IRQ) & ~GEN8_MASTER_IRQ_CONTROL;
		iir = I915_READ(VLV_IIR);

@@ -1857,7 +1857,7 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg)

		I915_WRITE(GEN8_MASTER_IRQ, DE_MASTER_IRQ_CONTROL);
		POSTING_READ(GEN8_MASTER_IRQ);
	}
	} while (0);

	enable_rpm_wakeref_asserts(dev_priv);

+2 −4
Original line number Diff line number Diff line
@@ -506,6 +506,8 @@ static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr,
	struct intel_connector *intel_connector = to_intel_connector(connector);
	struct drm_device *dev = connector->dev;

	intel_connector->unregister(intel_connector);

	/* need to nuke the connector */
	drm_modeset_lock_all(dev);
	if (connector->state->crtc) {
@@ -519,11 +521,7 @@ static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr,

		WARN(ret, "Disabling mst crtc failed with %i\n", ret);
	}
	drm_modeset_unlock_all(dev);

	intel_connector->unregister(intel_connector);

	drm_modeset_lock_all(dev);
	intel_connector_remove_from_fbdev(intel_connector);
	drm_connector_cleanup(connector);
	drm_modeset_unlock_all(dev);
+1 −4
Original line number Diff line number Diff line
@@ -478,11 +478,8 @@ static int intel_lid_notify(struct notifier_block *nb, unsigned long val,
	 * and as part of the cleanup in the hw state restore we also redisable
	 * the vga plane.
	 */
	if (!HAS_PCH_SPLIT(dev)) {
		drm_modeset_lock_all(dev);
	if (!HAS_PCH_SPLIT(dev))
		intel_display_resume(dev);
		drm_modeset_unlock_all(dev);
	}

	dev_priv->modeset_restore = MODESET_DONE;