drm/xe: Handle -EDEADLK case in preempt worker
authorNiranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Mon, 8 May 2023 05:22:23 +0000 (05:22 +0000)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 19 Dec 2023 23:33:49 +0000 (18:33 -0500)
commit9ca14f94d294862d6f5ee30a6b73f295cfaa5d08
tree3e956ed73420f1f8c01797e4e6b9bc465619f3db
parente3e4964d335c73e931ea21c8f318d419d3cdb4cc
drm/xe: Handle -EDEADLK case in preempt worker

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 preempt worker to retry validating BOs with a timeout upon
-ENOMEM.

v2: revert retry timeout upon -EAGAIN (Thomas)

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_vm.c