Patch "IB/rdmavt: Allocate CQ memory on the correct node" has been added to the 4.14-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
IB/rdmavt: Allocate CQ memory on the correct node
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ib-rdmavt-allocate-cq-memory-on-the-correct-node.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Mon Apr 9 13:58:16 CEST 2018
From: Mike Marciniszyn <[email protected]>
Date: Mon, 18 Dec 2017 19:57:06 -0800
Subject: IB/rdmavt: Allocate CQ memory on the correct node
From: Mike Marciniszyn <[email protected]>
[ Upstream commit db9a2c6f9b6196b889b98e961cb9a37617b11ccf ]
CQ allocation does not ensure that completion queue entries and the completion queue structure are allocated on the correct numa node.
Fix by allocating the rvt_cq and kernel CQ entries on the device node, leaving the user CQ entries on the default local node. Also ensure CQ resizes use the correct allocator when extending a CQ.
--- drivers/infiniband/sw/rdmavt/cq.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
drivers/infiniband/sw/rdmavt/cq.c +7 -3
@@ -198,7 +198,7 @@ struct ib_cq *rvt_create_cq(struct ib_dereturn ERR_PTR (-EINVAL );/* Allocate the completion queue structure. */ - cq =kzalloc (sizeof (*cq),GFP_KERNEL ); + cq =kzalloc_node (sizeof (*cq),GFP_KERNEL , rdi->dparms.node);if (!cq)return ERR_PTR (-ENOMEM );
@@ -214,7 +214,9 @@ struct ib_cq *rvt_create_cq(struct ib_de sz +=sizeof (struct ib_uverbs_wc ) * (entries +1 ); else sz += sizeof(struct ib_wc) * (entries + 1); - wc =vmalloc_user (sz); + wc = udata ? +vmalloc_user (sz) : +vzalloc_node (sz, rdi->dparms.node);if (!wc) { ret =ERR_PTR (-ENOMEM ); goto bail_cq;
@@ -369,7 +371,9 @@ int rvt_resize_cq(struct ib_cq *ibcq, in sz +=sizeof (struct ib_uverbs_wc ) * (cqe +1 ); else sz += sizeof(struct ib_wc) * (cqe + 1); - wc =vmalloc_user (sz); + wc = udata ? +vmalloc_user (sz) : +vzalloc_node (sz, rdi->dparms.node);if (!wc)return -ENOMEM ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/ib-rdmavt-allocate-cq-memory-on-the-correct-node.patch