drm/etnaviv: don't block scheduler when GPU is still active
authorLucas Stach <l.stach@pengutronix.de>
Fri, 21 Jun 2024 19:59:19 +0000 (21:59 +0200)
committerLucas Stach <l.stach@pengutronix.de>
Wed, 26 Jun 2024 13:33:25 +0000 (15:33 +0200)
commit704d3d60fec451f37706368d9d3e320322978986
treedb56e06e3a46c90420cdf9f4a44b1d4659bcc09d
parentbeb311ff0f2e1fcd0f033fcd1be45de083efc421
drm/etnaviv: don't block scheduler when GPU is still active

Since 45ecaea73883 ("drm/sched: Partial revert of 'drm/sched: Keep
s_fence->parent pointer'") still active jobs aren't put back in the
pending list on drm_sched_start(), as they don't have a active
parent fence anymore, so if the GPU is still working and the timeout
is extended, all currently active jobs will be freed.

To avoid prematurely freeing jobs that are still active on the GPU,
don't block the scheduler until we are fully committed to actually
reset the GPU.

As the current job is already removed from the pending list and
will not be put back when drm_sched_start() isn't called, we must
make sure to put the job back on the pending list when extending
the timeout.

Cc: stable@vger.kernel.org #6.0
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
drivers/gpu/drm/etnaviv/etnaviv_sched.c