On 2019/7/26 下午11:03, Jason Gunthorpe wrote:
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.
Yes, I get this.
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.
Right, let me optimize that.
Thanks
Jason