diff options
author | Mauro Carvalho Chehab <mchehab@kernel.org> | 2022-07-27 14:29:56 +0200 |
---|---|---|
committer | Andi Shyti <andi.shyti@linux.intel.com> | 2022-07-28 14:02:27 +0200 |
commit | d1051db85f6496ed9c825802bef3709f2e7d816f (patch) | |
tree | a327cb5c8ce70d28da6f5a55d097700163b81490 | |
parent | drm/i915/gt: Batch TLB invalidations (diff) | |
download | linux-d1051db85f6496ed9c825802bef3709f2e7d816f.tar.xz linux-d1051db85f6496ed9c825802bef3709f2e7d816f.zip |
drm/i915/gt: describe the new tlb parameter at i915_vma_resource
TLB cache invalidation can happen on two different situations:
1. synchronously, at __vma_put_pages();
2. asynchronously.
On the first case, TLB cache invalidation happens inside
__vma_put_pages(). So, no need to do it later on.
However, on the second case, the pages will keep in memory
until __i915_vma_evict() is called.
So, we need to store the TLB data at struct i915_vma_resource,
in order to do a TLB cache invalidation before allowing
userspace to re-use the same memory.
So, i915_vma_resource_unbind() has gained a new parameter
in order to store the TLB data at the second case.
Document it.
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/aa55eef7e63b8f3d0f69b525db2dd2eb87e9db6b.1658924372.git.mchehab@kernel.org
-rw-r--r-- | drivers/gpu/drm/i915/i915_vma_resource.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_vma_resource.c b/drivers/gpu/drm/i915/i915_vma_resource.c index 5a67995ea5fe..de1342dbfa12 100644 --- a/drivers/gpu/drm/i915/i915_vma_resource.c +++ b/drivers/gpu/drm/i915/i915_vma_resource.c @@ -216,6 +216,10 @@ i915_vma_resource_fence_notify(struct i915_sw_fence *fence, /** * i915_vma_resource_unbind - Unbind a vma resource * @vma_res: The vma resource to unbind. + * @tlb: pointer to vma->obj->mm.tlb associated with the resource + * to be stored at vma_res->tlb. When not-NULL, it will be used + * to do TLB cache invalidation before freeing a VMA resource. + * Used only for async unbind. * * At this point this function does little more than publish a fence that * signals immediately unless signaling is held back. |