On Fri, Jul 26, 2019 at 10:00:20PM +0800, Jason Wang wrote: > The question is, MMU notifier are allowed to be blocked on > invalidate_range_start() which could be much slower than synchronize_rcu() > to finish. > > Looking at amdgpu_mn_invalidate_range_start_gfx() which calls > amdgpu_mn_invalidate_node() which did: > > r = reservation_object_wait_timeout_rcu(bo->tbo.resv, > true, false, MAX_SCHEDULE_TIMEOUT); > > ... The general guidance has been that invalidate_start should block minimally, if at all. I would say synchronize_rcu is outside that guidance. BTW, always returning EAGAIN for mmu_notifier_range_blockable() is not good either, it should instead only return EAGAIN if any vhost_map_range_overlap() is true. Jason