}
        lk_tab_size = rdi->lkey_table.max * sizeof(*rdi->lkey_table.table);
        rdi->lkey_table.table = (struct rvt_mregion __rcu **)
-                              vmalloc(lk_tab_size);
+                              vmalloc_node(lk_tab_size, rdi->dparms.node);
        if (!rdi->lkey_table.table)
                return -ENOMEM;
 
 
                return -EINVAL;
 
        /* allocate parent object */
-       rdi->qp_dev = kzalloc(sizeof(*rdi->qp_dev), GFP_KERNEL);
+       rdi->qp_dev = kzalloc_node(sizeof(*rdi->qp_dev), GFP_KERNEL,
+                                  rdi->dparms.node);
        if (!rdi->qp_dev)
                return -ENOMEM;
 
        rdi->qp_dev->qp_table_size = rdi->dparms.qp_table_size;
        rdi->qp_dev->qp_table_bits = ilog2(rdi->dparms.qp_table_size);
        rdi->qp_dev->qp_table =
-               kmalloc(rdi->qp_dev->qp_table_size *
-                       sizeof(*rdi->qp_dev->qp_table),
-                       GFP_KERNEL);
+               kmalloc_node(rdi->qp_dev->qp_table_size *
+                            sizeof(*rdi->qp_dev->qp_table),
+                            GFP_KERNEL, rdi->dparms.node);
        if (!rdi->qp_dev->qp_table)
                goto no_qp_table;
 
                                (init_attr->cap.max_send_wr + 1) * sz,
                                gfp, PAGE_KERNEL);
                else
-                       swq = vmalloc(
-                               (init_attr->cap.max_send_wr + 1) * sz);
+                       swq = vmalloc_node(
+                               (init_attr->cap.max_send_wr + 1) * sz,
+                               rdi->dparms.node);
                if (!swq)
                        return ERR_PTR(-ENOMEM);
 
                } else if (init_attr->cap.max_recv_sge > 1)
                        sg_list_sz = sizeof(*qp->r_sg_list) *
                                (init_attr->cap.max_recv_sge - 1);
-               qp = kzalloc(sz + sg_list_sz, gfp);
+               qp = kzalloc_node(sz + sg_list_sz, gfp, rdi->dparms.node);
                if (!qp)
                        goto bail_swq;
 
                                                qp->r_rq.size * sz,
                                                gfp, PAGE_KERNEL);
                        else
-                               qp->r_rq.wq = vmalloc(
+                               qp->r_rq.wq = vmalloc_node(
                                                sizeof(struct rvt_rwq) +
-                                               qp->r_rq.size * sz);
+                                               qp->r_rq.size * sz,
+                                               rdi->dparms.node);
                        if (!qp->r_rq.wq)
                                goto bail_driver_priv;
                }