[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190821161635.GC8653@ziepe.ca>
Date: Wed, 21 Aug 2019 13:16:35 -0300
From: Jason Gunthorpe <jgg@...pe.ca>
To: LKML <linux-kernel@...r.kernel.org>, Linux MM <linux-mm@...ck.org>,
DRI Development <dri-devel@...ts.freedesktop.org>,
Intel Graphics Development <intel-gfx@...ts.freedesktop.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Michal Hocko <mhocko@...e.com>,
David Rientjes <rientjes@...gle.com>,
Christian König <christian.koenig@....com>,
Jérôme Glisse <jglisse@...hat.com>,
Daniel Vetter <daniel.vetter@...el.com>
Subject: Re: [PATCH 4/4] mm, notifier: Catch sleeping/blocking for !blockable
On Wed, Aug 21, 2019 at 05:41:51PM +0200, Daniel Vetter wrote:
> > Hm, I thought the page table locks we're holding there already prevent any
> > sleeping, so would be redundant? But reading through code I think that's
> > not guaranteed, so yeah makes sense to add it for invalidate_range_end
> > too. I'll respin once I have the ack/nack from scheduler people.
>
> So I started to look into this, and I'm a bit confused. There's no
> _nonblock version of this, so does this means blocking is never allowed,
> or always allowed?
RDMA has a mutex:
ib_umem_notifier_invalidate_range_end
rbt_ib_umem_for_each_in_range
invalidate_range_start_trampoline
ib_umem_notifier_end_account
mutex_lock(&umem_odp->umem_mutex);
I'm working to delete this path though!
nonblocking or not follows the start, the same flag gets placed into
the mmu_notifier_range struct passed to end.
> From a quick look through implementations I've only seen spinlocks, and
> one up_read. So I guess I should wrape this callback in some unconditional
> non_block_start/end, but I'm not sure.
For now, we should keep it the same as start, conditionally blocking.
Hopefully before LPC I can send a RFC series that eliminates most
invalidate_range_end users in favor of common locking..
Jason
Powered by blists - more mailing lists