diff options
| author | Dave Airlie <airlied@redhat.com> | 2016-04-10 23:30:05 -0400 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2016-04-10 23:30:05 -0400 |
| commit | 928815245cbdaa611873424759d5e7a7293dd18b (patch) | |
| tree | 92f79d1edd6fa61209db19729f4941a3a7aa28b0 /drivers/gpu | |
| parent | d3de1b81a08a06be2f4a5ac2dd5dc9d87bd85193 (diff) | |
| parent | 42bf7b46a5de03c8e2dd28a1f105bc28b6485243 (diff) | |
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()
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp_mst.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 5 |
4 files changed, 7 insertions, 12 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 20e82008b8b6..30798cbc6fc0 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
| @@ -758,10 +758,10 @@ static int i915_drm_resume(struct drm_device *dev) | |||
| 758 | dev_priv->display.hpd_irq_setup(dev); | 758 | dev_priv->display.hpd_irq_setup(dev); |
| 759 | spin_unlock_irq(&dev_priv->irq_lock); | 759 | spin_unlock_irq(&dev_priv->irq_lock); |
| 760 | 760 | ||
| 761 | intel_display_resume(dev); | ||
| 762 | |||
| 763 | intel_dp_mst_resume(dev); | 761 | intel_dp_mst_resume(dev); |
| 764 | 762 | ||
| 763 | intel_display_resume(dev); | ||
| 764 | |||
| 765 | /* | 765 | /* |
| 766 | * ... but also need to make sure that hotplug processing | 766 | * ... but also need to make sure that hotplug processing |
| 767 | * doesn't cause havoc. Like in the driver load code we don't | 767 | * doesn't cause havoc. Like in the driver load code we don't |
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index d1a46ef5ab3f..1c212205d0e7 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c | |||
| @@ -1829,7 +1829,7 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg) | |||
| 1829 | /* IRQs are synced during runtime_suspend, we don't require a wakeref */ | 1829 | /* IRQs are synced during runtime_suspend, we don't require a wakeref */ |
| 1830 | disable_rpm_wakeref_asserts(dev_priv); | 1830 | disable_rpm_wakeref_asserts(dev_priv); |
| 1831 | 1831 | ||
| 1832 | for (;;) { | 1832 | do { |
| 1833 | master_ctl = I915_READ(GEN8_MASTER_IRQ) & ~GEN8_MASTER_IRQ_CONTROL; | 1833 | master_ctl = I915_READ(GEN8_MASTER_IRQ) & ~GEN8_MASTER_IRQ_CONTROL; |
| 1834 | iir = I915_READ(VLV_IIR); | 1834 | iir = I915_READ(VLV_IIR); |
| 1835 | 1835 | ||
| @@ -1857,7 +1857,7 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg) | |||
| 1857 | 1857 | ||
| 1858 | I915_WRITE(GEN8_MASTER_IRQ, DE_MASTER_IRQ_CONTROL); | 1858 | I915_WRITE(GEN8_MASTER_IRQ, DE_MASTER_IRQ_CONTROL); |
| 1859 | POSTING_READ(GEN8_MASTER_IRQ); | 1859 | POSTING_READ(GEN8_MASTER_IRQ); |
| 1860 | } | 1860 | } while (0); |
| 1861 | 1861 | ||
| 1862 | enable_rpm_wakeref_asserts(dev_priv); | 1862 | enable_rpm_wakeref_asserts(dev_priv); |
| 1863 | 1863 | ||
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c index a2bd698fe2f7..937e77228466 100644 --- a/drivers/gpu/drm/i915/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/intel_dp_mst.c | |||
| @@ -506,6 +506,8 @@ static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, | |||
| 506 | struct intel_connector *intel_connector = to_intel_connector(connector); | 506 | struct intel_connector *intel_connector = to_intel_connector(connector); |
| 507 | struct drm_device *dev = connector->dev; | 507 | struct drm_device *dev = connector->dev; |
| 508 | 508 | ||
| 509 | intel_connector->unregister(intel_connector); | ||
| 510 | |||
| 509 | /* need to nuke the connector */ | 511 | /* need to nuke the connector */ |
| 510 | drm_modeset_lock_all(dev); | 512 | drm_modeset_lock_all(dev); |
| 511 | if (connector->state->crtc) { | 513 | if (connector->state->crtc) { |
| @@ -519,11 +521,7 @@ static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, | |||
| 519 | 521 | ||
| 520 | WARN(ret, "Disabling mst crtc failed with %i\n", ret); | 522 | WARN(ret, "Disabling mst crtc failed with %i\n", ret); |
| 521 | } | 523 | } |
| 522 | drm_modeset_unlock_all(dev); | ||
| 523 | 524 | ||
| 524 | intel_connector->unregister(intel_connector); | ||
| 525 | |||
| 526 | drm_modeset_lock_all(dev); | ||
| 527 | intel_connector_remove_from_fbdev(intel_connector); | 525 | intel_connector_remove_from_fbdev(intel_connector); |
| 528 | drm_connector_cleanup(connector); | 526 | drm_connector_cleanup(connector); |
| 529 | drm_modeset_unlock_all(dev); | 527 | drm_modeset_unlock_all(dev); |
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 30a8403a8f4f..cd9fe609aefb 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c | |||
| @@ -478,11 +478,8 @@ static int intel_lid_notify(struct notifier_block *nb, unsigned long val, | |||
| 478 | * and as part of the cleanup in the hw state restore we also redisable | 478 | * and as part of the cleanup in the hw state restore we also redisable |
| 479 | * the vga plane. | 479 | * the vga plane. |
| 480 | */ | 480 | */ |
| 481 | if (!HAS_PCH_SPLIT(dev)) { | 481 | if (!HAS_PCH_SPLIT(dev)) |
| 482 | drm_modeset_lock_all(dev); | ||
| 483 | intel_display_resume(dev); | 482 | intel_display_resume(dev); |
| 484 | drm_modeset_unlock_all(dev); | ||
| 485 | } | ||
| 486 | 483 | ||
| 487 | dev_priv->modeset_restore = MODESET_DONE; | 484 | dev_priv->modeset_restore = MODESET_DONE; |
| 488 | 485 | ||
