Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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()

+7 -12
+2 -2
drivers/gpu/drm/i915/i915_drv.c
··· 758 758 dev_priv->display.hpd_irq_setup(dev); 759 759 spin_unlock_irq(&dev_priv->irq_lock); 760 760 761 - intel_display_resume(dev); 762 - 763 761 intel_dp_mst_resume(dev); 762 + 763 + intel_display_resume(dev); 764 764 765 765 /* 766 766 * ... but also need to make sure that hotplug processing
+2 -2
drivers/gpu/drm/i915/i915_irq.c
··· 1829 1829 /* IRQs are synced during runtime_suspend, we don't require a wakeref */ 1830 1830 disable_rpm_wakeref_asserts(dev_priv); 1831 1831 1832 - for (;;) { 1832 + do { 1833 1833 master_ctl = I915_READ(GEN8_MASTER_IRQ) & ~GEN8_MASTER_IRQ_CONTROL; 1834 1834 iir = I915_READ(VLV_IIR); 1835 1835 ··· 1857 1857 1858 1858 I915_WRITE(GEN8_MASTER_IRQ, DE_MASTER_IRQ_CONTROL); 1859 1859 POSTING_READ(GEN8_MASTER_IRQ); 1860 - } 1860 + } while (0); 1861 1861 1862 1862 enable_rpm_wakeref_asserts(dev_priv); 1863 1863
+2 -4
drivers/gpu/drm/i915/intel_dp_mst.c
··· 506 506 struct intel_connector *intel_connector = to_intel_connector(connector); 507 507 struct drm_device *dev = connector->dev; 508 508 509 + intel_connector->unregister(intel_connector); 510 + 509 511 /* need to nuke the connector */ 510 512 drm_modeset_lock_all(dev); 511 513 if (connector->state->crtc) { ··· 521 519 522 520 WARN(ret, "Disabling mst crtc failed with %i\n", ret); 523 521 } 524 - drm_modeset_unlock_all(dev); 525 522 526 - intel_connector->unregister(intel_connector); 527 - 528 - drm_modeset_lock_all(dev); 529 523 intel_connector_remove_from_fbdev(intel_connector); 530 524 drm_connector_cleanup(connector); 531 525 drm_modeset_unlock_all(dev);
+1 -4
drivers/gpu/drm/i915/intel_lvds.c
··· 478 478 * and as part of the cleanup in the hw state restore we also redisable 479 479 * the vga plane. 480 480 */ 481 - if (!HAS_PCH_SPLIT(dev)) { 482 - drm_modeset_lock_all(dev); 481 + if (!HAS_PCH_SPLIT(dev)) 483 482 intel_display_resume(dev); 484 - drm_modeset_unlock_all(dev); 485 - } 486 483 487 484 dev_priv->modeset_restore = MODESET_DONE; 488 485