diff --git a/src/gallium/drivers/iris/xe/iris_kmd_backend.c b/src/gallium/drivers/iris/xe/iris_kmd_backend.c index 12a8d7e545d3eeebc2e2376be03937d133cdda65..9281a5927f5c68299fc1323cbd87d0f0dffb4281 100644 --- a/src/gallium/drivers/iris/xe/iris_kmd_backend.c +++ b/src/gallium/drivers/iris/xe/iris_kmd_backend.c @@ -391,8 +391,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)); + } if (ret) goto error_exec;