drm/scheduler: Avoid using wait_event_killable for dying process (V4)
authorAndrey Grodzovsky <andrey.grodzovsky@amd.com>
Wed, 30 May 2018 19:11:01 +0000 (15:11 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 15 Jun 2018 17:20:33 +0000 (12:20 -0500)
commit741f01e636b72ff3f81204fd595ac1078907671b
treeea4ec8a08aeccc3583b7faa778fd0f58b40da593
parenta2d19d66b1454b88bfcf1929837b329378d3377f
drm/scheduler: Avoid using wait_event_killable for dying process (V4)

Dying process might be blocked from receiving any more signals
so avoid using it.

Also retire enity->fini_status and just check the SW queue,
if it's not empty do the fallback cleanup.

Also handle entity->last_scheduled == NULL use case which
happens when HW ring is already hangged whem a  new entity
tried to enqeue jobs.

v2:
Return the remaining timeout and use that as parameter for the next call.
This way when we need to cleanup multiple queues we don't wait for the
entire TO period for each queue but rather in total.
Styling comments.
Rebase.

v3:
Update types from unsigned to long.
Work with jiffies instead of ms.
Return 0 when TO expires.
Rebase.

v4:
Remove unnecessary timeout calculation.

Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/scheduler/gpu_scheduler.c
include/drm/gpu_scheduler.h