diff options
| author | Matthew Brost <matthew.brost@intel.com> | 2025-11-22 04:25:02 +0300 |
|---|---|---|
| committer | Matthew Brost <matthew.brost@intel.com> | 2025-11-26 21:21:46 +0300 |
| commit | 6028f59620927aee2e15a424004012ae05c50684 (patch) | |
| tree | 422c0d83600ffb73b3286fd1473eacd863136b01 /drivers/gpu | |
| parent | 9fb1f1256e419fcd0e5000ea8aaa71a65575a90b (diff) | |
| download | linux-6028f59620927aee2e15a424004012ae05c50684.tar.xz | |
drm/xe: Covert return of -EBUSY to -ENOMEM in VM bind IOCTL
xe_vma_userptr_pin_pages can return -EBUSY but -EBUSY has special
meaning in VM bind IOCTLs that user fence is pending that is attached to
the VMA. Convert -EBUSY to -ENOMEM in this case as -EBUSY in practice
means we are low or out of memory.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
Link: https://patch.msgid.link/20251122012502.382587-2-matthew.brost@intel.com
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/xe/xe_vm.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c index a70a4a1fa03c..8ab726289583 100644 --- a/drivers/gpu/drm/xe/xe_vm.c +++ b/drivers/gpu/drm/xe/xe_vm.c @@ -2455,8 +2455,17 @@ static struct xe_vma *new_vma(struct xe_vm *vm, struct drm_gpuva_op_map *op, if (IS_ERR(vma)) return vma; - if (xe_vma_is_userptr(vma)) + if (xe_vma_is_userptr(vma)) { err = xe_vma_userptr_pin_pages(to_userptr_vma(vma)); + /* + * -EBUSY has dedicated meaning that a user fence + * attached to the VMA is busy, in practice + * xe_vma_userptr_pin_pages can only fail with -EBUSY if + * we are low on memory so convert this to -ENOMEM. + */ + if (err == -EBUSY) + err = -ENOMEM; + } } if (err) { prep_vma_destroy(vm, vma, false); |
