drm/i915: After a reset perform a forced modeset
On more recent chipsets, restoring the display is not as simple as writing a few registers, so force a full modeset of the current configuration in order to retrain the display link. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
0573ed4a94
commit
9fd981413e
|
@ -385,9 +385,6 @@ int i965_reset(struct drm_device *dev, u8 flags)
|
|||
*/
|
||||
i915_gem_retire_requests(dev);
|
||||
|
||||
if (need_display)
|
||||
i915_save_display(dev);
|
||||
|
||||
/*
|
||||
* Set the domains we want to reset (GRDOM/bits 2 and 3) as
|
||||
* well as the reset bit (GR/bit 0). Setting the GR bit
|
||||
|
@ -428,13 +425,19 @@ int i965_reset(struct drm_device *dev, u8 flags)
|
|||
mutex_lock(&dev->struct_mutex);
|
||||
}
|
||||
|
||||
/*
|
||||
* Display needs restore too...
|
||||
*/
|
||||
if (need_display)
|
||||
i915_restore_display(dev);
|
||||
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
|
||||
/*
|
||||
* Perform a full modeset as on later generations, e.g. Ironlake, we may
|
||||
* need to retrain the display link and cannot just restore the register
|
||||
* values.
|
||||
*/
|
||||
if (need_display) {
|
||||
mutex_lock(&dev->mode_config.mutex);
|
||||
drm_helper_resume_force_mode(dev);
|
||||
mutex_unlock(&dev->mode_config.mutex);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue