Comment # 7
on bug 101294
from Marek Olšák
The bisected commit only uncovers the existing deadlock scenario.
Summary of the issue.
amdgpu_bo_create
-> pb_cache_reclaim_buffer (lock pb_cache::mutex)
-> pb_cache_is_buffer_compat
-> amdgpu_bo_wait (lock bo_fence_lock) - DEADLOCK
pb_reference
-> pb_destroy
-> amdgpu_bo_destroy_or_cache
-> pb_cache_add_buffer (lock::pb_cache::mutex) - DEADLOCK
amdgpu_cs_flush (lock bo_fence_lock)
-> amdgpu_add_fence_dependency (loop-wait for submission_in_progress) -
DEADLOCK
It looks the best way to prevent this deadlock is to unify pb_cache::mutex and
bo_fence_lock under one lock, that is, one of them has to go.