Re: [PATCH][RFC][0/4] InfiniBand userspace verbs implementation

Andrew Morton
2005-04-24T02:45:27Z

Timur Tabi <timur.tabi@ammasso.com> wrote:
>
> Christoph Hellwig wrote:
> > On Mon, Apr 18, 2005 at 11:22:29AM -0500, Timur Tabi wrote:
> >
> >>That's not what we're seeing. We have hardware that does DMA over the
> >>network (much like the Infiniband stuff), and we have a testcase that fails
> >>if get_user_pages() is used, but not if mlock() is used.
> >
> >
> > If you don't share your testcase it's unlikely to be fixed.
>
> As I said, the testcase only works with our hardware, and it's also very large. It's one
> small test that's part of a huge test suite. It takes a couple hours just to install the
> damn thing.
>
> We want to produce a simpler test case that demonstrates the problem in an
> easy-to-understand manner, but we don't have time to do that now.

If your theory is correct then it should be able to demonstrate this
problem without any special hardware at all: pin some user memory, then
generate memory pressure then check the contents of those pinned pages.

But if, for the DMA transfer, you're using the array of page*'s which were
originally obtained from get_user_pages() then it's rather hard to see how
the kernel could alter the page's contents.

Then again, if mlock() fixes it then something's up. Very odd.