-----"Jason Gunthorpe" <jgg@xxxxxxxx> wrote: ----- >To: "Bernard Metzler" <BMT@xxxxxxxxxxxxxx> >From: "Jason Gunthorpe" <jgg@xxxxxxxx> >Date: 03/06/2019 08:43PM >Cc: "Gal Pressman" <galpress@xxxxxxxxxx>, linux-rdma@xxxxxxxxxxxxxxx >Subject: Re: [PATCH v5 06/13] SIW application interface > >On Thu, Feb 28, 2019 at 03:38:55PM +0000, Bernard Metzler wrote: > >> >> +int siw_mmap(struct ib_ucontext *ctx, struct vm_area_struct >*vma) >> >> +{ >> >> + struct siw_ucontext *uctx = to_siw_ctx(ctx); >> >> + struct siw_uobj *uobj; >> >> + u32 key = vma->vm_pgoff << PAGE_SHIFT; >> >> + int size = vma->vm_end - vma->vm_start; >> >> + int rv = -EINVAL; >> >> + >> >> + /* >> >> + * Must be page aligned >> >> + */ >> >> + if (vma->vm_start & (PAGE_SIZE - 1)) { >> >> + pr_warn("map not page aligned\n"); >> >> + goto out; >> >> + } >> >> + >> >> + uobj = siw_remove_uobj(uctx, key, size); >> >> + if (!uobj) { >> >> + pr_warn("mmap lookup failed: %u, %d\n", key, size); >> >> + goto out; >> >> + } >> > >> >EFA used to remove the objects from the list on mmap and we were >> >asked by Jason >> >to keep them in the list until dealloc_ucontext. This way multiple >> >mmaps could >> >work as well. >> >> siw user land library currently does not support multiple mappings >of >> the same object, will consider in the future. > >We should have sane semantics for mmap and related - don't discard >the >offset once it is exposed unless really necessary. > OK, I am in that xarray business for mmap now. Related to that, assume a long living user context which over time creates and deletes any amount of QP's, SRQ's CQ's etc - stuff which has mmap state for its user mmappable queues. If we leave all that state alive with the context, we are wasting lots of memory and will sometimes also run out of mmap key space. So we should destroy those mmap state if an object gets deletes right? >And this thing with search a list is not great, use a cyclic xarray >to >generate and find the unique offset cookies. > Thanks, Bernard.