diff options
author | Imre Deak <imre.deak@intel.com> | 2014-03-31 08:10:44 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-04-01 16:30:01 -0400 |
commit | ae48434c2a13cf4758aaf87da21d828f6d4dbebb (patch) | |
tree | 0162c5b1cb050f28747f1558139220ed5d47f75d /drivers/gpu/drm/i915/intel_display.c | |
parent | 50227e1cae118562b8b6230e31bca84870cad27e (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.c | 8 |
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 | /* |