• Lucas Stach's avatar
    drm/etnaviv: don't flush workqueue in etnaviv_gpu_wait_obj_inactive · fa67ac84
    Lucas Stach authored
    There is no need to synchronize with oustanding retire jobs if the object
    has gone idle. Retire jobs only ever change the object state from active to
    idle, not the other way around.
    
    The IOVA put race is uncritical, as the GEM_WAIT ioctl itself is holding
    a reference to the GEM object, so the retire worker will not pull the
    object into the CPU domain, which is the thing we are trying to guard
    against with etnaviv_gpu_wait_obj_inactive. The ordering of the various
    counts and waits may change a bit, but the userspace visible behavior at
    the bounds of the syscall are unchanged.
    Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
    Reviewed-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
    fa67ac84
etnaviv_gpu.c 50.2 KB