aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/dma_resv_utils.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2020-12-23 12:20:51 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2020-12-23 21:58:00 +0000
commit6d393ef5ff5cac48b44781b1c1c22aabd65eba27 (patch)
tree892196f43e904123aa4b400dafb3d5df2929d5a4 /drivers/gpu/drm/i915/dma_resv_utils.c
parentdrm/i915/gt: Prefer recycling an idle fence (diff)
downloadlinux-dev-6d393ef5ff5cac48b44781b1c1c22aabd65eba27.tar.xz
linux-dev-6d393ef5ff5cac48b44781b1c1c22aabd65eba27.zip
drm/i915/gem: Optimistically prune dma-resv from the shrinker.
As we shrink an object, also see if we can prune the dma-resv of idle fences it is maintaining a reference to. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20201223122051.4624-2-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/dma_resv_utils.c')
-rw-r--r--drivers/gpu/drm/i915/dma_resv_utils.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/dma_resv_utils.c b/drivers/gpu/drm/i915/dma_resv_utils.c
new file mode 100644
index 000000000000..9e508e7d4629
--- /dev/null
+++ b/drivers/gpu/drm/i915/dma_resv_utils.c
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2020 Intel Corporation
+ */
+
+#include <linux/dma-resv.h>
+
+#include "dma_resv_utils.h"
+
+void dma_resv_prune(struct dma_resv *resv)
+{
+ if (dma_resv_trylock(resv)) {
+ if (dma_resv_test_signaled_rcu(resv, true))
+ dma_resv_add_excl_fence(resv, NULL);
+ dma_resv_unlock(resv);
+ }
+}