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 |
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
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 --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; }