winsys/svga: Don't abort on EBUSY errors from execbuffer
This error code typically indicated that a buffer object that was referenced by the command stream was being used for CPU access by another client. The correct action here is to retry after a while. Use usleep() until we have proper kernel support for this wait. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
c69557c4a2
commit
20b7839392
|
@ -564,7 +564,9 @@ vmw_ioctl_command(struct vmw_winsys_screen *vws, int32_t cid,
|
|||
offsetof(struct drm_vmw_execbuf_arg, context_handle);
|
||||
do {
|
||||
ret = drmCommandWrite(vws->ioctl.drm_fd, DRM_VMW_EXECBUF, &arg, argsize);
|
||||
} while(ret == -ERESTART);
|
||||
if (ret == -EBUSY)
|
||||
usleep(1000);
|
||||
} while(ret == -ERESTART || ret == -EBUSY);
|
||||
if (ret) {
|
||||
vmw_error("%s error %s.\n", __FUNCTION__, strerror(-ret));
|
||||
abort();
|
||||
|
|
Loading…
Reference in New Issue