]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915: give stolen_usable_size a more suitable home
authorMatthew Auld <matthew.auld@intel.com>
Mon, 11 Dec 2017 15:18:21 +0000 (15:18 +0000)
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Tue, 12 Dec 2017 10:30:22 +0000 (12:30 +0200)
Kick it out of i915_ggtt and keep it grouped with dsm and dsm_reserved,
where it makes the most sense.

Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171211151822.20953-9-matthew.auld@intel.com
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem_gtt.h
drivers/gpu/drm/i915/i915_gem_stolen.c
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_fbdev.c

index 7945af0037f89cd37320a75278f373a5029e5795..d71e59e44d50f98be15f193f8f72d90794a08f47 100644 (file)
@@ -2254,7 +2254,7 @@ struct drm_i915_private {
        /**
         * Data Stolen Memory - aka "i915 stolen memory" gives us the start and
         * end of stolen which we can optionally use to create GEM objects
-        * backed by stolen memory. Note that ggtt->stolen_usable_size tells us
+        * backed by stolen memory. Note that stolen_usable_size tells us
         * exactly how much of this we are actually allowed to use, given that
         * some portion of it is in fact reserved for use by hardware functions.
         */
@@ -2264,6 +2264,17 @@ struct drm_i915_private {
         */
        struct resource dsm_reserved;
 
+       /*
+        * Stolen memory is segmented in hardware with different portions
+        * offlimits to certain functions.
+        *
+        * The drm_mm is initialised to the total accessible range, as found
+        * from the PCI config. On Broadwell+, this is further restricted to
+        * avoid the first page! The upper end of stolen memory is reserved for
+        * hardware functions and similarly removed from the accessible range.
+        */
+       u32 stolen_usable_size; /* Total size minus reserved ranges */
+
        void __iomem *regs;
 
        struct intel_uncore uncore;
index 4a17ce36281ae894901b30cca04b430c9715b2ef..e5aa07ceb627192d9d86a3bf2ffeb5b581f96d32 100644 (file)
@@ -373,16 +373,6 @@ struct i915_ggtt {
        struct resource gmadr;          /* GMADR resource */
        u64 mappable_end;               /* End offset that we can CPU map */
 
-       /* Stolen memory is segmented in hardware with different portions
-        * offlimits to certain functions.
-        *
-        * The drm_mm is initialised to the total accessible range, as found
-        * from the PCI config. On Broadwell+, this is further restricted to
-        * avoid the first page! The upper end of stolen memory is reserved for
-        * hardware functions and similarly removed from the accessible range.
-        */
-       u32 stolen_usable_size; /* Total size minus reserved ranges */
-
        /** "Graphics Stolen Memory" holds the global PTEs */
        void __iomem *gsm;
        void (*invalidate)(struct drm_i915_private *dev_priv);
index b6cca0d4ecd3d818110ee7acf9c23507b1963cf2..63d568512db5f48ce6d76db958f7c2a438ead43d 100644 (file)
@@ -325,7 +325,6 @@ static void bdw_get_stolen_reserved(struct drm_i915_private *dev_priv,
 
 int i915_gem_init_stolen(struct drm_i915_private *dev_priv)
 {
-       struct i915_ggtt *ggtt = &dev_priv->ggtt;
        dma_addr_t reserved_base, stolen_top;
        u32 reserved_total, reserved_size;
        u32 stolen_usable_start;
@@ -416,12 +415,12 @@ int i915_gem_init_stolen(struct drm_i915_private *dev_priv)
        if (INTEL_GEN(dev_priv) >= 8)
                stolen_usable_start = 4096;
 
-       ggtt->stolen_usable_size =
+       dev_priv->stolen_usable_size =
                resource_size(&dev_priv->dsm) - reserved_total - stolen_usable_start;
 
        /* Basic memrange allocator for stolen space. */
        drm_mm_init(&dev_priv->mm.stolen, stolen_usable_start,
-                   ggtt->stolen_usable_size);
+                   dev_priv->stolen_usable_size);
 
        return 0;
 }
index f9ff1c7fa0542691e8658167b880e6c5c9fe3a38..efa6c6d19664dbecc0a026e293101f68a836f530 100644 (file)
@@ -2639,7 +2639,6 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc,
 {
        struct drm_device *dev = crtc->base.dev;
        struct drm_i915_private *dev_priv = to_i915(dev);
-       struct i915_ggtt *ggtt = &dev_priv->ggtt;
        struct drm_i915_gem_object *obj = NULL;
        struct drm_mode_fb_cmd2 mode_cmd = { 0 };
        struct drm_framebuffer *fb = &plane_config->fb->base;
@@ -2655,7 +2654,7 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc,
        /* If the FB is too big, just don't use it since fbdev is not very
         * important and we should probably use that space with FBC or other
         * features. */
-       if (size_aligned * 2 > ggtt->stolen_usable_size)
+       if (size_aligned * 2 > dev_priv->stolen_usable_size)
                return false;
 
        mutex_lock(&dev->struct_mutex);
index ea96682568e880077fec27e489b3d345c44953ae..da48af11eb6b8d521249c34fe55d689549496082 100644 (file)
@@ -115,7 +115,6 @@ static int intelfb_alloc(struct drm_fb_helper *helper,
        struct drm_framebuffer *fb;
        struct drm_device *dev = helper->dev;
        struct drm_i915_private *dev_priv = to_i915(dev);
-       struct i915_ggtt *ggtt = &dev_priv->ggtt;
        struct drm_mode_fb_cmd2 mode_cmd = {};
        struct drm_i915_gem_object *obj;
        int size, ret;
@@ -139,7 +138,7 @@ static int intelfb_alloc(struct drm_fb_helper *helper,
         * important and we should probably use that space with FBC or other
         * features. */
        obj = NULL;
-       if (size * 2 < ggtt->stolen_usable_size)
+       if (size * 2 < dev_priv->stolen_usable_size)
                obj = i915_gem_object_create_stolen(dev_priv, size);
        if (obj == NULL)
                obj = i915_gem_object_create(dev_priv, size);