]> git.openfabrics.org - ~aditr/compat-rdma.git/commitdiff
Update qib backport for SLES 12.3
authortczeszun <tomasz.czeszun@intel.com>
Wed, 20 Dec 2017 11:56:17 +0000 (03:56 -0800)
committertczeszun <tomasz.czeszun@intel.com>
Wed, 20 Dec 2017 11:56:17 +0000 (03:56 -0800)
patches/0010-BACKPORT-qib.patch

index a4724c62013f07c1627bc99d59cd697cdbf37261..95b25049a9af86ffab208b3bbcd860cb1169cec7 100644 (file)
@@ -176,16 +176,44 @@ diff -durp a/drivers/infiniband/hw/qib/qib_init.c b/drivers/infiniband/hw/qib/qi
 diff -durp a/drivers/infiniband/hw/qib/qib_user_pages.c b/drivers/infiniband/hw/qib/qib_user_pages.c
 --- a/drivers/infiniband/hw/qib/qib_user_pages.c
 +++ b/drivers/infiniband/hw/qib/qib_user_pages.c
-@@ -66,7 +66,8 @@ static int __qib_get_user_pages(unsigned
+@@ -58,6 +58,12 @@ static int __qib_get_user_pages(unsigned
+       size_t got;
+       int ret;
++#ifdef HAVE_GET_USER_PAGES_GUP_FLAGS
++        int gup_flags;
++
++        gup_flags = FOLL_WRITE | FOLL_FORCE;
++#endif
++
+       lock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT;
+       if (num_pages > lock_limit && !capable(CAP_IPC_LOCK)) {
+@@ -66,9 +72,20 @@ static int __qib_get_user_pages(unsigned
        }
  
        for (got = 0; got < num_pages; got += ret) {
 -              ret = get_user_pages(start_page + got * PAGE_SIZE,
-+              ret = get_user_pages(current, current->mm,
-+                                   start_page + got * PAGE_SIZE,
-                                    num_pages - got, 1, 1,
-                                    p + got, NULL);
+-                                   num_pages - got, 1, 1,
+-                                   p + got, NULL);
++#ifdef HAVE_GET_USER_PAGES_8_PARAMS
++                ret = get_user_pages(current, current->mm,
++                                     start_page + got * PAGE_SIZE,
++                                     num_pages - got, 1, 1,
++                                     p + got, NULL);
++#else
++              ret = get_user_pages(start_page + got * PAGE_SIZE,
++                                     num_pages - got,
++#ifdef HAVE_GET_USER_PAGES_GUP_FLAGS
++                                     gup_flags, p + got, NULL);
++#else
++                                     1, 1, p + got, NULL);
++#endif
++#endif
                if (ret < 0)
+                       goto bail_release;
+       }
+
 diff -durp a/drivers/infiniband/hw/qib/qib_pcie.c b/drivers/infiniband/hw/qib/qib_pcie.c
 --- a/drivers/infiniband/hw/qib/qib_pcie.c
 +++ b/drivers/infiniband/hw/qib/qib_pcie.c