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

Roland Dreier
2005-04-26T20:14:48Z

Roland> a) app registers 0x0000 through 0x17ff
Roland> b) app registers 0x1800 through 0x2fff
Roland> c) app unregisters 0x0000 through 0x17ff
Roland> d) the page at 0x1000 must stay pinned

Andrew> The userspace library should be able to track the tree and
Andrew> the overlaps, etc. Things might become interesting when
Andrew> the memory is MAP_SHARED pagecache and multiple
Andrew> independent processes are involved, although I guess
Andrew> that'd work OK.

I used to think I knew how to handle this, but in your scheme where
the kernel is doing accounting for pinned memory by marking vmas with
VM_KERNEL_LOCKED, at step c), I don't see why the kernel won't unlock
vmas covering 0x0000 through 0x1fff and credit 8K back to the
process's pinning count.

Sorry to be so dense but can you spell out what you think should
happen at steps a), b) and c) above?

Andrew> But afaict the problem wherein part of a page needs
Andrew> VM_DONTCOPY and the other part does not cannot be solved.

Yes, I agree. If an app wants to register half a page and pass the
other half to a child process, I think the only answer is "don't do
that then."

- R.