lkml.org 
[lkml]   [2007]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 11/18] ib: nopage
    Convert IB from nopage to fault.

    Signed-off-by: Nick Piggin <npiggin@suse.de>
    Cc: rolandd@cisco.com
    Cc: mshefty@ichips.intel.com
    Cc: hal.rosenstock@gmail.com
    Cc: general@lists.openfabrics.org
    Cc: linux-kernel@vger.kernel.org
    ---
    drivers/infiniband/hw/ipath/ipath_debug.h | 4 +--
    drivers/infiniband/hw/ipath/ipath_file_ops.c | 29 +++++++++------------------
    2 files changed, 12 insertions(+), 21 deletions(-)
    Index: linux-2.6/drivers/infiniband/hw/ipath/ipath_file_ops.c
    ===================================================================
    --- linux-2.6.orig/drivers/infiniband/hw/ipath/ipath_file_ops.c
    +++ linux-2.6/drivers/infiniband/hw/ipath/ipath_file_ops.c
    @@ -1120,33 +1120,24 @@ bail:
    }

    /*
    - * ipath_file_vma_nopage - handle a VMA page fault.
    + * ipath_file_vma_fault - handle a VMA page fault.
    */
    -static struct page *ipath_file_vma_nopage(struct vm_area_struct *vma,
    - unsigned long address, int *type)
    +static int ipath_file_vma_fault(struct vm_area_struct *vma,
    + struct vm_fault *vmf)
    {
    - unsigned long offset = address - vma->vm_start;
    - struct page *page = NOPAGE_SIGBUS;
    - void *pageptr;
    + struct page *page;

    - /*
    - * Convert the vmalloc address into a struct page.
    - */
    - pageptr = (void *)(offset + (vma->vm_pgoff << PAGE_SHIFT));
    - page = vmalloc_to_page(pageptr);
    + page = vmalloc_to_page((void *)(vmf->pgoff << PAGE_SHIFT));
    if (!page)
    - goto out;
    -
    - /* Increment the reference count. */
    + return VM_FAULT_SIGBUS;
    get_page(page);
    - if (type)
    - *type = VM_FAULT_MINOR;
    -out:
    - return page;
    + vmf->page = page;
    +
    + return 0;
    }

    static struct vm_operations_struct ipath_file_vm_ops = {
    - .nopage = ipath_file_vma_nopage,
    + .fault = ipath_file_vma_fault,
    };

    static int mmap_kvaddr(struct vm_area_struct *vma, u64 pgaddr,
    Index: linux-2.6/drivers/infiniband/hw/ipath/ipath_debug.h
    ===================================================================
    --- linux-2.6.orig/drivers/infiniband/hw/ipath/ipath_debug.h
    +++ linux-2.6/drivers/infiniband/hw/ipath/ipath_debug.h
    @@ -55,7 +55,7 @@
    #define __IPATH_PKTDBG 0x80 /* print packet data */
    /* print process startup (init)/exit messages */
    #define __IPATH_PROCDBG 0x100
    -/* print mmap/nopage stuff, not using VDBG any more */
    +/* print mmap/fault stuff, not using VDBG any more */
    #define __IPATH_MMDBG 0x200
    #define __IPATH_ERRPKTDBG 0x400
    #define __IPATH_USER_SEND 0x1000 /* use user mode send */
    @@ -81,7 +81,7 @@
    #define __IPATH_VERBDBG 0x0 /* very verbose debug */
    #define __IPATH_PKTDBG 0x0 /* print packet data */
    #define __IPATH_PROCDBG 0x0 /* process startup (init)/exit messages */
    -/* print mmap/nopage stuff, not using VDBG any more */
    +/* print mmap/fault stuff, not using VDBG any more */
    #define __IPATH_MMDBG 0x0
    #define __IPATH_EPKTDBG 0x0 /* print ethernet packet data */
    #define __IPATH_IPATHDBG 0x0 /* Ethernet (IPATH) table dump on */
    --



    \
     
     \ /
      Last update: 2007-12-05 09:03    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean