drm/qxl: more fence wait rework

Move qxl_io_notify_oom() call into wait condition.
That way the driver will call it again if one call
wasn't enough.

Also allows to remove the extra dma_fence_is_signaled()
check and the goto.

Fixes: 5a838e5d58 ("drm/qxl: simplify qxl_fence_wait")
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: http://patchwork.freedesktop.org/patch/msgid/20210217123213.2199186-3-kraxel@redhat.com
This commit is contained in:
Gerd Hoffmann 2021-02-17 13:32:04 +01:00
parent 26fe1f4c55
commit 42c4551aca

View File

@ -62,16 +62,12 @@ static long qxl_fence_wait(struct dma_fence *fence, bool intr,
qdev = container_of(fence->lock, struct qxl_device, release_lock);
if (dma_fence_is_signaled(fence))
goto signaled;
qxl_io_notify_oom(qdev);
if (!wait_event_timeout(qdev->release_event,
dma_fence_is_signaled(fence),
(dma_fence_is_signaled(fence) ||
(qxl_io_notify_oom(qdev), 0)),
timeout))
return 0;
signaled:
cur = jiffies;
if (time_after(cur, end))
return 0;