Re: [PATCH] drm/i915/selftests: Wait request to finish

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 18/10/2021 04:42, Oak Zeng wrote:
Caller of function igt_gpu_fill_dw assumes when this function
returns, the gpu command to fill dword is already finished.
Caller usually checks the GPU filling result immediately, see
the usage in function __igt_write_huge. If there is no wait,
when function igt_gpu_fill_dw returns, the GPU command is not
guaranteed to be finished. So wait for request to finish.

There is more than one caller and the first one I looked at already does wait so the above is not fully accurate.

I your example of __igt_write_huge you have i915_gem_object_prepare_read called before the assert which does object wait, so that too is not a missing wait.

I haven't checked the rest. So perhaps say what failure you are trying to fix with a link to a CI report or something?


Signed-off-by: Oak Zeng <oak.zeng@xxxxxxxxx>
---
  drivers/gpu/drm/i915/gem/selftests/igt_gem_utils.c | 1 +
  1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/gem/selftests/igt_gem_utils.c b/drivers/gpu/drm/i915/gem/selftests/igt_gem_utils.c
index b35c1219c852..5fa595ed30b1 100644
--- a/drivers/gpu/drm/i915/gem/selftests/igt_gem_utils.c
+++ b/drivers/gpu/drm/i915/gem/selftests/igt_gem_utils.c
@@ -157,6 +157,7 @@ int igt_gpu_fill_dw(struct intel_context *ce,
  	if (err)
  		i915_request_set_error_once(rq, err);
  	i915_request_add(rq);
+	err = i915_request_wait(rq, 0, HZ/5);

For you reference this exploded in CI because as soon as i915_request_add() you are giving your rq reference to the backend and i915_request_wait can/will therefore ooops. If you used this pattern somewhere you'd need to do:

i915_request_get()
i915_request_add()
i915_request_wait()
i915_request_put()

Regards,

Tvrtko

  err_batch:
  	i915_vma_unpin_and_release(&batch, 0);
  	return err;




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux