diff options
| author | Chris Wilson <[email protected]> | 2021-03-24 12:13:30 +0000 |
|---|---|---|
| committer | Daniel Vetter <[email protected]> | 2021-03-25 23:55:30 +0000 |
| commit | 38b237eab2bc7feac87a4c9d870368e935a0091b (patch) | |
| tree | 82968c302c23c8d6b2215d20cb2915d407bf015a /drivers/gpu/drm/i915/i915_request.h | |
| parent | drm/i915: Extract active lookup engine to a helper (diff) | |
| download | kernel-38b237eab2bc7feac87a4c9d870368e935a0091b.tar.gz kernel-38b237eab2bc7feac87a4c9d870368e935a0091b.zip | |
drm/i915: Individual request cancellation
Currently, we cancel outstanding requests within a context when the
context is closed. We may also want to cancel individual requests using
the same graceful preemption mechanism.
v2 (Tvrtko):
* Cancel waiters carefully considering no timeline lock and RCU.
* Fixed selftests.
v3 (Tvrtko):
* Remove error propagation to waiters for now.
v4 (Tvrtko):
* Rebase for extracted i915_request_active_engine. (Matt)
Signed-off-by: Chris Wilson <[email protected]>
Signed-off-by: Tvrtko Ursulin <[email protected]>
Reviewed-by: Matthew Auld <[email protected]>
[danvet: Resolve conflict because intel_engine_flush_scheduler is
still called intel_engine_flush_submission]
Signed-off-by: Daniel Vetter <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Diffstat (limited to 'drivers/gpu/drm/i915/i915_request.h')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_request.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_request.h b/drivers/gpu/drm/i915/i915_request.h index cf4bd07f749e..e4d190ab76b2 100644 --- a/drivers/gpu/drm/i915/i915_request.h +++ b/drivers/gpu/drm/i915/i915_request.h @@ -300,7 +300,7 @@ struct i915_request * __must_check i915_request_create(struct intel_context *ce); void __i915_request_skip(struct i915_request *rq); -void i915_request_set_error_once(struct i915_request *rq, int error); +bool i915_request_set_error_once(struct i915_request *rq, int error); void i915_request_mark_eio(struct i915_request *rq); struct i915_request *__i915_request_commit(struct i915_request *request); @@ -356,6 +356,8 @@ void i915_request_submit(struct i915_request *request); void __i915_request_unsubmit(struct i915_request *request); void i915_request_unsubmit(struct i915_request *request); +void i915_request_cancel(struct i915_request *rq, int error); + long i915_request_wait(struct i915_request *rq, unsigned int flags, long timeout) |
