diff --git a/src/gallium/drivers/iris/xe/iris_kmd_backend.c b/src/gallium/drivers/iris/xe/iris_kmd_backend.c index ae0f00641ef37658d567e882013bd11ce6744743..0543a786f31c674238474a0dde0ea5496c883885 100644 --- a/src/gallium/drivers/iris/xe/iris_kmd_backend.c +++ b/src/gallium/drivers/iris/xe/iris_kmd_backend.c @@ -259,8 +259,12 @@ xe_batch_submit(struct iris_batch *batch) .syncs = (uintptr_t)syncs, .num_syncs = sync_len, }; - if (!batch->screen->devinfo->no_hw) - ret = intel_ioctl(iris_bufmgr_get_fd(bufmgr), DRM_IOCTL_XE_EXEC, &exec); + if (!batch->screen->devinfo->no_hw) { + uint8_t tries = 3; + do { + ret = intel_ioctl(iris_bufmgr_get_fd(bufmgr), DRM_IOCTL_XE_EXEC, &exec); + } while (ret && tries-- && (ret == -ENOMEM || ret == -EPERM)); + } simple_mtx_unlock(bo_deps_lock);