mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 19:47:08 +02:00
drm/xe: Retry BO allocation
TTM doesn't support fair eviction via WW locking, this mitigated in by using retry loops in exec and preempt rebind worker. Extend this retry loop to BO allocation. Once TTM supports fair eviction this patch can be reverted. v4: - Keep line break (Stuart) Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com> Reviewed-by: Stuart Summers <stuart.summers@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20250306012657.3505757-2-matthew.brost@intel.com
This commit is contained in:
parent
5148da09dc
commit
1d724a2f1b
|
|
@ -2273,6 +2273,7 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
|
|||
struct xe_file *xef = to_xe_file(file);
|
||||
struct drm_xe_gem_create *args = data;
|
||||
struct xe_vm *vm = NULL;
|
||||
ktime_t end = 0;
|
||||
struct xe_bo *bo;
|
||||
unsigned int bo_flags;
|
||||
u32 handle;
|
||||
|
|
@ -2344,6 +2345,10 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
|
|||
vm = xe_vm_lookup(xef, args->vm_id);
|
||||
if (XE_IOCTL_DBG(xe, !vm))
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
retry:
|
||||
if (vm) {
|
||||
err = xe_vm_lock(vm, true);
|
||||
if (err)
|
||||
goto out_vm;
|
||||
|
|
@ -2357,6 +2362,8 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
|
|||
|
||||
if (IS_ERR(bo)) {
|
||||
err = PTR_ERR(bo);
|
||||
if (xe_vm_validate_should_retry(NULL, err, &end))
|
||||
goto retry;
|
||||
goto out_vm;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user