Commit 54895010 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Add an rcu_barrier option to i915_drop_caches

Sometimes a test has to wait for RCU to complete a grace period and
perform its callbacks, for example waiting for a close(fd) to actually
perform the fput(filp) and so trigger all the callbacks such as closing
GEM contexts. There is no trivial means of triggering an RCU barrier
from userspace, so add one for our convenience in
debugfs/i915_drop_caches
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
Reviewed-by: default avatarMatthew Auld <matthew.william.auld@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191011173823.20432-1-chris@chris-wilson.co.uk
parent cbbf2787
...@@ -3599,6 +3599,7 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_wedged_fops, ...@@ -3599,6 +3599,7 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_wedged_fops,
#define DROP_IDLE BIT(6) #define DROP_IDLE BIT(6)
#define DROP_RESET_ACTIVE BIT(7) #define DROP_RESET_ACTIVE BIT(7)
#define DROP_RESET_SEQNO BIT(8) #define DROP_RESET_SEQNO BIT(8)
#define DROP_RCU BIT(9)
#define DROP_ALL (DROP_UNBOUND | \ #define DROP_ALL (DROP_UNBOUND | \
DROP_BOUND | \ DROP_BOUND | \
DROP_RETIRE | \ DROP_RETIRE | \
...@@ -3607,7 +3608,8 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_wedged_fops, ...@@ -3607,7 +3608,8 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_wedged_fops,
DROP_SHRINK_ALL |\ DROP_SHRINK_ALL |\
DROP_IDLE | \ DROP_IDLE | \
DROP_RESET_ACTIVE | \ DROP_RESET_ACTIVE | \
DROP_RESET_SEQNO) DROP_RESET_SEQNO | \
DROP_RCU)
static int static int
i915_drop_caches_get(void *data, u64 *val) i915_drop_caches_get(void *data, u64 *val)
{ {
...@@ -3659,6 +3661,9 @@ i915_drop_caches_set(void *data, u64 val) ...@@ -3659,6 +3661,9 @@ i915_drop_caches_set(void *data, u64 val)
i915_gem_shrink_all(i915); i915_gem_shrink_all(i915);
fs_reclaim_release(GFP_KERNEL); fs_reclaim_release(GFP_KERNEL);
if (val & DROP_RCU)
rcu_barrier();
if (val & DROP_FREED) if (val & DROP_FREED)
i915_gem_drain_freed_objects(i915); i915_gem_drain_freed_objects(i915);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment