• Lucas Stach's avatar
    drm/etnaviv: take GPU lock later in the submit process · d9853490
    Lucas Stach authored
    Both the fence and event alloc are safe to be done without holding the GPU
    lock, as they either don't need any locking (fences) or are protected by
    their own lock (events).
    
    This solves a bad locking interaction between the submit path and the
    recover worker. If userspace manages to exhaust all available events while
    the GPU is hung, the submit will wait for events to become available
    holding the GPU lock. The recover worker waits for this lock to become
    available before trying to recover the GPU which frees up the allocated
    events. Essentially both paths are deadlocked until the submit path
    times out waiting for available events, failing the submit that could
    otherwise be handled just fine if the recover worker had the chance to
    bring the GPU back in a working state.
    Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
    Reviewed-by: default avatarChristian Gmeiner <christian.gmeiner@gmail.com>
    d9853490
etnaviv_gpu.c 44.3 KB