WA to skip the first page of stolen memory due to sporadic HW write on *CS Idle

v2: Improve variable names and fix allocated size.

Reviewed-by: Ben Widawsky <b...@bwidawsk.net>
Signed-off-by: Rodrigo Vivi <rodrigo.v...@intel.com>
---
 drivers/gpu/drm/i915/i915_gem_stolen.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c 
b/drivers/gpu/drm/i915/i915_gem_stolen.c
index 21c025a..82035b0 100644
--- a/drivers/gpu/drm/i915/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
@@ -289,7 +289,8 @@ void i915_gem_cleanup_stolen(struct drm_device *dev)
 int i915_gem_init_stolen(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
-       int bios_reserved = 0;
+       int start_rsvd = 0;
+       int end_rsvd = 0;
 
 #ifdef CONFIG_INTEL_IOMMU
        if (intel_iommu_gfx_mapped && INTEL_INFO(dev)->gen < 8) {
@@ -308,15 +309,19 @@ int i915_gem_init_stolen(struct drm_device *dev)
        DRM_DEBUG_KMS("found %zd bytes of stolen memory at %08lx\n",
                      dev_priv->gtt.stolen_size, dev_priv->mm.stolen_base);
 
+       /* WaSkipStolenMemoryFirstPage */
+       if (INTEL_INFO(dev)->gen >= 8)
+               start_rsvd = 4096;
+
        if (IS_VALLEYVIEW(dev))
-               bios_reserved = 1024*1024; /* top 1M on VLV/BYT */
+               end_rsvd = 1024*1024; /* top 1M on VLV/BYT */
 
-       if (WARN_ON(bios_reserved > dev_priv->gtt.stolen_size))
+       if (WARN_ON((start_rsvd + end_rsvd) > dev_priv->gtt.stolen_size))
                return 0;
 
        /* Basic memrange allocator for stolen space */
-       drm_mm_init(&dev_priv->mm.stolen, 0, dev_priv->gtt.stolen_size -
-                   bios_reserved);
+       drm_mm_init(&dev_priv->mm.stolen, start_rsvd,
+                   dev_priv->gtt.stolen_size - start_rsvd - end_rsvd);
 
        return 0;
 }
-- 
1.9.3

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to