On Fri, 20 Aug 2021 14:05:27 +0200 "Christian König" ckoenig.leichtzumerken@gmail.com wrote:
While unplugging a device the TTM shrinker implementation needs a barrier to make sure that all concurrent shrink operations are done and no other CPU is referring to a device specific pool any more.
Taking and releasing the shrinker semaphore on the write side after unmapping and freeing all pages from the device pool should make sure that no shrinker is running in paralell.
This allows us to avoid the contented mutex in the TTM pool implementation for every alloc/free operation.
v2: rework the commit message to make clear why we need this
Acked-by: Andrew Morton akpm@linux-foundation.org