• Lucas Stach's avatar
    drm/etnaviv: don't block scheduler when GPU is still active · 704d3d60
    Lucas Stach authored
    Since 45ecaea7 ("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: default avatarLucas Stach <l.stach@pengutronix.de>
    Reviewed-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
    Reviewed-by: default avatarChristian Gmeiner <cgmeiner@igalia.com>
    704d3d60
etnaviv_sched.c 3.79 KB