drm/i915: Set stolen reserved to 0 for pre-g4x platforms
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 11 Sep 2015 18:14:29 +0000 (21:14 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 14 Sep 2015 13:24:18 +0000 (15:24 +0200)
This stolen reserved stuff was introduced on g4x, so no need to waste
stolen on older platforms. Unfortunately configdb is no more so I can't
look up the right way to detect this stuff. I do have one hint as to
where the register might be on ctg, but I don't have a ctg to test it,
and on the elk I have here it doesn't contain sensible looking data.
For ilk grits suggegsts it might be in the same place as on snb (the
original PCI reg, not the mirror) but I can't be entirely sure about it
The register shows a round zero on my ilk.

So when there's no really good data for any of these platforms leave the
current "assume 1MiB" approach in place.

Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem_stolen.c

index f361c4a5699550dc581ad06bb79aa36a8aebb803..bf26ecc3781be55084ece444c0e72867c355554e 100644 (file)
@@ -281,7 +281,7 @@ static void bdw_get_stolen_reserved(struct drm_i915_private *dev_priv,
 int i915_gem_init_stolen(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
-       unsigned long reserved_total, reserved_base, reserved_size;
+       unsigned long reserved_total, reserved_base = 0, reserved_size;
        unsigned long stolen_top;
 
        mutex_init(&dev_priv->mm.stolen_lock);
@@ -306,6 +306,9 @@ int i915_gem_init_stolen(struct drm_device *dev)
        case 2:
        case 3:
        case 4:
+               if (!IS_G4X(dev))
+                       break;
+               /* fall through */
        case 5:
                /* Assume the gen6 maximum for the older platforms. */
                reserved_size = 1024 * 1024;