diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.c')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index c302ffb5a168..a19d2c71e205 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
| @@ -699,6 +699,16 @@ static int i915_drm_resume(struct drm_device *dev) | |||
| 699 | intel_init_pch_refclk(dev); | 699 | intel_init_pch_refclk(dev); |
| 700 | drm_mode_config_reset(dev); | 700 | drm_mode_config_reset(dev); |
| 701 | 701 | ||
| 702 | /* | ||
| 703 | * Interrupts have to be enabled before any batches are run. If not the | ||
| 704 | * GPU will hang. i915_gem_init_hw() will initiate batches to | ||
| 705 | * update/restore the context. | ||
| 706 | * | ||
| 707 | * Modeset enabling in intel_modeset_init_hw() also needs working | ||
| 708 | * interrupts. | ||
| 709 | */ | ||
| 710 | intel_runtime_pm_enable_interrupts(dev_priv); | ||
| 711 | |||
| 702 | mutex_lock(&dev->struct_mutex); | 712 | mutex_lock(&dev->struct_mutex); |
| 703 | if (i915_gem_init_hw(dev)) { | 713 | if (i915_gem_init_hw(dev)) { |
| 704 | DRM_ERROR("failed to re-initialize GPU, declaring wedged!\n"); | 714 | DRM_ERROR("failed to re-initialize GPU, declaring wedged!\n"); |
| @@ -706,9 +716,6 @@ static int i915_drm_resume(struct drm_device *dev) | |||
| 706 | } | 716 | } |
| 707 | mutex_unlock(&dev->struct_mutex); | 717 | mutex_unlock(&dev->struct_mutex); |
| 708 | 718 | ||
| 709 | /* We need working interrupts for modeset enabling ... */ | ||
| 710 | intel_runtime_pm_enable_interrupts(dev_priv); | ||
| 711 | |||
| 712 | intel_modeset_init_hw(dev); | 719 | intel_modeset_init_hw(dev); |
| 713 | 720 | ||
| 714 | spin_lock_irq(&dev_priv->irq_lock); | 721 | spin_lock_irq(&dev_priv->irq_lock); |
