aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_display.c
diff options
context:
space:
mode:
authorImre Deak <imre.deak@intel.com>2014-03-31 08:10:44 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-04-01 16:30:01 -0400
commitae48434c2a13cf4758aaf87da21d828f6d4dbebb (patch)
tree0162c5b1cb050f28747f1558139220ed5d47f75d /drivers/gpu/drm/i915/intel_display.c
parent50227e1cae118562b8b6230e31bca84870cad27e (diff)
drm/i915: vlv: reserve the GT power context only once during driver init
Atm we reserve/allocate and free the power context during GT power enable/disable time. There is no need to do this, we can reserve/allocate the buffer once during driver loading and free it during driver cleanup. The re-reservation can also fail in case the driver previously manages to allocate something on the given fixed address. The buffer isn't exepected to move even if allocated by the BIOS, for safety add an assert to check this assumption. This also fixed a bug for Ville, where re-reserving the context failed during a GPU reset (I assume because something else got allocated on its fixed address). Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 8bce7f00294b..c31c6203c7ca 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -11759,6 +11759,10 @@ void intel_modeset_gem_init(struct drm_device *dev)
11759 struct drm_crtc *c; 11759 struct drm_crtc *c;
11760 struct intel_framebuffer *fb; 11760 struct intel_framebuffer *fb;
11761 11761
11762 mutex_lock(&dev->struct_mutex);
11763 intel_init_gt_powersave(dev);
11764 mutex_unlock(&dev->struct_mutex);
11765
11762 intel_modeset_init_hw(dev); 11766 intel_modeset_init_hw(dev);
11763 11767
11764 intel_setup_overlay(dev); 11768 intel_setup_overlay(dev);
@@ -11845,6 +11849,10 @@ void intel_modeset_cleanup(struct drm_device *dev)
11845 drm_mode_config_cleanup(dev); 11849 drm_mode_config_cleanup(dev);
11846 11850
11847 intel_cleanup_overlay(dev); 11851 intel_cleanup_overlay(dev);
11852
11853 mutex_lock(&dev->struct_mutex);
11854 intel_cleanup_gt_powersave(dev);
11855 mutex_unlock(&dev->struct_mutex);
11848} 11856}
11849 11857
11850/* 11858/*