# blocking_recv: Use blocking version of scif_recv() (int)(default:1)
# scif_loopback: Use SCIF lookback instead of kernel copy based loopback (int)(default:0)
# host_proxy: Proxy card side RDMA operations to host (int)(default:0)
-# new_ib_type: Use new transport type dedicated to IBSCIF (int)(default:0)
+# new_ib_type: Use new transport type dedicated to IBSCIF (int)(default:1)
#
# over-ride default options for kernel module:
# options ibscif enable_fast_rdma=1
(/usr/sbin/ibpd &)
retval=$?
fi
+
modprobe ib_uverbs &&
modprobe ibp_server &&
modprobe ibp_cm_server &&
modprobe ibp_sa_server &&
modprobe ibscif
- retval=$?
+ retval+=$?
[ $retval -eq 0 ] && eval $_success || eval $_failure
fi
return $retval
}
-stop_module()
-{
- #if needed to return proper status
- if [ `grep -c $1 /proc/modules` -ne 0 ] ; then
- rmmod $1 &> /dev/null
- fi
-}
-
stop()
{
echo $"Stopping OFED Stack:"
if [ "$nohost" -eq 0 ]; then
echo -n "host"
- stop_module ibscif
- retval=$?
- stop_module ibp_sa_server
- stop_module ibp_cm_server
+ rmmod ibscif &> /dev/null
+ retval=$?
+ rmmod ibp_sa_server &> /dev/null
+ retval+=$?
+ rmmod ibp_cm_server &> /dev/null
retval+=$?
kill $(pidof /usr/sbin/ibpd) &>/dev/null
- stop_module ibp_server
+ rmmod ibp_server &> /dev/null
retval+=$?
[ $retval -eq 0 ] && eval $_success || eval $_failure
-From c01faf2a8053f8968b9bac84a4cbd54a9952d472 Mon Sep 17 00:00:00 2001
-From: Phil Cayton <phil.cayton@intel.com>
-Date: Tue, 21 Jan 2014 08:59:29 -0800
-Subject: [PATCH 01/12] ib_core add mic node and scif transport types
+xeon-phi: ib_core add mic node and scif transport types
The OFED SCIF driver implements a software-emulated RDMA device to allow OFED
based applications, such as Intel MPI, to run on Intel(R) MIC Architecture
or the host processor. This patch adds new node and transport types to the
ib_core kernel module to distinguish this new RDMA interface type.
---
-diff -urN a0/drivers/infiniband/core/sysfs.c a1/drivers/infiniband/core/sysfs.c
---- a0/drivers/infiniband/core/sysfs.c 2015-01-05 13:35:35.692687746 -0800
-+++ a1/drivers/infiniband/core/sysfs.c 2015-01-05 13:46:38.792659814 -0800
+diff -ruN a/drivers/infiniband/core/sysfs.c a1/drivers/infiniband/core/sysfs.c
+--- a/drivers/infiniband/core/sysfs.c 2015-09-10 09:29:25.232891731 -0700
++++ a1/drivers/infiniband/core/sysfs.c 2015-09-10 09:31:06.464899773 -0700
@@ -253,6 +253,8 @@
return sprintf(buf, "%s\n", "InfiniBand");
case IB_LINK_LAYER_ETHERNET:
default: return sprintf(buf, "%d: <unknown>\n", dev->node_type);
}
}
-diff -urN a0/drivers/infiniband/core/verbs.c a1/drivers/infiniband/core/verbs.c
---- a0/drivers/infiniband/core/verbs.c 2015-01-05 13:35:35.693687746 -0800
-+++ a1/drivers/infiniband/core/verbs.c 2015-01-05 13:49:08.470653509 -0800
+diff -ruN a/drivers/infiniband/core/verbs.c a1/drivers/infiniband/core/verbs.c
+--- a/drivers/infiniband/core/verbs.c 2015-09-10 09:29:25.230891773 -0700
++++ a1/drivers/infiniband/core/verbs.c 2015-09-10 09:31:06.465900979 -0700
@@ -121,6 +121,8 @@
return RDMA_TRANSPORT_USNIC;
case RDMA_NODE_USNIC_UDP:
default:
return IB_LINK_LAYER_UNSPECIFIED;
}
-diff -urN a0/include/rdma/ib_verbs.h a1/include/rdma/ib_verbs.h
---- a0/include/rdma/ib_verbs.h 2015-01-05 13:45:40.299662278 -0800
-+++ a1/include/rdma/ib_verbs.h 2015-01-05 13:50:57.590648913 -0800
+diff -ruN a/include/rdma/ib_verbs.h a1/include/rdma/ib_verbs.h
+--- a/include/rdma/ib_verbs.h 2015-09-10 09:29:25.240891724 -0700
++++ a1/include/rdma/ib_verbs.h 2015-09-10 09:31:06.466900599 -0700
@@ -75,13 +75,15 @@
RDMA_NODE_RNIC,
RDMA_NODE_USNIC,
};
enum ib_device_cap_flags {
-Binary files a0/include/rdma/.ib_verbs.h.rej.swp and a1/include/rdma/.ib_verbs.h.rej.swp differ
-From faf3b3f931806d4f044068c4e9b2ca4482a9177a Mon Sep 17 00:00:00 2001
-From: Phil Cayton <phil.cayton@intel.com>
-Date: Tue, 3 Jun 2014 09:50:57 -0700
-Subject: [PATCH 02/12] rdma_cm add mic node and scif transport types
+xeon-phi: rdma_cm add mic node and scif transport types
The OFED SCIF driver can leverage the iWARP cm calls to establish connections.
This patch utilizes the new node and transport types in the rdma cm to call
the underlying driver as needed.
---
-diff -urN a1/drivers/infiniband/core/cma.c a2/drivers/infiniband/core/cma.c
---- a1/drivers/infiniband/core/cma.c 2015-01-05 13:46:27.953660271 -0800
-+++ a2/drivers/infiniband/core/cma.c 2015-01-05 14:05:11.897612926 -0800
+diff -ruN a1/drivers/infiniband/core/cma.c a2/drivers/infiniband/core/cma.c
+--- a1/drivers/infiniband/core/cma.c 2015-09-10 09:30:08.319958447 -0700
++++ a2/drivers/infiniband/core/cma.c 2015-09-10 09:31:32.894900298 -0700
@@ -747,6 +747,7 @@
qp_attr->rq_psn = id_priv->seq_num;
break;
if (id_priv->cm_id.iw)
iw_destroy_cm_id(id_priv->cm_id.iw);
break;
-@@ -1994,6 +1996,7 @@
+@@ -1995,6 +1997,7 @@
}
break;
case RDMA_TRANSPORT_IWARP:
ret = cma_resolve_iw_route(id_priv, timeout_ms);
break;
default:
-@@ -2184,6 +2187,25 @@
+@@ -2185,6 +2188,25 @@
return ret;
}
static int cma_bind_addr(struct rdma_cm_id *id, struct sockaddr *src_addr,
struct sockaddr *dst_addr)
{
-@@ -2225,9 +2247,12 @@
+@@ -2226,9 +2248,12 @@
if (cma_any_addr(dst_addr)) {
ret = cma_resolve_loopback(id_priv);
} else {
ret = rdma_resolve_ip(&addr_client, cma_src_addr(id_priv),
dst_addr, &id->route.addr.dev_addr,
timeout_ms, addr_handler, id_priv);
-@@ -2598,6 +2623,7 @@
+@@ -2599,6 +2624,7 @@
goto err;
break;
case RDMA_TRANSPORT_IWARP:
ret = cma_iw_listen(id_priv, backlog);
if (ret)
goto err;
-@@ -2946,6 +2972,7 @@
+@@ -2948,6 +2974,7 @@
ret = cma_connect_ib(id_priv, conn_param);
break;
case RDMA_TRANSPORT_IWARP:
ret = cma_connect_iw(id_priv, conn_param);
break;
default:
-@@ -3073,6 +3100,7 @@
+@@ -3075,6 +3102,7 @@
}
break;
case RDMA_TRANSPORT_IWARP:
ret = cma_accept_iw(id_priv, conn_param);
break;
default:
-@@ -3133,6 +3161,7 @@
+@@ -3135,6 +3163,7 @@
0, private_data, private_data_len);
break;
case RDMA_TRANSPORT_IWARP:
ret = iw_cm_reject(id_priv->cm_id.iw,
private_data, private_data_len);
break;
-@@ -3163,6 +3192,7 @@
+@@ -3165,6 +3194,7 @@
ib_send_cm_drep(id_priv->cm_id.ib, NULL, 0);
break;
case RDMA_TRANSPORT_IWARP:
-From 2ddd9c09050d6f74a2ea9e3e21a76510bbdff155 Mon Sep 17 00:00:00 2001
-From: Phil Cayton <phil.cayton@intel.com>
-Date: Thu, 6 Feb 2014 14:23:36 -0800
-Subject: [PATCH 03/12] add context based udata support
+xeon-phi: add context based udata support
Normally the copy_to_user and copy_from_user calls are used to access vendor
private data when allocating resources from processes. However, when the
processes are running on MIC, this communication is proxied to the host kernel
via SCIF. This patch allows setup of context-based udata access routines.
---
-diff -urN a2/drivers/infiniband/core/uverbs_cmd.c a3/drivers/infiniband/core/uverbs_cmd.c
---- a2/drivers/infiniband/core/uverbs_cmd.c 2015-01-05 13:59:55.217626266 -0800
-+++ a3/drivers/infiniband/core/uverbs_cmd.c 2015-01-05 14:30:40.647548530 -0800
+diff -ruN a2/drivers/infiniband/core/uverbs_cmd.c a3/drivers/infiniband/core/uverbs_cmd.c
+--- a2/drivers/infiniband/core/uverbs_cmd.c 2015-09-10 09:31:23.790958256 -0700
++++ a3/drivers/infiniband/core/uverbs_cmd.c 2015-09-10 09:32:01.419900874 -0700
@@ -57,6 +57,21 @@
static struct uverbs_lock_class xrcd_lock_class = { .name = "XRCD-uobj" };
static struct uverbs_lock_class rule_lock_class = { .name = "RULE-uobj" };
ucontext->device = ibdev;
INIT_LIST_HEAD(&ucontext->pd_list);
INIT_LIST_HEAD(&ucontext->mr_list);
-Binary files a2/drivers/infiniband/core/.uverbs_cmd.c.rej.swp and a3/drivers/infiniband/core/.uverbs_cmd.c.rej.swp differ
-diff -urN a2/drivers/infiniband/core/uverbs.h a3/drivers/infiniband/core/uverbs.h
---- a2/drivers/infiniband/core/uverbs.h 2015-01-05 13:59:55.216626266 -0800
-+++ a3/drivers/infiniband/core/uverbs.h 2015-01-05 14:29:27.559551609 -0800
+diff -ruN a2/drivers/infiniband/core/uverbs.h a3/drivers/infiniband/core/uverbs.h
+--- a2/drivers/infiniband/core/uverbs.h 2015-09-10 09:31:23.788958210 -0700
++++ a3/drivers/infiniband/core/uverbs.h 2015-09-10 09:32:01.420901195 -0700
@@ -47,8 +47,11 @@
#include <rdma/ib_umem.h>
#include <rdma/ib_user_verbs.h>
(udata)->inbuf = (ilen) ? (const void __user *) (ibuf) : NULL; \
(udata)->outbuf = (olen) ? (void __user *) (obuf) : NULL; \
(udata)->inlen = (ilen); \
-diff -urN a2/include/rdma/ib_verbs.h a3/include/rdma/ib_verbs.h
---- a2/include/rdma/ib_verbs.h 2015-01-05 13:59:55.219626266 -0800
-+++ a3/include/rdma/ib_verbs.h 2015-01-05 14:18:48.871578512 -0800
+diff -ruN a2/include/rdma/ib_verbs.h a3/include/rdma/ib_verbs.h
+--- a2/include/rdma/ib_verbs.h 2015-09-10 09:31:23.754932456 -0700
++++ a3/include/rdma/ib_verbs.h 2015-09-10 09:32:01.420901195 -0700
@@ -1147,7 +1147,14 @@
int live;
};
-From 8b06f1090da0e12c6012d0d13d8b48c69640a6a7 Mon Sep 17 00:00:00 2001
-From: Phil Cayton <phil.cayton@intel.com>
-Date: Thu, 6 Feb 2014 14:08:02 -0800
-Subject: [PATCH 04/12] add context based umem support
+xeon-phi: add context based umem support
The ib_umem_get routine calls get_user_pages to pin pages and create the
ib_umem structure. Memory on MIC, however, must be mapped through SCIF for
access across PCI. This patch allows setup of context-based ib_umem mapping
routines.
---
-diff -urN a3/drivers/infiniband/core/umem.c a4/drivers/infiniband/core/umem.c
---- a3/drivers/infiniband/core/umem.c 2015-01-05 14:12:52.117593540 -0800
-+++ a4/drivers/infiniband/core/umem.c 2015-01-05 14:41:51.927520253 -0800
+diff -ruN a3/drivers/infiniband/core/umem.c a4/drivers/infiniband/core/umem.c
+--- a3/drivers/infiniband/core/umem.c 2015-09-10 09:31:52.628958359 -0700
++++ a4/drivers/infiniband/core/umem.c 2015-09-10 09:32:16.722901309 -0700
@@ -57,6 +57,10 @@
for_each_sg(umem->sg_head.sgl, sg, umem->npages, i) {
size_t size, int access, int dmasync)
{
struct ib_umem *umem;
-@@ -101,7 +162,6 @@
+@@ -109,7 +170,6 @@
if (!umem)
return ERR_PTR(-ENOMEM);
umem->length = size;
umem->offset = addr & ~PAGE_MASK;
umem->page_size = PAGE_SIZE;
-@@ -163,11 +223,18 @@
+@@ -171,11 +231,18 @@
sg_list_start = umem->sg_head.sgl;
while (npages) {
if (ret < 0)
goto out;
-@@ -219,7 +286,6 @@
+@@ -227,7 +294,6 @@
return ret < 0 ? ERR_PTR(ret) : umem;
}
static void ib_umem_account(struct work_struct *work)
{
-@@ -237,10 +303,10 @@
+@@ -245,10 +311,10 @@
}
/**
{
struct ib_ucontext *context = umem->context;
struct mm_struct *mm;
-@@ -290,9 +356,8 @@
+@@ -298,9 +364,8 @@
out:
kfree(umem);
}
{
int shift;
int i;
-@@ -307,4 +372,40 @@
+@@ -315,4 +380,40 @@
return n;
}
+ ops->page_count(umem) : ib_page_count_umem(umem);
+}
EXPORT_SYMBOL(ib_umem_page_count);
-diff -urN a3/include/rdma/ib_verbs.h a4/include/rdma/ib_verbs.h
---- a3/include/rdma/ib_verbs.h 2015-01-05 14:18:48.871578512 -0800
-+++ a4/include/rdma/ib_verbs.h 2015-01-05 14:36:00.826535043 -0800
+diff -ruN a3/include/rdma/ib_verbs.h a4/include/rdma/ib_verbs.h
+--- a3/include/rdma/ib_verbs.h 2015-09-10 09:32:01.420901195 -0700
++++ a4/include/rdma/ib_verbs.h 2015-09-10 09:32:16.723901528 -0700
@@ -1122,7 +1122,18 @@
u8 page_shift;
};
-From 8e3cff460efe00954b4c99ea23e42527c234c3f9 Mon Sep 17 00:00:00 2001
-From: Phil Cayton <phil.cayton@intel.com>
-Date: Tue, 4 Feb 2014 12:22:38 -0800
-Subject: [PATCH 05/12] allow mic ipoib qp creation
+xeon-phi: allow mic ipoib qp creation
From the host point of view, each MIC kernel appears as a "user-mode process"
to allow address translation to access the correct coprocessor mapped across
through ib_uverbs, moving the check is not an issue. This patch allows the
IPoIB driver on MIC to create QPs correctly.
---
-diff -urN a4/drivers/infiniband/hw/mlx4/qp.c a5/drivers/infiniband/hw/mlx4/qp.c
---- a4/drivers/infiniband/hw/mlx4/qp.c 2015-01-05 14:35:38.055536002 -0800
-+++ a5/drivers/infiniband/hw/mlx4/qp.c 2015-01-08 09:50:29.971123797 -0800
+diff -ruN a4/drivers/infiniband/hw/mlx4/qp.c a5/drivers/infiniband/hw/mlx4/qp.c
+--- a4/drivers/infiniband/hw/mlx4/qp.c 2015-09-10 09:32:10.146958289 -0700
++++ a5/drivers/infiniband/hw/mlx4/qp.c 2015-09-10 09:32:44.059932465 -0700
@@ -692,6 +692,12 @@
qp->mlx4_ib_qp_type = qp_type;
err = create_qp_common(to_mdev(pd->device), pd, init_attr, udata,
get_sqp_num(to_mdev(pd->device), init_attr),
-diff -urN a4/drivers/infiniband/hw/mlx5/qp.c a5/drivers/infiniband/hw/mlx5/qp.c
---- a4/drivers/infiniband/hw/mlx5/qp.c 2015-01-05 14:35:38.065536002 -0800
-+++ a5/drivers/infiniband/hw/mlx5/qp.c 2015-01-05 14:46:41.322508063 -0800
+diff -ruN a4/drivers/infiniband/hw/mlx5/qp.c a5/drivers/infiniband/hw/mlx5/qp.c
+--- a4/drivers/infiniband/hw/mlx5/qp.c 2015-09-10 09:32:10.150958093 -0700
++++ a5/drivers/infiniband/hw/mlx5/qp.c 2015-09-10 09:32:44.060932417 -0700
@@ -852,6 +852,9 @@
}
-From 129a1e301d8567b8d79abe19fd2d998738951cda Mon Sep 17 00:00:00 2001
-From: Phil Cayton <phil.cayton@intel.com>
-Date: Tue, 4 Feb 2014 12:23:56 -0800
-Subject: [PATCH 06/12] add scif.h to the include directory matching the
- location that is in the mpss installation
+xeon-phi: add scif.h to the include directory matching the
-Signed-off-by: Phil Cayton <phil.cayton@intel.com>
+location that is in the mpss installation
---
-diff -urN a5/include/modules/scif.h a6/include/modules/scif.h
+diff -ruN a5/include/modules/scif.h a6/include/modules/scif.h
--- a5/include/modules/scif.h 1969-12-31 16:00:00.000000000 -0800
-+++ a6/include/modules/scif.h 2015-01-05 14:59:07.370476637 -0800
++++ a6/include/modules/scif.h 2015-09-10 09:33:19.295932526 -0700
@@ -0,0 +1,1748 @@
+/*
+ * Copyright 2010-2013 Intel Corporation.
-From a6d3fc7a6f6d3b3b621dfbd71babbff5ae58d1dd Mon Sep 17 00:00:00 2001
-From: Phil Cayton <phil.cayton@intel.com>
-Date: Wed, 28 May 2014 15:50:26 -0700
-Subject: [PATCH 07/13] Add CCL-Direct (ibp) drivers to Infiniband
+xeon-phi: Add CCL-Direct (ibp) drivers to Infiniband
This includes the base ibp server module as well as
the server modules for sa and cm
-
-Signed-off-by: Phil Cayton <phil.cayton@intel.com>
---
diff -ruN a6/drivers/infiniband/ibp/cm/cm_ibp_abi.h a7/drivers/infiniband/ibp/cm/cm_ibp_abi.h
--- a6/drivers/infiniband/ibp/cm/cm_ibp_abi.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/cm/cm_ibp_abi.h 2015-03-11 11:05:40.651368454 -0700
++++ a7/drivers/infiniband/ibp/cm/cm_ibp_abi.h 2015-09-10 09:33:35.322900652 -0700
@@ -0,0 +1,399 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* CM_IBP_ABI_H */
diff -ruN a6/drivers/infiniband/ibp/cm/cm_server_msg.c a7/drivers/infiniband/ibp/cm/cm_server_msg.c
--- a6/drivers/infiniband/ibp/cm/cm_server_msg.c 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/cm/cm_server_msg.c 2015-03-11 11:05:40.651368454 -0700
++++ a7/drivers/infiniband/ibp/cm/cm_server_msg.c 2015-09-10 09:33:35.324900603 -0700
@@ -0,0 +1,1058 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+}
diff -ruN a6/drivers/infiniband/ibp/cm/common.h a7/drivers/infiniband/ibp/cm/common.h
--- a6/drivers/infiniband/ibp/cm/common.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/cm/common.h 2015-03-11 11:05:40.651368454 -0700
++++ a7/drivers/infiniband/ibp/cm/common.h 2015-09-10 09:33:35.324900603 -0700
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* COMMON_H */
diff -ruN a6/drivers/infiniband/ibp/cm/ibp-abi.h a7/drivers/infiniband/ibp/cm/ibp-abi.h
--- a6/drivers/infiniband/ibp/cm/ibp-abi.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/cm/ibp-abi.h 2015-03-11 11:05:40.652368454 -0700
++++ a7/drivers/infiniband/ibp/cm/ibp-abi.h 2015-09-10 09:33:35.325932447 -0700
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* IBP_ABI_H */
diff -ruN a6/drivers/infiniband/ibp/cm/ibp_exports.h a7/drivers/infiniband/ibp/cm/ibp_exports.h
--- a6/drivers/infiniband/ibp/cm/ibp_exports.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/cm/ibp_exports.h 2015-03-11 11:05:40.652368454 -0700
++++ a7/drivers/infiniband/ibp/cm/ibp_exports.h 2015-09-10 09:33:35.325932447 -0700
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* IBP_EXPORTS_H */
diff -ruN a6/drivers/infiniband/ibp/cm/Makefile a7/drivers/infiniband/ibp/cm/Makefile
--- a6/drivers/infiniband/ibp/cm/Makefile 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/cm/Makefile 2015-03-11 11:06:09.751367228 -0700
++++ a7/drivers/infiniband/ibp/cm/Makefile 2015-09-10 09:33:35.325932447 -0700
@@ -0,0 +1,26 @@
+KERNEL_V := $(shell uname -r)
+
+ dos2unix *.[ch] Kconfig Makefile
diff -ruN a6/drivers/infiniband/ibp/cm/server.c a7/drivers/infiniband/ibp/cm/server.c
--- a6/drivers/infiniband/ibp/cm/server.c 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/cm/server.c 2015-03-11 11:05:40.652368454 -0700
++++ a7/drivers/infiniband/ibp/cm/server.c 2015-09-10 09:33:35.326924807 -0700
@@ -0,0 +1,221 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+module_exit(ibp_cm_server_exit);
diff -ruN a6/drivers/infiniband/ibp/cm/server.h a7/drivers/infiniband/ibp/cm/server.h
--- a6/drivers/infiniband/ibp/cm/server.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/cm/server.h 2015-03-11 11:05:40.652368454 -0700
++++ a7/drivers/infiniband/ibp/cm/server.h 2015-09-10 09:33:35.326924807 -0700
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* SERVER_H */
diff -ruN a6/drivers/infiniband/ibp/cm/server_msg.c a7/drivers/infiniband/ibp/cm/server_msg.c
--- a6/drivers/infiniband/ibp/cm/server_msg.c 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/cm/server_msg.c 2015-03-11 11:05:40.652368454 -0700
++++ a7/drivers/infiniband/ibp/cm/server_msg.c 2015-09-10 09:33:35.326924807 -0700
@@ -0,0 +1,176 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+}
diff -ruN a6/drivers/infiniband/ibp/drv/common.h a7/drivers/infiniband/ibp/drv/common.h
--- a6/drivers/infiniband/ibp/drv/common.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/drv/common.h 2015-03-11 11:05:40.653368454 -0700
++++ a7/drivers/infiniband/ibp/drv/common.h 2015-09-10 09:33:35.327932404 -0700
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* COMMON_H */
diff -ruN a6/drivers/infiniband/ibp/drv/ibp-abi.h a7/drivers/infiniband/ibp/drv/ibp-abi.h
--- a6/drivers/infiniband/ibp/drv/ibp-abi.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/drv/ibp-abi.h 2015-03-11 11:05:40.653368454 -0700
++++ a7/drivers/infiniband/ibp/drv/ibp-abi.h 2015-09-10 09:33:35.327932404 -0700
@@ -0,0 +1,649 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* IBP_ABI_H */
diff -ruN a6/drivers/infiniband/ibp/drv/ibp.h a7/drivers/infiniband/ibp/drv/ibp.h
--- a6/drivers/infiniband/ibp/drv/ibp.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/drv/ibp.h 2015-03-11 11:05:40.653368454 -0700
++++ a7/drivers/infiniband/ibp/drv/ibp.h 2015-09-10 09:33:35.328932470 -0700
@@ -0,0 +1,257 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* IBP_H */
diff -ruN a6/drivers/infiniband/ibp/drv/Makefile a7/drivers/infiniband/ibp/drv/Makefile
--- a6/drivers/infiniband/ibp/drv/Makefile 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/drv/Makefile 2015-03-11 11:06:14.420367031 -0700
++++ a7/drivers/infiniband/ibp/drv/Makefile 2015-09-10 09:33:35.328932470 -0700
@@ -0,0 +1,26 @@
+KERNEL_V := $(shell uname -r)
+
+ dos2unix *.[ch] Kconfig Makefile
diff -ruN a6/drivers/infiniband/ibp/drv/server.c a7/drivers/infiniband/ibp/drv/server.c
--- a6/drivers/infiniband/ibp/drv/server.c 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/drv/server.c 2015-03-11 11:05:40.653368454 -0700
-@@ -0,0 +1,548 @@
++++ a7/drivers/infiniband/ibp/drv/server.c 2015-09-17 08:39:39.412983116 -0700
+@@ -0,0 +1,549 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+ *
+static struct ibp_client *ibp_create_client(scif_epd_t ep, uint16_t node)
+{
+ struct ibp_client *client;
-+ int ret;
++ int ret = -ENOMEM;
+
+ /* If a reconnect occurs while on the cdev_list just update the ep. */
+ down_read(&list_rwsem);
+ client = kzalloc(sizeof(*client), GFP_KERNEL);
+ if (!client) {
+ print_err("kzalloc failed\n");
-+ return ERR_PTR(-ENOMEM);
++ goto err0;
+ }
+
+ client->ep = ep;
+ client->workqueue = create_singlethread_workqueue(DRV_NAME);
+ if (!client->workqueue) {
+ print_err("create_singlethread_workqueue failed\n");
-+ goto err0;
++ goto err1;
+ }
+
+ ret = ibp_create_cdev(client, node);
+ if (ret)
-+ goto err1;
++ goto err2;
+
+ return client;
-+err1:
++err2:
+ destroy_workqueue(client->workqueue);
-+err0:
++err1:
+ kfree(client);
++err0:
+ return ERR_PTR(ret);
+}
+
+module_exit(ibp_server_exit);
diff -ruN a6/drivers/infiniband/ibp/drv/server.h a7/drivers/infiniband/ibp/drv/server.h
--- a6/drivers/infiniband/ibp/drv/server.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/drv/server.h 2015-03-11 11:05:40.654368454 -0700
++++ a7/drivers/infiniband/ibp/drv/server.h 2015-09-10 09:33:35.329932324 -0700
@@ -0,0 +1,191 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* SERVER_H */
diff -ruN a6/drivers/infiniband/ibp/drv/server_msg.c a7/drivers/infiniband/ibp/drv/server_msg.c
--- a6/drivers/infiniband/ibp/drv/server_msg.c 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/drv/server_msg.c 2015-03-11 11:05:40.655368454 -0700
-@@ -0,0 +1,3098 @@
++++ a7/drivers/infiniband/ibp/drv/server_msg.c 2015-09-10 09:34:50.117900541 -0700
+@@ -0,0 +1,3073 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+ *
+ uobj->user_handle = (uintptr_t)ucontext;
+ kref_init(&uobj->ref);
+ init_rwsem(&uobj->mutex);
++ INIT_LIST_HEAD(&uobj->list);
+ lockdep_set_class(&uobj->mutex, &__key);
+ uobj->live = 1;
+
+
+ if (!IS_NULL_OR_ERR(uobj)) {
+ ucontext = (struct ibp_ucontext *) uobj->user_handle;
-+ if (ucontext) {
-+ mutex_lock(&ucontext->mutex);
-+ list_del(&uobj->list);
-+ mutex_unlock(&ucontext->mutex);
-+ }
++
++ mutex_lock(&ucontext->mutex);
++ list_del(&uobj->list);
++ mutex_unlock(&ucontext->mutex);
+
+ ibp_add_to_stack(o_stack, (void *) uobj);
+ }
+ if (IS_ERR(pd)) {
+ ret = PTR_ERR(pd);
+ print_err("ib_alloc_pd returned %d\n", ret);
-+ /*
-+ * Clear uobj's user_handle as destroy_uobj tries to list_del
-+ * uobj from the list and uobj has NOT been added yet
-+ */
-+ uobj->user_handle = 0;
+ ibp_destroy_uobj(uobj);
+ goto send_resp;
+ }
+ if (IS_ERR(ah)) {
+ ret = PTR_ERR(ah);
+ print_err("ib_create_ah returned %d\n", ret);
-+ /*
-+ * Clear uobj's user_handle as destroy_uobj tries to list_del
-+ * uobj from the list and uobj has NOT been added yet
-+ */
-+ uobj->user_handle = 0;
+ ibp_destroy_uobj(uobj);
+ goto send_resp;
+ }
+ if (IS_ERR(srq)) {
+ ret = PTR_ERR(srq);
+ print_err("ib_create_srq returned %d\n", ret);
-+ /*
-+ * Clear uobj's user_handle as destroy_uobj tries to list_del
-+ * uobj from the list and uobj has NOT been added yet
-+ */
-+ uobj->user_handle = 0;
+ ibp_destroy_uobj(uobj);
+ goto send_resp;
+ }
+ if (IS_ERR(qp->ibqp)) {
+ ret = PTR_ERR(qp->ibqp);
+ print_err("ib_create_qp returned %d\n", ret);
-+ /*
-+ * Clear uobj's user_handle as destroy_uobj tries to list_del
-+ * uobj from the list and uobj has NOT been added yet
-+ */
-+ uobj->user_handle = 0;
+ ibp_destroy_uobj(uobj);
+ goto send_resp;
+ }
+ if (IS_ERR(cq)) {
+ ret = PTR_ERR(cq);
+ print_err("ib_create_cq returned %d\n", ret);
-+ /*
-+ * Clear uobj's user_handle as destroy_uobj tries to list_del
-+ * uobj from the list and uobj has NOT been added yet
-+ */
-+ uobj->user_handle = 0;
+ ibp_destroy_uobj(uobj);
+ goto send_resp;
+ }
+}
diff -ruN a6/drivers/infiniband/ibp/drv/stack.c a7/drivers/infiniband/ibp/drv/stack.c
--- a6/drivers/infiniband/ibp/drv/stack.c 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/drv/stack.c 2015-03-11 11:05:40.655368454 -0700
++++ a7/drivers/infiniband/ibp/drv/stack.c 2015-09-10 09:33:35.331960564 -0700
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+}
diff -ruN a6/drivers/infiniband/ibp/drv/stack.h a7/drivers/infiniband/ibp/drv/stack.h
--- a6/drivers/infiniband/ibp/drv/stack.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/drv/stack.h 2015-03-11 11:05:40.655368454 -0700
++++ a7/drivers/infiniband/ibp/drv/stack.h 2015-09-10 09:33:35.331960564 -0700
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* _IBP_STACK_H_ */
diff -ruN a6/drivers/infiniband/ibp/Kconfig a7/drivers/infiniband/ibp/Kconfig
--- a6/drivers/infiniband/ibp/Kconfig 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/Kconfig 2015-03-11 11:05:40.655368454 -0700
++++ a7/drivers/infiniband/ibp/Kconfig 2015-09-10 09:33:35.331960564 -0700
@@ -0,0 +1,16 @@
+config IBP_SERVER
+ tristate "CCL Direct IB Server drivers"
+ This option causes debug code to be compiled into the CCL Direct drivers.
diff -ruN a6/drivers/infiniband/ibp/Makefile a7/drivers/infiniband/ibp/Makefile
--- a6/drivers/infiniband/ibp/Makefile 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/Makefile 2015-03-11 11:05:40.655368454 -0700
++++ a7/drivers/infiniband/ibp/Makefile 2015-09-10 09:33:35.331960564 -0700
@@ -0,0 +1,3 @@
+obj-$(CONFIG_IBP_SERVER) += drv/
+obj-$(CONFIG_IBP_SERVER) += cm/
+obj-$(CONFIG_IBP_SERVER) += sa/
diff -ruN a6/drivers/infiniband/ibp/sa/common.h a7/drivers/infiniband/ibp/sa/common.h
--- a6/drivers/infiniband/ibp/sa/common.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/sa/common.h 2015-03-11 11:05:40.656368454 -0700
++++ a7/drivers/infiniband/ibp/sa/common.h 2015-09-10 09:33:35.331960564 -0700
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* COMMON_H */
diff -ruN a6/drivers/infiniband/ibp/sa/ibp-abi.h a7/drivers/infiniband/ibp/sa/ibp-abi.h
--- a6/drivers/infiniband/ibp/sa/ibp-abi.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/sa/ibp-abi.h 2015-03-11 11:05:40.656368454 -0700
++++ a7/drivers/infiniband/ibp/sa/ibp-abi.h 2015-09-10 09:33:35.331960564 -0700
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* IBP_ABI_H */
diff -ruN a6/drivers/infiniband/ibp/sa/ibp_exports.h a7/drivers/infiniband/ibp/sa/ibp_exports.h
--- a6/drivers/infiniband/ibp/sa/ibp_exports.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/sa/ibp_exports.h 2015-03-11 11:05:40.656368454 -0700
++++ a7/drivers/infiniband/ibp/sa/ibp_exports.h 2015-09-10 09:33:35.331960564 -0700
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* IBP_EXPORTS_H */
diff -ruN a6/drivers/infiniband/ibp/sa/Makefile a7/drivers/infiniband/ibp/sa/Makefile
--- a6/drivers/infiniband/ibp/sa/Makefile 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/sa/Makefile 2015-03-11 11:06:22.521366690 -0700
++++ a7/drivers/infiniband/ibp/sa/Makefile 2015-09-10 09:33:35.331960564 -0700
@@ -0,0 +1,26 @@
+KERNEL_V := $(shell uname -r)
+
+ dos2unix *.[ch] Kconfig Makefile
diff -ruN a6/drivers/infiniband/ibp/sa/sa_ibp_abi.h a7/drivers/infiniband/ibp/sa/sa_ibp_abi.h
--- a6/drivers/infiniband/ibp/sa/sa_ibp_abi.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/sa/sa_ibp_abi.h 2015-03-11 11:05:40.656368454 -0700
++++ a7/drivers/infiniband/ibp/sa/sa_ibp_abi.h 2015-09-10 09:33:35.332958325 -0700
@@ -0,0 +1,251 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* SA_IBP_ABI_H */
diff -ruN a6/drivers/infiniband/ibp/sa/sa_server_msg.c a7/drivers/infiniband/ibp/sa/sa_server_msg.c
--- a6/drivers/infiniband/ibp/sa/sa_server_msg.c 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/sa/sa_server_msg.c 2015-03-11 11:05:40.657368454 -0700
++++ a7/drivers/infiniband/ibp/sa/sa_server_msg.c 2015-09-10 09:33:35.332958325 -0700
@@ -0,0 +1,970 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+}
diff -ruN a6/drivers/infiniband/ibp/sa/sa_table.h a7/drivers/infiniband/ibp/sa/sa_table.h
--- a6/drivers/infiniband/ibp/sa/sa_table.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/sa/sa_table.h 2015-03-11 11:05:40.657368454 -0700
++++ a7/drivers/infiniband/ibp/sa/sa_table.h 2015-09-10 09:33:35.332958325 -0700
@@ -0,0 +1,131 @@
+/*"
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+};
diff -ruN a6/drivers/infiniband/ibp/sa/server.c a7/drivers/infiniband/ibp/sa/server.c
--- a6/drivers/infiniband/ibp/sa/server.c 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/sa/server.c 2015-03-11 11:05:40.657368454 -0700
++++ a7/drivers/infiniband/ibp/sa/server.c 2015-09-10 09:33:35.332958325 -0700
@@ -0,0 +1,221 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+module_exit(ibp_sa_server_exit);
diff -ruN a6/drivers/infiniband/ibp/sa/server.h a7/drivers/infiniband/ibp/sa/server.h
--- a6/drivers/infiniband/ibp/sa/server.h 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/sa/server.h 2015-03-11 11:05:40.657368454 -0700
++++ a7/drivers/infiniband/ibp/sa/server.h 2015-09-10 09:33:35.332958325 -0700
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
+#endif /* SERVER_H */
diff -ruN a6/drivers/infiniband/ibp/sa/server_msg.c a7/drivers/infiniband/ibp/sa/server_msg.c
--- a6/drivers/infiniband/ibp/sa/server_msg.c 1969-12-31 16:00:00.000000000 -0800
-+++ a7/drivers/infiniband/ibp/sa/server_msg.c 2015-03-11 11:05:40.657368454 -0700
++++ a7/drivers/infiniband/ibp/sa/server_msg.c 2015-09-10 09:33:35.332958325 -0700
@@ -0,0 +1,185 @@
+/*
+ * Copyright (c) 2011-2013 Intel Corporation. All rights reserved.
-From 674c5e41008346a8d68f534d408e240b152dec5e Mon Sep 17 00:00:00 2001
-From: Phil Cayton <phil.cayton@intel.com>
-Date: Wed, 28 May 2014 15:53:58 -0700
-Subject: [PATCH 08/13] Add ibscif to the Infiniband HW directory
-
-Signed-off-by: Phil Cayton <phil.cayton@intel.com>
+xeon-phi: Add ibscif to the Infiniband HW directory
---
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_ah.c a8/drivers/infiniband/hw/scif/ibscif_ah.c
--- a7/drivers/infiniband/hw/scif/ibscif_ah.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_ah.c 2015-03-10 13:56:38.840575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_ah.c 2015-09-10 09:35:25.571900695 -0700
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+}
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_cm.c a8/drivers/infiniband/hw/scif/ibscif_cm.c
--- a7/drivers/infiniband/hw/scif/ibscif_cm.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_cm.c 2015-03-10 13:56:38.828575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_cm.c 2015-09-10 09:35:25.572900862 -0700
@@ -0,0 +1,515 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_cq.c a8/drivers/infiniband/hw/scif/ibscif_cq.c
--- a7/drivers/infiniband/hw/scif/ibscif_cq.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_cq.c 2015-03-10 13:56:38.838575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_cq.c 2015-09-10 09:35:25.572900862 -0700
@@ -0,0 +1,313 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+}
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_driver.h a8/drivers/infiniband/hw/scif/ibscif_driver.h
--- a7/drivers/infiniband/hw/scif/ibscif_driver.h 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_driver.h 2015-03-10 13:56:38.840575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_driver.h 2015-09-10 09:35:25.573932333 -0700
@@ -0,0 +1,787 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+#endif /* IBSCIF_DRIVER_H */
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_loopback.c a8/drivers/infiniband/hw/scif/ibscif_loopback.c
--- a7/drivers/infiniband/hw/scif/ibscif_loopback.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_loopback.c 2015-03-10 13:56:38.838575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_loopback.c 2015-09-10 09:35:25.574932378 -0700
@@ -0,0 +1,582 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+}
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_main.c a8/drivers/infiniband/hw/scif/ibscif_main.c
--- a7/drivers/infiniband/hw/scif/ibscif_main.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_main.c 2015-03-10 13:56:38.829575818 -0700
-@@ -0,0 +1,357 @@
++++ a8/drivers/infiniband/hw/scif/ibscif_main.c 2015-09-17 14:26:23.143892632 -0700
+@@ -0,0 +1,379 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+ *
+MODULE_PARAM(int, host_proxy, 0,
+ "Proxy card side RDMA operations to host");
+
-+#if ((LINUX_VERSION_CODE>=KERNEL_VERSION(3,5,0)) || CONFIG_MK1OM || CONFIG_ML1OM)
-+#define USE_NEW_IB_TYPE 1
-+#else
-+#define USE_NEW_IB_TYPE 0
-+#endif
-+MODULE_PARAM(int, new_ib_type, USE_NEW_IB_TYPE,
++MODULE_PARAM(int, new_ib_type, 1,
+ "Use new transport type dedicated to IBSCIF");
+
+MODULE_PARAM(int, verbose, 0,
+ return head_copied;
+}
+
++#if LINUX_VERSION_CODE>=KERNEL_VERSION(3,10,0)
++int ibscif_wiremap_add(void *obj, int *id)
++{
++ int ret;
++
++ write_lock_bh(&wiremap_lock);
++ ret = idr_alloc(&wiremap, obj, 0, 0, GFP_ATOMIC);
++ write_unlock_bh(&wiremap_lock);
++
++ if (ret < 0)
++ return ret;
++
++ *id = ret;
++
++ return 0;
++}
++#else
+/*
+ * Because idr_pre_get acquires the same internal spinlock used by idr_pre_get/idr_remove
+ * calls under a write_lock_bh, we need to call idr_pre_get with bottom half disabled.
+
+ return ret;
+}
-+
++
+int ibscif_wiremap_add(void *obj, int *id)
+{
+ int ret;
+
+ return ret;
+}
++#endif
+
+void ibscif_wiremap_del(int id)
+{
+
+static int ibscif_init_wiremap(void)
+{
++ int ret;
+ /*
+ * Instead of treating them as opaque, some applications assert that returned key
+ * values are non-zero. As a work-around, reserve the first key from the wiremap.
+ */
-+ int ret = ibscif_wiremap_add(&reserved_0, &reserved_0);
++#if LINUX_VERSION_CODE>=KERNEL_VERSION(3,10,0)
++ ret = idr_alloc(&wiremap, &reserved_0, 0, 1, GFP_KERNEL);
++#else
++ ret = ibscif_wiremap_add(&reserved_0, &reserved_0);
++#endif
+ BUG_ON(reserved_0 != 0);
+ return ret;
+}
+
+static void ibscif_free_wiremap(void)
+{
++#if LINUX_VERSION_CODE>=KERNEL_VERSION(3,10,0)
++ idr_destroy(&wiremap);
++#else
+ write_lock_bh(&wiremap_lock);
+ idr_remove_all(&wiremap);
+ idr_destroy(&wiremap);
+ write_unlock_bh(&wiremap_lock);
++#endif
+}
+
+static void ibscif_init_params(void)
+module_exit(ibscif_exit);
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_mr.c a8/drivers/infiniband/hw/scif/ibscif_mr.c
--- a7/drivers/infiniband/hw/scif/ibscif_mr.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_mr.c 2015-03-10 13:56:38.828575818 -0700
-@@ -0,0 +1,559 @@
++++ a8/drivers/infiniband/hw/scif/ibscif_mr.c 2015-09-17 08:49:08.885982855 -0700
+@@ -0,0 +1,552 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+ *
+{
+}
+
-+static u64 ibscif_sg_dma_address(struct ib_device *ibdev, struct scatterlist *sg)
++static void ibscif_sync_single(struct ib_device *ibdev, u64 dma, size_t size,
++ enum dma_data_direction direction)
+{
-+ return (u64)sg->dma_address;
-+}
-+
-+static unsigned int ibscif_sg_dma_len(struct ib_device *ibdev, struct scatterlist *sg)
-+{
-+ return sg->dma_length;
+}
+
+static void *ibscif_dma_alloc_coherent(struct ib_device *ibdev, size_t size, u64 *dma_handle, gfp_t flag)
+ ibscif_dma_nop,
+ ibscif_map_sg,
+ ibscif_unmap_sg,
-+ ibscif_sg_dma_address,
-+ ibscif_sg_dma_len,
-+ ibscif_dma_nop,
-+ ibscif_dma_nop,
++ ibscif_sync_single,
++ ibscif_sync_single,
+ ibscif_dma_alloc_coherent,
+ ibscif_dma_free_coherent
+};
+
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_pd.c a8/drivers/infiniband/hw/scif/ibscif_pd.c
--- a7/drivers/infiniband/hw/scif/ibscif_pd.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_pd.c 2015-03-10 13:56:38.841575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_pd.c 2015-09-10 09:35:25.575932341 -0700
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+}
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_post.c a8/drivers/infiniband/hw/scif/ibscif_post.c
--- a7/drivers/infiniband/hw/scif/ibscif_post.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_post.c 2015-03-10 13:56:38.828575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_post.c 2015-09-10 09:35:25.576932424 -0700
@@ -0,0 +1,306 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+}
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_procfs.c a8/drivers/infiniband/hw/scif/ibscif_procfs.c
--- a7/drivers/infiniband/hw/scif/ibscif_procfs.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_procfs.c 2015-03-10 13:56:38.840575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_procfs.c 2015-09-10 09:35:25.576932424 -0700
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+}
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_protocol.c a8/drivers/infiniband/hw/scif/ibscif_protocol.c
--- a7/drivers/infiniband/hw/scif/ibscif_protocol.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_protocol.c 2015-03-10 13:56:38.839575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_protocol.c 2015-09-10 09:35:25.579932655 -0700
@@ -0,0 +1,2816 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+}
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_protocol.h a8/drivers/infiniband/hw/scif/ibscif_protocol.h
--- a7/drivers/infiniband/hw/scif/ibscif_protocol.h 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_protocol.h 2015-03-10 13:56:38.840575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_protocol.h 2015-09-10 09:35:25.580932785 -0700
@@ -0,0 +1,395 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+#endif /* IBSCIF_PROTOCOL_H */
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_provider.c a8/drivers/infiniband/hw/scif/ibscif_provider.c
--- a7/drivers/infiniband/hw/scif/ibscif_provider.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_provider.c 2015-03-10 13:56:38.829575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_provider.c 2015-09-10 09:35:25.580932785 -0700
@@ -0,0 +1,410 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+}
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_qp.c a8/drivers/infiniband/hw/scif/ibscif_qp.c
--- a7/drivers/infiniband/hw/scif/ibscif_qp.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_qp.c 2015-03-10 13:56:38.818575819 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_qp.c 2015-09-10 09:35:25.580932785 -0700
@@ -0,0 +1,868 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_scheduler.c a8/drivers/infiniband/hw/scif/ibscif_scheduler.c
--- a7/drivers/infiniband/hw/scif/ibscif_scheduler.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_scheduler.c 2015-03-10 13:56:38.841575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_scheduler.c 2015-09-10 09:35:25.580932785 -0700
@@ -0,0 +1,195 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+}
diff -ruN a7/drivers/infiniband/hw/scif/ibscif_util.c a8/drivers/infiniband/hw/scif/ibscif_util.c
--- a7/drivers/infiniband/hw/scif/ibscif_util.c 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/ibscif_util.c 2015-03-10 13:56:38.828575818 -0700
++++ a8/drivers/infiniband/hw/scif/ibscif_util.c 2015-09-10 09:35:25.581934798 -0700
@@ -0,0 +1,623 @@
+/*
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.
+
diff -ruN a7/drivers/infiniband/hw/scif/Kconfig a8/drivers/infiniband/hw/scif/Kconfig
--- a7/drivers/infiniband/hw/scif/Kconfig 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/Kconfig 2015-03-10 13:56:38.839575818 -0700
++++ a8/drivers/infiniband/hw/scif/Kconfig 2015-09-10 09:35:25.581934798 -0700
@@ -0,0 +1,4 @@
+config INFINIBAND_SCIF
+ tristate "SCIF RDMA driver support"
+ RDMA over SCIF driver.
diff -ruN a7/drivers/infiniband/hw/scif/Makefile a8/drivers/infiniband/hw/scif/Makefile
--- a7/drivers/infiniband/hw/scif/Makefile 1969-12-31 16:00:00.000000000 -0800
-+++ a8/drivers/infiniband/hw/scif/Makefile 2015-03-11 10:17:34.663490022 -0700
++++ a8/drivers/infiniband/hw/scif/Makefile 2015-09-10 09:35:25.581934798 -0700
@@ -0,0 +1,39 @@
+KERNEL_V := $(shell uname -r)
+
-From 4f27d323bd47563f40a663672a331c5b2c95138e Mon Sep 17 00:00:00 2001
-From: Phil Cayton <phil.cayton@intel.com>
-Date: Tue, 4 Feb 2014 12:25:45 -0800
-Subject: [PATCH 09/12] update drivers/infiniband's Kconfig and Makefile to
- allow compilation of CCL-Direct (ibp)
+xeon-phi: update drivers/infiniband's Kconfig and Makefile to
-Signed-off-by: Phil Cayton <phil.cayton@intel.com>
+allow compilation of CCL-Direct (ibp)
---
-diff -urN a8/drivers/infiniband/hw/Makefile a9/drivers/infiniband/hw/Makefile
---- a8/drivers/infiniband/hw/Makefile 2015-01-05 15:04:13.993463721 -0800
-+++ a9/drivers/infiniband/hw/Makefile 2015-01-05 15:09:10.056451249 -0800
+diff -ruN a8/drivers/infiniband/hw/Makefile a9/drivers/infiniband/hw/Makefile
+--- a8/drivers/infiniband/hw/Makefile 2015-09-10 09:35:14.874958188 -0700
++++ a9/drivers/infiniband/hw/Makefile 2015-09-10 09:35:42.139932498 -0700
@@ -10,3 +10,4 @@
obj-$(CONFIG_INFINIBAND_NES) += nes/
obj-$(CONFIG_INFINIBAND_OCRDMA) += ocrdma/
obj-$(CONFIG_INFINIBAND_USNIC) += usnic/
+obj-$(CONFIG_INFINIBAND_SCIF) += scif/
-diff -urN a8/drivers/infiniband/Kconfig a9/drivers/infiniband/Kconfig
---- a8/drivers/infiniband/Kconfig 2015-01-05 15:04:14.001463720 -0800
-+++ a9/drivers/infiniband/Kconfig 2015-01-05 15:07:03.176456594 -0800
+diff -ruN a8/drivers/infiniband/Kconfig a9/drivers/infiniband/Kconfig
+--- a8/drivers/infiniband/Kconfig 2015-09-10 09:35:14.875958141 -0700
++++ a9/drivers/infiniband/Kconfig 2015-09-10 09:35:42.139932498 -0700
@@ -55,6 +55,9 @@
source "drivers/infiniband/hw/nes/Kconfig"
source "drivers/infiniband/hw/ocrdma/Kconfig"
source "drivers/infiniband/ulp/ipoib/Kconfig"
-diff -urN a8/drivers/infiniband/Makefile a9/drivers/infiniband/Makefile
---- a8/drivers/infiniband/Makefile 2015-01-05 15:04:14.001463720 -0800
-+++ a9/drivers/infiniband/Makefile 2015-01-05 15:08:25.112453143 -0800
+diff -ruN a8/drivers/infiniband/Makefile a9/drivers/infiniband/Makefile
+--- a8/drivers/infiniband/Makefile 2015-09-10 09:35:14.881958235 -0700
++++ a9/drivers/infiniband/Makefile 2015-09-10 09:35:42.140932680 -0700
@@ -1,3 +1,4 @@
obj-$(CONFIG_INFINIBAND) += core/
obj-$(CONFIG_INFINIBAND) += hw/
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Jubin John <jubin.john@intel.com>
---
-diff -urN a9/drivers/infiniband/hw/qib/Makefile a10/drivers/infiniband/hw/qib/Makefile
---- a9/drivers/infiniband/hw/qib/Makefile 2015-01-05 15:05:04.280461602 -0800
-+++ a10/drivers/infiniband/hw/qib/Makefile 2015-01-05 15:10:58.250446692 -0800
+diff -ruN a9/drivers/infiniband/hw/qib/Makefile a10/drivers/infiniband/hw/qib/Makefile
+--- a9/drivers/infiniband/hw/qib/Makefile 2015-09-10 09:35:36.420958201 -0700
++++ a10/drivers/infiniband/hw/qib/Makefile 2015-09-10 09:36:03.135901227 -0700
@@ -14,3 +14,8 @@
ib_qib-$(CONFIG_X86_64) += qib_wc_x86_64.o
ib_qib-$(CONFIG_PPC64) += qib_wc_ppc64.o
+ib_qib-y += qib_knx.o
+ccflags-y += -DQIB_CONFIG_KNX
+endif
-diff -urN a9/drivers/infiniband/hw/qib/qib_common.h a10/drivers/infiniband/hw/qib/qib_common.h
---- a9/drivers/infiniband/hw/qib/qib_common.h 2015-01-05 15:05:04.281461602 -0800
-+++ a10/drivers/infiniband/hw/qib/qib_common.h 2015-01-05 15:10:58.250446692 -0800
+diff -ruN a9/drivers/infiniband/hw/qib/qib_common.h a10/drivers/infiniband/hw/qib/qib_common.h
+--- a9/drivers/infiniband/hw/qib/qib_common.h 2015-09-10 09:35:36.420958201 -0700
++++ a10/drivers/infiniband/hw/qib/qib_common.h 2015-09-10 09:36:03.136900809 -0700
@@ -1,4 +1,5 @@
/*
+ * Copyright (c) 2012 Intel Corporation. All rights reserved.
/* size of struct base_info to write to */
__u32 spu_base_info_size;
-diff -urN a9/drivers/infiniband/hw/qib/qib_file_ops.c a10/drivers/infiniband/hw/qib/qib_file_ops.c
---- a9/drivers/infiniband/hw/qib/qib_file_ops.c 2015-01-05 15:05:04.280461602 -0800
-+++ a10/drivers/infiniband/hw/qib/qib_file_ops.c 2015-01-05 15:10:58.251446692 -0800
+diff -ruN a9/drivers/infiniband/hw/qib/qib_file_ops.c a10/drivers/infiniband/hw/qib/qib_file_ops.c
+--- a9/drivers/infiniband/hw/qib/qib_file_ops.c 2015-09-10 09:35:36.418958234 -0700
++++ a10/drivers/infiniband/hw/qib/qib_file_ops.c 2015-09-10 09:36:03.138932454 -0700
@@ -48,6 +48,7 @@
#include "qib.h"
#include "qib_common.h"
break;
case QIB_CMD_USER_INIT:
-diff -urN a9/drivers/infiniband/hw/qib/qib.h a10/drivers/infiniband/hw/qib/qib.h
---- a9/drivers/infiniband/hw/qib/qib.h 2015-01-05 15:05:04.280461602 -0800
-+++ a10/drivers/infiniband/hw/qib/qib.h 2015-01-05 15:10:58.250446692 -0800
+diff -ruN a9/drivers/infiniband/hw/qib/qib.h a10/drivers/infiniband/hw/qib/qib.h
+--- a9/drivers/infiniband/hw/qib/qib.h 2015-09-10 09:35:36.420958201 -0700
++++ a10/drivers/infiniband/hw/qib/qib.h 2015-09-10 09:36:03.139932597 -0700
@@ -234,6 +234,10 @@
u32 lookaside_qpn;
/* QPs waiting for context processing */
static inline struct qib_devdata *dd_from_ppd(struct qib_pportdata *ppd)
{
-diff -urN a9/drivers/infiniband/hw/qib/qib_init.c a10/drivers/infiniband/hw/qib/qib_init.c
---- a9/drivers/infiniband/hw/qib/qib_init.c 2015-01-05 15:05:04.279461602 -0800
-+++ a10/drivers/infiniband/hw/qib/qib_init.c 2015-01-05 15:10:58.251446692 -0800
+diff -ruN a9/drivers/infiniband/hw/qib/qib_init.c a10/drivers/infiniband/hw/qib/qib_init.c
+--- a9/drivers/infiniband/hw/qib/qib_init.c 2015-09-10 09:35:36.420958201 -0700
++++ a10/drivers/infiniband/hw/qib/qib_init.c 2015-09-10 09:36:03.140934324 -0700
@@ -51,6 +51,10 @@
#include "qib_verbs.h"
#endif
#undef pr_fmt
#define pr_fmt(fmt) QIB_DRV_NAME ": " fmt
-@@ -1301,6 +1305,12 @@
+@@ -1319,6 +1323,12 @@
/* not fatal if it doesn't work */
if (qib_init_qibfs())
pr_err("Unable to register ipathfs\n");
goto bail; /* all OK */
bail_dev:
-@@ -1325,6 +1335,9 @@
+@@ -1346,6 +1356,9 @@
{
int ret;
ret = qib_exit_qibfs();
if (ret)
pr_err(
-@@ -1568,6 +1581,9 @@
+@@ -1589,6 +1602,9 @@
/* unregister from IB core */
qib_unregister_ib_device(dd);
/*
* Disable the IB link, disable interrupts on the device,
* clear dma engines, etc.
-diff -urN a9/drivers/infiniband/hw/qib/qib_knx.c a10/drivers/infiniband/hw/qib/qib_knx.c
+diff -ruN a9/drivers/infiniband/hw/qib/qib_knx.c a10/drivers/infiniband/hw/qib/qib_knx.c
--- a9/drivers/infiniband/hw/qib/qib_knx.c 1969-12-31 16:00:00.000000000 -0800
-+++ a10/drivers/infiniband/hw/qib/qib_knx.c 2015-01-05 15:10:58.252446692 -0800
++++ a10/drivers/infiniband/hw/qib/qib_knx.c 2015-09-10 09:36:03.140934324 -0700
@@ -0,0 +1,1532 @@
+/*
+ * Copyright (c) 2012, 2013 Intel Corporation. All rights reserved.
+ kfree(server);
+ }
+}
-diff -urN a9/drivers/infiniband/hw/qib/qib_knx_common.h a10/drivers/infiniband/hw/qib/qib_knx_common.h
+diff -ruN a9/drivers/infiniband/hw/qib/qib_knx_common.h a10/drivers/infiniband/hw/qib/qib_knx_common.h
--- a9/drivers/infiniband/hw/qib/qib_knx_common.h 1969-12-31 16:00:00.000000000 -0800
-+++ a10/drivers/infiniband/hw/qib/qib_knx_common.h 2015-01-05 15:10:58.252446692 -0800
++++ a10/drivers/infiniband/hw/qib/qib_knx_common.h 2015-09-10 09:36:03.140934324 -0700
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2013 Intel Corporation. All rights reserved.
+};
+
+#endif /* _QIB_KNX_COMMON_H */
-diff -urN a9/drivers/infiniband/hw/qib/qib_knx.h a10/drivers/infiniband/hw/qib/qib_knx.h
+diff -ruN a9/drivers/infiniband/hw/qib/qib_knx.h a10/drivers/infiniband/hw/qib/qib_knx.h
--- a9/drivers/infiniband/hw/qib/qib_knx.h 1969-12-31 16:00:00.000000000 -0800
-+++ a10/drivers/infiniband/hw/qib/qib_knx.h 2015-01-05 15:10:58.252446692 -0800
++++ a10/drivers/infiniband/hw/qib/qib_knx.h 2015-09-10 09:36:03.141932310 -0700
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2012, 2013 Intel Corporation. All rights reserved.
+}
+#endif
+#endif /* _QIB_KNX_H */
-diff -urN a9/drivers/infiniband/hw/qib/qib_user_sdma.c a10/drivers/infiniband/hw/qib/qib_user_sdma.c
---- a9/drivers/infiniband/hw/qib/qib_user_sdma.c 2015-01-05 15:05:04.279461602 -0800
-+++ a10/drivers/infiniband/hw/qib/qib_user_sdma.c 2015-01-05 15:10:58.252446692 -0800
+diff -ruN a9/drivers/infiniband/hw/qib/qib_user_sdma.c a10/drivers/infiniband/hw/qib/qib_user_sdma.c
+--- a9/drivers/infiniband/hw/qib/qib_user_sdma.c 2015-09-10 09:35:36.421958157 -0700
++++ a10/drivers/infiniband/hw/qib/qib_user_sdma.c 2015-09-10 09:36:03.141932310 -0700
@@ -63,80 +63,6 @@
pid_t pid;
};
{
unsigned long flags;
-diff -urN a9/drivers/infiniband/hw/qib/qib_user_sdma.h a10/drivers/infiniband/hw/qib/qib_user_sdma.h
---- a9/drivers/infiniband/hw/qib/qib_user_sdma.h 2015-01-05 15:05:04.280461602 -0800
-+++ a10/drivers/infiniband/hw/qib/qib_user_sdma.h 2015-01-05 15:10:58.253446692 -0800
+diff -ruN a9/drivers/infiniband/hw/qib/qib_user_sdma.h a10/drivers/infiniband/hw/qib/qib_user_sdma.h
+--- a9/drivers/infiniband/hw/qib/qib_user_sdma.h 2015-09-10 09:35:36.419958299 -0700
++++ a10/drivers/infiniband/hw/qib/qib_user_sdma.h 2015-09-10 09:36:03.141932310 -0700
@@ -31,12 +31,108 @@
*/
#include <linux/device.h>
-From 536a8d5b5c68ecd2ca73446f25443fe8bb234a46 Mon Sep 17 00:00:00 2001
-From: Phil Cayton <phil.cayton@intel.com>
-Date: Thu, 29 May 2014 14:35:13 -0700
-Subject: [PATCH 11/12] correct ib_addr.h for older kernels
-
-Signed-off-by: Phil Cayton <phil.cayton@intel.com>
+xeon-phi: correct ib_addr.h for older kernels
---
-diff -urN a10/include/rdma/ib_addr.h a11/include/rdma/ib_addr.h
---- a10/include/rdma/ib_addr.h 2015-01-05 15:10:42.263447365 -0800
-+++ a11/include/rdma/ib_addr.h 2015-01-05 15:12:36.058442572 -0800
+diff -ruN a10/include/rdma/ib_addr.h a11/include/rdma/ib_addr.h
+--- a10/include/rdma/ib_addr.h 2015-09-10 09:35:55.061958421 -0700
++++ a11/include/rdma/ib_addr.h 2015-09-10 09:36:18.093901591 -0700
@@ -239,6 +239,27 @@
return 0;
}
-From 6d88a748ca017a22c08d25e29144dd392c988eb9 Mon Sep 17 00:00:00 2001
-From: Phil Cayton <phil.cayton@intel.com>
-Date: Thu, 5 Jun 2014 09:44:42 -0700
-Subject: [PATCH 12/12] add mlx4 cq_comp locking already done in event handler
-
+xeon-phi: add mlx4 cq_comp locking already done in event handler
---
-diff -urN a11/drivers/net/ethernet/mellanox/mlx4/cq.c a12/drivers/net/ethernet/mellanox/mlx4/cq.c
---- a11/drivers/net/ethernet/mellanox/mlx4/cq.c 2015-01-05 15:12:24.028443079 -0800
-+++ a12/drivers/net/ethernet/mellanox/mlx4/cq.c 2015-01-05 15:14:27.994437857 -0800
+diff -ruN a11/drivers/net/ethernet/mellanox/mlx4/cq.c a12/drivers/net/ethernet/mellanox/mlx4/cq.c
+--- a11/drivers/net/ethernet/mellanox/mlx4/cq.c 2015-09-10 09:36:13.117932528 -0700
++++ a12/drivers/net/ethernet/mellanox/mlx4/cq.c 2015-09-10 09:36:38.460901094 -0700
@@ -54,10 +54,17 @@
void mlx4_cq_completion(struct mlx4_dev *dev, u32 cqn)