diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-04-10 09:50:11 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-04-12 15:14:11 -0400 |
commit | f817586cebf1b946d1f327f9a596048efd6b64e9 (patch) | |
tree | fd916237f8d693b053296c3a020570f3f96c7659 /drivers/gpu/drm/i915/i915_drv.c | |
parent | f84131905b9b3b02b1c5061c0720e503c8d22778 (diff) |
drm/i915: re-init modeset hw state after gpu reset
After a gpu reset we need to re-init some of the hw state we only
initialize when modeset is enabled, like rc6, hw contexts or render/GT
core clock gating and workaround register settings.
Note that this patch has a small change in the resume code:
- rc6 on gen6+ is only restored for the modeset case (for more
consistency with other callsites). This is no problem because recent
kernels refuse to load drm/i915 without kms on gen6+
- rc6/emon on ilk is only restored for the modeset case. This is no
problem because rc6 is disabled by default on ilk, and ums on ilk
has never really been a supported option outside of horrible rhel
backports.
v2: Chris Wilson noticed that we not only fail to restore the clock
gating settings after gpu reset.
v3: Move the call to modeset_init_hw in _reset out of the
struct_mutext protected area - other callers don't hold it, too.
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 96f8efc7a0d0..ccfdc813171d 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -851,9 +851,14 @@ int i915_reset(struct drm_device *dev, u8 flags) | |||
851 | i915_gem_init_ppgtt(dev); | 851 | i915_gem_init_ppgtt(dev); |
852 | 852 | ||
853 | mutex_unlock(&dev->struct_mutex); | 853 | mutex_unlock(&dev->struct_mutex); |
854 | |||
855 | if (drm_core_check_feature(dev, DRIVER_MODESET)) | ||
856 | intel_modeset_init_hw(dev); | ||
857 | |||
854 | drm_irq_uninstall(dev); | 858 | drm_irq_uninstall(dev); |
855 | drm_mode_config_reset(dev); | 859 | drm_mode_config_reset(dev); |
856 | drm_irq_install(dev); | 860 | drm_irq_install(dev); |
861 | |||
857 | mutex_lock(&dev->struct_mutex); | 862 | mutex_lock(&dev->struct_mutex); |
858 | } | 863 | } |
859 | 864 | ||