drm/xe: Handle -EDEADLK case in exec ioctl
authorNiranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Tue, 9 May 2023 05:08:24 +0000 (05:08 +0000)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 19 Dec 2023 23:33:49 +0000 (18:33 -0500)
commit34f89ac8e66cd5121fb05c765acc3c67ddbef7a0
tree21948eb5197c59918e94ffc0c3105a8817ec74c0
parent9ca14f94d294862d6f5ee30a6b73f295cfaa5d08
drm/xe: Handle -EDEADLK case in exec ioctl

With multiple active VMs, under memory pressure, it is possible that
ttm_bo_validate() run into -EDEADLK in ttm_mem_evict_wait_busy() and
return -ENOMEM.

Until ttm properly handles locking in such scenarios, best thing the
driver can do is unwind the lock and retry.

Update xe_exec_begin to retry validating BOs with a timeout upon
-ENOMEM.

Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_exec.c