[Intel-gfx] [PATCH 2/3] drm/i915/selftests: Finish pending mock requests on cancellation.

2020-09-29 Thread Chris Wilson
Flush all the pending requests from the mock engine when they are
cancelled.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/mock_engine.c | 29 +++
 1 file changed, 25 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/mock_engine.c 
b/drivers/gpu/drm/i915/gt/mock_engine.c
index dfd1cfb8a7ec..df52fed3c0d0 100644
--- a/drivers/gpu/drm/i915/gt/mock_engine.c
+++ b/drivers/gpu/drm/i915/gt/mock_engine.c
@@ -245,19 +245,40 @@ static void mock_reset_rewind(struct intel_engine_cs 
*engine, bool stalled)
GEM_BUG_ON(stalled);
 }
 
+static void mark_eio(struct i915_request *rq)
+{
+   if (i915_request_completed(rq))
+   return;
+
+   GEM_BUG_ON(i915_request_signaled(rq));
+
+   i915_request_set_error_once(rq, -EIO);
+   i915_request_mark_complete(rq);
+}
+
 static void mock_reset_cancel(struct intel_engine_cs *engine)
 {
-   struct i915_request *request;
+   struct mock_engine *mock =
+   container_of(engine, typeof(*mock), base);
+   struct i915_request *rq;
unsigned long flags;
 
+   del_timer_sync(&mock->hw_delay);
+
spin_lock_irqsave(&engine->active.lock, flags);
 
/* Mark all submitted requests as skipped. */
-   list_for_each_entry(request, &engine->active.requests, sched.link) {
-   i915_request_set_error_once(request, -EIO);
-   i915_request_mark_complete(request);
+   list_for_each_entry(rq, &engine->active.requests, sched.link)
+   mark_eio(rq);
+
+   /* Cancel and submit all pending requests. */
+   list_for_each_entry(rq, &mock->hw_queue, mock.link) {
+   mark_eio(rq);
+   __i915_request_submit(rq);
}
+   INIT_LIST_HEAD(&mock->hw_queue);
 
+   intel_engine_signal_breadcrumbs(engine);
spin_unlock_irqrestore(&engine->active.lock, flags);
 }
 
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 2/3] drm/i915/selftests: Finish pending mock requests on cancellation.

2020-08-10 Thread Chris Wilson
Flush all the pending requests from the mock engine when they are
cancelled.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/mock_engine.c | 29 +++
 1 file changed, 25 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/mock_engine.c 
b/drivers/gpu/drm/i915/gt/mock_engine.c
index 79764305b8ec..bb6f86cf9d4b 100644
--- a/drivers/gpu/drm/i915/gt/mock_engine.c
+++ b/drivers/gpu/drm/i915/gt/mock_engine.c
@@ -233,19 +233,40 @@ static void mock_reset_rewind(struct intel_engine_cs 
*engine, bool stalled)
GEM_BUG_ON(stalled);
 }
 
+static void mark_eio(struct i915_request *rq)
+{
+   if (i915_request_completed(rq))
+   return;
+
+   GEM_BUG_ON(i915_request_signaled(rq));
+
+   i915_request_set_error_once(rq, -EIO);
+   i915_request_mark_complete(rq);
+}
+
 static void mock_reset_cancel(struct intel_engine_cs *engine)
 {
-   struct i915_request *request;
+   struct mock_engine *mock =
+   container_of(engine, typeof(*mock), base);
+   struct i915_request *rq;
unsigned long flags;
 
+   del_timer_sync(&mock->hw_delay);
+
spin_lock_irqsave(&engine->active.lock, flags);
 
/* Mark all submitted requests as skipped. */
-   list_for_each_entry(request, &engine->active.requests, sched.link) {
-   i915_request_set_error_once(request, -EIO);
-   i915_request_mark_complete(request);
+   list_for_each_entry(rq, &engine->active.requests, sched.link)
+   mark_eio(rq);
+
+   /* Cancel and submit all pending requests. */
+   list_for_each_entry(rq, &mock->hw_queue, mock.link) {
+   mark_eio(rq);
+   __i915_request_submit(rq);
}
+   INIT_LIST_HEAD(&mock->hw_queue);
 
+   intel_engine_signal_breadcrumbs(engine);
spin_unlock_irqrestore(&engine->active.lock, flags);
 }
 
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 2/3] drm/i915/selftests: Finish pending mock requests on cancellation.

2020-09-16 Thread Chris Wilson
Flush all the pending requests from the mock engine when they are
cancelled.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/mock_engine.c | 29 +++
 1 file changed, 25 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/mock_engine.c 
b/drivers/gpu/drm/i915/gt/mock_engine.c
index dfd1cfb8a7ec..df52fed3c0d0 100644
--- a/drivers/gpu/drm/i915/gt/mock_engine.c
+++ b/drivers/gpu/drm/i915/gt/mock_engine.c
@@ -245,19 +245,40 @@ static void mock_reset_rewind(struct intel_engine_cs 
*engine, bool stalled)
GEM_BUG_ON(stalled);
 }
 
+static void mark_eio(struct i915_request *rq)
+{
+   if (i915_request_completed(rq))
+   return;
+
+   GEM_BUG_ON(i915_request_signaled(rq));
+
+   i915_request_set_error_once(rq, -EIO);
+   i915_request_mark_complete(rq);
+}
+
 static void mock_reset_cancel(struct intel_engine_cs *engine)
 {
-   struct i915_request *request;
+   struct mock_engine *mock =
+   container_of(engine, typeof(*mock), base);
+   struct i915_request *rq;
unsigned long flags;
 
+   del_timer_sync(&mock->hw_delay);
+
spin_lock_irqsave(&engine->active.lock, flags);
 
/* Mark all submitted requests as skipped. */
-   list_for_each_entry(request, &engine->active.requests, sched.link) {
-   i915_request_set_error_once(request, -EIO);
-   i915_request_mark_complete(request);
+   list_for_each_entry(rq, &engine->active.requests, sched.link)
+   mark_eio(rq);
+
+   /* Cancel and submit all pending requests. */
+   list_for_each_entry(rq, &mock->hw_queue, mock.link) {
+   mark_eio(rq);
+   __i915_request_submit(rq);
}
+   INIT_LIST_HEAD(&mock->hw_queue);
 
+   intel_engine_signal_breadcrumbs(engine);
spin_unlock_irqrestore(&engine->active.lock, flags);
 }
 
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 2/3] drm/i915/selftests: Finish pending mock requests on cancellation.

2020-09-16 Thread Matthew Auld
On Wed, 16 Sep 2020 at 10:46, Chris Wilson  wrote:
>
> Flush all the pending requests from the mock engine when they are
> cancelled.
>
> Signed-off-by: Chris Wilson 
Reviewed-by: Matthew Auld 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx