Skip to content

Commit

Permalink
[PATCH] IB uverbs: add mthca mmap support
Browse files Browse the repository at this point in the history
Add support for mmap() method to mthca, so that userspace can get access to
doorbell registers.  This allows userspace to get direct access to the HCA for
data path operations.

Each userspace context gets its own copy of the doorbell registers and is only
allowed to use resources that the kernel has given it access to.  In other
words, this is safe.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Roland Dreier authored and Linus Torvalds committed Jul 8, 2005
1 parent 5e0b537 commit 53b8b3f
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions drivers/infiniband/hw/mthca/mthca_provider.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
*/

#include <ib_smi.h>
#include <linux/mm.h>

#include "mthca_dev.h"
#include "mthca_cmd.h"
Expand Down Expand Up @@ -340,6 +341,22 @@ static int mthca_dealloc_ucontext(struct ib_ucontext *context)
return 0;
}

static int mthca_mmap_uar(struct ib_ucontext *context,
struct vm_area_struct *vma)
{
if (vma->vm_end - vma->vm_start != PAGE_SIZE)
return -EINVAL;

vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);

if (remap_pfn_range(vma, vma->vm_start,
to_mucontext(context)->uar.pfn,
PAGE_SIZE, vma->vm_page_prot))
return -EAGAIN;

return 0;
}

static struct ib_pd *mthca_alloc_pd(struct ib_device *ibdev,
struct ib_ucontext *context,
struct ib_udata *udata)
Expand Down Expand Up @@ -766,6 +783,7 @@ int mthca_register_device(struct mthca_dev *dev)
dev->ib_dev.query_gid = mthca_query_gid;
dev->ib_dev.alloc_ucontext = mthca_alloc_ucontext;
dev->ib_dev.dealloc_ucontext = mthca_dealloc_ucontext;
dev->ib_dev.mmap = mthca_mmap_uar;
dev->ib_dev.alloc_pd = mthca_alloc_pd;
dev->ib_dev.dealloc_pd = mthca_dealloc_pd;
dev->ib_dev.create_ah = mthca_ah_create;
Expand Down

0 comments on commit 53b8b3f

Please sign in to comment.