diff mbox series

drm/i915/gem: Flush lmem contents after construction

Message ID 20230316165918.13074-1-nirmoy.das@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/gem: Flush lmem contents after construction | expand

Commit Message

Nirmoy Das March 16, 2023, 4:59 p.m. UTC
From: Chris Wilson <chris.p.wilson@linux.intel.com>

i915_gem_object_create_lmem_from_data() lacks the flush of the data
written to lmem to ensure the object is marked as dirty and the writes
flushed to the backing store. Once created, we can immediately release
the obj->mm.mapping caching of the vmap.

Fixes: 7acbbc7cf485 ("drm/i915/guc: put all guc objects in lmem when available")
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Andi Shyti <andi.shyti@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Signed-off-by: Chris Wilson <chris.p.wilson@linux.intel.com>
Cc: <stable@vger.kernel.org> # v5.16+
Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 drivers/gpu/drm/i915/gem/i915_gem_lmem.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Andi Shyti March 20, 2023, 12:05 a.m. UTC | #1
Hi Nirmoy,

On Thu, Mar 16, 2023 at 05:59:18PM +0100, Nirmoy Das wrote:
> From: Chris Wilson <chris.p.wilson@linux.intel.com>
> 
> i915_gem_object_create_lmem_from_data() lacks the flush of the data
> written to lmem to ensure the object is marked as dirty and the writes
> flushed to the backing store. Once created, we can immediately release
> the obj->mm.mapping caching of the vmap.
> 
> Fixes: 7acbbc7cf485 ("drm/i915/guc: put all guc objects in lmem when available")
> Cc: Matthew Auld <matthew.auld@intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Andi Shyti <andi.shyti@linux.intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> Signed-off-by: Chris Wilson <chris.p.wilson@linux.intel.com>
> Cc: <stable@vger.kernel.org> # v5.16+
> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>

Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>

Thanks,
Andi
Nirmoy Das March 23, 2023, 11:17 a.m. UTC | #2
On 3/16/2023 5:59 PM, Nirmoy Das wrote:
> From: Chris Wilson <chris.p.wilson@linux.intel.com>
>
> i915_gem_object_create_lmem_from_data() lacks the flush of the data
> written to lmem to ensure the object is marked as dirty and the writes
> flushed to the backing store. Once created, we can immediately release
> the obj->mm.mapping caching of the vmap.
>
> Fixes: 7acbbc7cf485 ("drm/i915/guc: put all guc objects in lmem when available")
> Cc: Matthew Auld <matthew.auld@intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Andi Shyti <andi.shyti@linux.intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> Signed-off-by: Chris Wilson <chris.p.wilson@linux.intel.com>
> Cc: <stable@vger.kernel.org> # v5.16+
> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>

Reviewed-by: Nirmoy Das <nirmoy.das@intel.com>


> ---
>   drivers/gpu/drm/i915/gem/i915_gem_lmem.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_lmem.c b/drivers/gpu/drm/i915/gem/i915_gem_lmem.c
> index 8949fb0a944f..3198b64ad7db 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_lmem.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_lmem.c
> @@ -127,7 +127,8 @@ i915_gem_object_create_lmem_from_data(struct drm_i915_private *i915,
>   
>   	memcpy(map, data, size);
>   
> -	i915_gem_object_unpin_map(obj);
> +	i915_gem_object_flush_map(obj);
> +	__i915_gem_object_release_map(obj);
>   
>   	return obj;
>   }
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_lmem.c b/drivers/gpu/drm/i915/gem/i915_gem_lmem.c
index 8949fb0a944f..3198b64ad7db 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_lmem.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_lmem.c
@@ -127,7 +127,8 @@  i915_gem_object_create_lmem_from_data(struct drm_i915_private *i915,
 
 	memcpy(map, data, size);
 
-	i915_gem_object_unpin_map(obj);
+	i915_gem_object_flush_map(obj);
+	__i915_gem_object_release_map(obj);
 
 	return obj;
 }