Evict PoC based on dma-resv
Hack job, not broken into multiple patches, all based on dma-resv.
- Basic idea is jobs / preempt fences are in the shared slots of the VM.
- Jobs wait on excl slot (non-compute mode).
- Moves wait on all slots (either mode).
- The rebind(s) are installed on shared slots (compute mode) or excl slot (non-compute mode)
- Preempt op are installed on moves (NIY) + rebind(s) (compute mode only).
- When all preempt ops complete, a new preempt fence is installed (compute mode).
So in non-compute basicly a move waits on all outstanding jobs for the VM to complete, queues up the move + rebind(s) under lock, and all future jobs wait for the move + rebind(s) to complete.
In compute mode, the initial move triggers all the preempt fences (suspends all xe_engines on VM), and once the move + rebind(s) complete, new preempt fences are installed (resumes all xe_engines on VM).
Basic testing done below MR and seems to be working. 80 moves + rebinds on DG1 with the test passing. https://gitlab.freedesktop.org/drm/xe/igt-gpu-tools/-/merge_requests/6
Out until 5/6, when I get back I'll pick this back up or someone feel free to run with this while I'm out.