Message ID | 20190201102248.15144-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915: Avoid uninterruptible spinning in debugfs | expand |
Quoting Chris Wilson (2019-02-01 10:22:48) > If we get caught in a kernel bug, we may never idle. Let the user regain > control of their system^Wterminal by responding to SIGINT! > > Reported-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > --- > drivers/gpu/drm/i915/i915_debugfs.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c > index f3fa31d840f5..baf8b548621c 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -3947,6 +3947,10 @@ i915_drop_caches_set(void *data, u64 val) > > if (val & DROP_IDLE) { > do { > + if (signal_pending(current)) { > + ret = -EINTR; > + goto out; > + } > if (READ_ONCE(i915->gt.active_requests)) > flush_delayed_work(&i915->gt.retire_work); > drain_delayed_work(&i915->gt.idle_work); Drain delayed work will want similar treatment. -Chris
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index f3fa31d840f5..baf8b548621c 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -3947,6 +3947,10 @@ i915_drop_caches_set(void *data, u64 val) if (val & DROP_IDLE) { do { + if (signal_pending(current)) { + ret = -EINTR; + goto out; + } if (READ_ONCE(i915->gt.active_requests)) flush_delayed_work(&i915->gt.retire_work); drain_delayed_work(&i915->gt.idle_work);
If we get caught in a kernel bug, we may never idle. Let the user regain control of their system^Wterminal by responding to SIGINT! Reported-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> --- drivers/gpu/drm/i915/i915_debugfs.c | 4 ++++ 1 file changed, 4 insertions(+)