drm/i915/stolen: shuffle around init_memory_region
authorMatthew Auld <matthew.auld@intel.com>
Fri, 7 May 2021 09:59:48 +0000 (10:59 +0100)
committerMatthew Auld <matthew.auld@intel.com>
Tue, 11 May 2021 13:11:01 +0000 (14:11 +0100)
We generally want to first call i915_gem_object_init_memory_region()
before calling into get_pages(), since this sets up various bits of
state which might be needed there. Currently for stolen this doesn't
matter much, but it might in the future, and at the very least this
makes things consistent with the other backends.

Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210507095948.384230-1-matthew.auld@intel.com
drivers/gpu/drm/i915/gem/i915_gem_stolen.c

index 293f640faa0aabd86f59a9ec714cea90f3803ce9..b5553fc3ac4db796b17c43aa2fbdb254b34cafb0 100644 (file)
@@ -657,9 +657,11 @@ static int __i915_gem_object_create_stolen(struct intel_memory_region *mem,
        if (WARN_ON(!i915_gem_object_trylock(obj)))
                return -EBUSY;
 
+       i915_gem_object_init_memory_region(obj, mem);
+
        err = i915_gem_object_pin_pages(obj);
-       if (!err)
-               i915_gem_object_init_memory_region(obj, mem);
+       if (err)
+               i915_gem_object_release_memory_region(obj);
        i915_gem_object_unlock(obj);
 
        return err;