diff options
author | Chris Wilson <chris.p.wilson@linux.intel.com> | 2023-08-01 16:19:54 +0200 |
---|---|---|
committer | Andi Shyti <andi.shyti@linux.intel.com> | 2023-08-02 15:56:44 +0200 |
commit | d6c531ab482031a66a3544423330d30894dba2df (patch) | |
tree | 9ed63299acbec323387d8e07924f12c0b0b4703c /drivers/gpu/drm/i915/gem/i915_gem_pages.c | |
parent | a79d48846b069ed5b0013ef9a3bfee119a5f01e3 (diff) | |
download | linux-d6c531ab482031a66a3544423330d30894dba2df.tar.gz linux-d6c531ab482031a66a3544423330d30894dba2df.tar.bz2 linux-d6c531ab482031a66a3544423330d30894dba2df.zip |
drm/i915: Invalidate the TLBs on each GT
With multi-GT devices, the object may have been bound on each GT.
Invalidate the TLBs across all GT before releasing the pages
back to the system.
Signed-off-by: Chris Wilson <chris.p.wilson@linux.intel.com>
Cc: Fei Yang <fei.yang@intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230801141955.383305-4-andi.shyti@linux.intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/gem/i915_gem_pages.c')
-rw-r--r-- | drivers/gpu/drm/i915/gem/i915_gem_pages.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pages.c b/drivers/gpu/drm/i915/gem/i915_gem_pages.c index 83852f7da1ac..eae40e8f52ed 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_pages.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_pages.c @@ -193,13 +193,16 @@ static void unmap_object(struct drm_i915_gem_object *obj, void *ptr) static void flush_tlb_invalidate(struct drm_i915_gem_object *obj) { struct drm_i915_private *i915 = to_i915(obj->base.dev); - struct intel_gt *gt = to_gt(i915); + struct intel_gt *gt; + int id; - if (!obj->mm.tlb) - return; + for_each_gt(gt, i915, id) { + if (!obj->mm.tlb[id]) + return; - intel_gt_invalidate_tlb_full(gt, obj->mm.tlb); - obj->mm.tlb = 0; + intel_gt_invalidate_tlb_full(gt, obj->mm.tlb[id]); + obj->mm.tlb[id] = 0; + } } struct sg_table * |