IB/hfi1: Allocate context data on memory node
authorSebastian Sanchez <sebastian.sanchez@intel.com>
Wed, 8 Feb 2017 13:26:37 +0000 (05:26 -0800)
committerDoug Ledford <dledford@redhat.com>
Sun, 19 Feb 2017 14:18:36 +0000 (09:18 -0500)
There are some memory allocation calls in hfi1_create_ctxtdata()
that do not use the numa function parameter. This
can cause cache lines to be filled over QPI.

Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Sebastian Sanchez <sebastian.sanchez@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/hfi1/init.c

index e3b5bc93bc70edd5e253766a6a76db6a13068d4d..f40864e9a3b24502f18d377762e33b266547a75d 100644 (file)
@@ -297,14 +297,15 @@ struct hfi1_ctxtdata *hfi1_create_ctxtdata(struct hfi1_pportdata *ppd, u32 ctxt,
                 * The resulting value will be rounded down to the closest
                 * multiple of dd->rcv_entries.group_size.
                 */
-               rcd->egrbufs.buffers = kcalloc(rcd->egrbufs.count,
-                                              sizeof(*rcd->egrbufs.buffers),
-                                              GFP_KERNEL);
+               rcd->egrbufs.buffers = kzalloc_node(
+                       rcd->egrbufs.count * sizeof(*rcd->egrbufs.buffers),
+                       GFP_KERNEL, numa);
                if (!rcd->egrbufs.buffers)
                        goto bail;
-               rcd->egrbufs.rcvtids = kcalloc(rcd->egrbufs.count,
-                                              sizeof(*rcd->egrbufs.rcvtids),
-                                              GFP_KERNEL);
+               rcd->egrbufs.rcvtids = kzalloc_node(
+                               rcd->egrbufs.count *
+                               sizeof(*rcd->egrbufs.rcvtids),
+                               GFP_KERNEL, numa);
                if (!rcd->egrbufs.rcvtids)
                        goto bail;
                rcd->egrbufs.size = eager_buffer_size;
@@ -322,8 +323,8 @@ struct hfi1_ctxtdata *hfi1_create_ctxtdata(struct hfi1_pportdata *ppd, u32 ctxt,
                rcd->egrbufs.rcvtid_size = HFI1_MAX_EAGER_BUFFER_SIZE;
 
                if (ctxt < dd->first_user_ctxt) { /* N/A for PSM contexts */
-                       rcd->opstats = kzalloc(sizeof(*rcd->opstats),
-                               GFP_KERNEL);
+                       rcd->opstats = kzalloc_node(sizeof(*rcd->opstats),
+                                                   GFP_KERNEL, numa);
                        if (!rcd->opstats)
                                goto bail;
                }