Now that we are using struct resource to track the stolen region, it is
more convenient if we track the reserved portion of that region in a
resource as well.

v2: s/<= end + 1/< end/ (Chris)
v3: prefer DEFINE_RES_MEM

Signed-off-by: Matthew Auld <matthew.a...@intel.com>
Cc: Joonas Lahtinen <joonas.lahti...@linux.intel.com>
Cc: Chris Wilson <ch...@chris-wilson.co.uk>
Cc: Paulo Zanoni <paulo.r.zan...@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h        |  4 ++++
 drivers/gpu/drm/i915/i915_gem_gtt.h    |  2 --
 drivers/gpu/drm/i915/i915_gem_stolen.c | 15 ++++++---------
 drivers/gpu/drm/i915/intel_pm.c        |  6 ++----
 4 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 39c8e99f3d3a..18905badd494 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2259,6 +2259,10 @@ struct drm_i915_private {
         * while ggtt->stolen_size gives us the total size of the stolen region.
         */
        struct resource dsm;
+       /**
+        * Reseved portion of Data Stolen Memory
+        */
+       struct resource dsm_reserved;
 
        void __iomem *regs;
 
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h 
b/drivers/gpu/drm/i915/i915_gem_gtt.h
index 93211a96fdad..84bb3ee17dd7 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.h
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.h
@@ -383,8 +383,6 @@ struct i915_ggtt {
         */
        u32 stolen_size;                /* Total size of stolen memory */
        u32 stolen_usable_size; /* Total size minus reserved ranges */
-       u32 stolen_reserved_base;
-       u32 stolen_reserved_size;
 
        /** "Graphics Stolen Memory" holds the global PTEs */
        void __iomem *gsm;
diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c 
b/drivers/gpu/drm/i915/i915_gem_stolen.c
index eb84db633a23..6e2550ff750f 100644
--- a/drivers/gpu/drm/i915/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
@@ -397,18 +397,15 @@ int i915_gem_init_stolen(struct drm_i915_private 
*dev_priv)
                reserved_base = stolen_top;
        }
 
-       if (reserved_base < dev_priv->dsm.start ||
-           reserved_base + reserved_size > stolen_top) {
-               dma_addr_t reserved_top = reserved_base + reserved_size;
-               DRM_ERROR("Stolen reserved area [%pad - %pad] outside stolen 
memory [%pad - %pad]\n",
-                         &reserved_base, &reserved_top,
-                         &dev_priv->dsm.start, &stolen_top);
+       dev_priv->dsm_reserved =
+               (struct resource) DEFINE_RES_MEM(reserved_base, reserved_size);
+
+       if (!resource_contains(&dev_priv->dsm, &dev_priv->dsm_reserved)) {
+               DRM_ERROR("Stolen reserved area %pR outside stolen memory 
%pR\n",
+                         &dev_priv->dsm_reserved, &dev_priv->dsm);
                return 0;
        }
 
-       ggtt->stolen_reserved_base = reserved_base;
-       ggtt->stolen_reserved_size = reserved_size;
-
        /* It is possible for the reserved area to end before the end of stolen
         * memory, so just consider the start. */
        reserved_total = stolen_top - reserved_base;
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 2fa2d82f61f2..016feecafe8d 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6416,7 +6416,6 @@ static void valleyview_disable_rps(struct 
drm_i915_private *dev_priv)
 
 static bool bxt_check_bios_rc6_setup(struct drm_i915_private *dev_priv)
 {
-       struct i915_ggtt *ggtt = &dev_priv->ggtt;
        bool enable_rc6 = true;
        unsigned long rc6_ctx_base;
        u32 rc_ctl;
@@ -6441,9 +6440,8 @@ static bool bxt_check_bios_rc6_setup(struct 
drm_i915_private *dev_priv)
         * for this check.
         */
        rc6_ctx_base = I915_READ(RC6_CTX_BASE) & RC6_CTX_BASE_MASK;
-       if (!((rc6_ctx_base >= ggtt->stolen_reserved_base) &&
-             (rc6_ctx_base + PAGE_SIZE <= ggtt->stolen_reserved_base +
-                                       ggtt->stolen_reserved_size))) {
+       if (!((rc6_ctx_base >= dev_priv->dsm_reserved.start) &&
+             (rc6_ctx_base + PAGE_SIZE < dev_priv->dsm_reserved.end))) {
                DRM_DEBUG_DRIVER("RC6 Base address not as expected.\n");
                enable_rc6 = false;
        }
-- 
2.14.3

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

Reply via email to