[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190703204002.GO18688@mellanox.com>
Date: Wed, 3 Jul 2019 20:40:08 +0000
From: Jason Gunthorpe <jgg@...lanox.com>
To: Christoph Hellwig <hch@....de>
CC: Jérôme Glisse <jglisse@...hat.com>,
Ben Skeggs <bskeggs@...hat.com>,
"linux-mm@...ck.org" <linux-mm@...ck.org>,
"nouveau@...ts.freedesktop.org" <nouveau@...ts.freedesktop.org>,
"dri-devel@...ts.freedesktop.org" <dri-devel@...ts.freedesktop.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Ralph Campbell <rcampbell@...dia.com>
Subject: Re: [PATCH 1/5] mm: return valid info from hmm_range_unregister
On Wed, Jul 03, 2019 at 10:28:57PM +0200, Christoph Hellwig wrote:
> On Wed, Jul 03, 2019 at 07:00:50PM +0000, Jason Gunthorpe wrote:
> > I don't think the API should be encouraging some shortcut here..
> >
> > We can't do the above pattern because the old hmm_vma API didn't allow
> > it, which is presumably a reason why it is obsolete.
> >
> > I'd rather see drivers move to a consistent pattern so we can then
> > easily hoist the seqcount lock scheme into some common mmu notifier
> > code, as discussed.
>
> So you don't like the version in amdgpu_ttm_tt_get_user_pages_done in
> linux-next either?
I looked at this for 5 mins, and I can't see the key elements of the
collision retry lock:
- Where is the retry loop?
- Where is the lock around the final test to valid prior to using
the output of range?
For instance looking at amdgpu_gem_userptr_ioctl()..
We can't be holding a lock when we do hmm_range_wait_until_valid()
(inside amdgpu_ttm_tt_get_user_pages), otherwise it deadlocks, and
there are not other locks that would encompass the final is_valid check.
And amdgpu_gem_userptr_ioctl() looks like a syscall entry point, so
having it fail just because the lock collided (ie is_valid == false)
can't possibly be the right thing.
I'm also unclear when the device data is updated in that sequence..
So.. I think this locking is wrong. Maybe AMD team can explain how it
should work?
Jason
Powered by blists - more mailing lists