diff options
author | Jesse Barnes <jbarnes@virtuousgeek.org> | 2012-10-14 19:08:36 -0700 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2012-10-26 10:02:21 -0700 |
commit | b67566f6e3c6c4909b68660303a574844e36a020 (patch) | |
tree | d2ab227d149a22898a1b2e107c543b179bd641d7 | |
parent | 2367fbba704d058e66f2914a23a21006f54207d2 (diff) | |
download | drm-intel-fast-resume.tar.gz |
drm/i915: don't rewrite the GTT on resume v2fast-resume
The BIOS shouldn't be touching this memory across suspend/resume, so
just leave it alone. This saves us ~50ms on resume on my T420.
v2: change gtt restore default on pre-gen4 (Chris)
move needs_gtt_restore flag into dev_priv
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
-rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 2 |
3 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index b5977b48f577cd..c0272663f375c0 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c @@ -1339,6 +1339,10 @@ static int i915_load_modeset_init(struct drm_device *dev) /* FIXME: do pre/post-mode set stuff in core KMS code */ dev->vblank_disable_allowed = 1; + /* Gen4+ should have saner BIOSes (we hope) */ + if (INTEL_INFO(dev)->gen < 4) + dev_priv->needs_gtt_restore = true; + ret = intel_fbdev_init(dev); if (ret) goto cleanup_irq; diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 4d858a9246a1c4..be9f47dc6b4abc 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -540,7 +540,8 @@ static int i915_drm_thaw(struct drm_device *dev) intel_gt_reset(dev); - if (drm_core_check_feature(dev, DRIVER_MODESET)) { + if (drm_core_check_feature(dev, DRIVER_MODESET) && + dev_priv->needs_gtt_restore) { mutex_lock(&dev->struct_mutex); i915_gem_restore_gtt_mappings(dev); mutex_unlock(&dev->struct_mutex); diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 1e84a59821144f..a38eba8540820d 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -873,6 +873,8 @@ typedef struct drm_i915_private { struct delayed_work gen6_power_work; + bool needs_gtt_restore; + enum no_fbc_reason no_fbc_reason; struct drm_mm_node *compressed_fb; |