From: Dennis Dalessandro <dennis.dalessandro-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Cc: Harish Chegondi
<harish.chegondi-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Mike Marciniszyn
<mike.marciniszyn-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Subject: [PATCH 20/23] IB/hfi1: Avoid credit return allocation for cpu-less NUMA nodes
Date: Wed, 07 Dec 2016 19:34:19 -0800 [thread overview]
Message-ID: <20161208033417.21135.27290.stgit@scvm10.sc.intel.com> (raw)
In-Reply-To: <20161208032312.21135.66056.stgit-9QXIwq+3FY+1XWohqUldA0EOCMrvLtNR@public.gmane.org>
From: Harish Chegondi <harish.chegondi-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Do not allocate credit return base and DMA memory for
NUMA nodes without CPUs.
Reviewed-by: Mike Marciniszyn <mike.marciniszyn-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Signed-off-by: Harish Chegondi <harish.chegondi-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
drivers/infiniband/hw/hfi1/affinity.c | 3 ++-
drivers/infiniband/hw/hfi1/affinity.h | 1 +
drivers/infiniband/hw/hfi1/pio.c | 20 +++-----------------
3 files changed, 6 insertions(+), 18 deletions(-)
diff --git a/drivers/infiniband/hw/hfi1/affinity.c b/drivers/infiniband/hw/hfi1/affinity.c
index 67ea85a..7a3d906 100644
--- a/drivers/infiniband/hw/hfi1/affinity.c
+++ b/drivers/infiniband/hw/hfi1/affinity.c
@@ -125,6 +125,7 @@ int node_affinity_init(void)
cpumask_weight(topology_sibling_cpumask(
cpumask_first(&node_affinity.proc.mask)
));
+ node_affinity.num_possible_nodes = num_possible_nodes();
node_affinity.num_online_nodes = num_online_nodes();
node_affinity.num_online_cpus = num_online_cpus();
@@ -135,7 +136,7 @@ int node_affinity_init(void)
*/
init_real_cpu_mask();
- hfi1_per_node_cntr = kcalloc(num_possible_nodes(),
+ hfi1_per_node_cntr = kcalloc(node_affinity.num_possible_nodes,
sizeof(*hfi1_per_node_cntr), GFP_KERNEL);
if (!hfi1_per_node_cntr)
return -ENOMEM;
diff --git a/drivers/infiniband/hw/hfi1/affinity.h b/drivers/infiniband/hw/hfi1/affinity.h
index 28eac98..e78c7aa 100644
--- a/drivers/infiniband/hw/hfi1/affinity.h
+++ b/drivers/infiniband/hw/hfi1/affinity.h
@@ -107,6 +107,7 @@ struct hfi1_affinity_node_list {
struct cpumask real_cpu_mask;
struct cpu_mask_set proc;
int num_core_siblings;
+ int num_possible_nodes;
int num_online_nodes;
int num_online_cpus;
struct mutex lock; /* protects affinity nodes */
diff --git a/drivers/infiniband/hw/hfi1/pio.c b/drivers/infiniband/hw/hfi1/pio.c
index efe1064..501a7e9 100644
--- a/drivers/infiniband/hw/hfi1/pio.c
+++ b/drivers/infiniband/hw/hfi1/pio.c
@@ -2029,21 +2029,10 @@ int init_pervl_scs(struct hfi1_devdata *dd)
int init_credit_return(struct hfi1_devdata *dd)
{
int ret;
- int num_numa;
int i;
- num_numa = num_online_nodes();
- /* enforce the expectation that the numas are compact */
- for (i = 0; i < num_numa; i++) {
- if (!node_online(i)) {
- dd_dev_err(dd, "NUMA nodes are not compact\n");
- ret = -EINVAL;
- goto done;
- }
- }
-
dd->cr_base = kcalloc(
- num_numa,
+ node_affinity.num_possible_nodes,
sizeof(struct credit_return_base),
GFP_KERNEL);
if (!dd->cr_base) {
@@ -2051,7 +2040,7 @@ int init_credit_return(struct hfi1_devdata *dd)
ret = -ENOMEM;
goto done;
}
- for (i = 0; i < num_numa; i++) {
+ for_each_node_with_cpus(i) {
int bytes = TXE_NUM_CONTEXTS * sizeof(struct credit_return);
set_dev_node(&dd->pcidev->dev, i);
@@ -2078,14 +2067,11 @@ int init_credit_return(struct hfi1_devdata *dd)
void free_credit_return(struct hfi1_devdata *dd)
{
- int num_numa;
int i;
if (!dd->cr_base)
return;
-
- num_numa = num_online_nodes();
- for (i = 0; i < num_numa; i++) {
+ for (i = 0; i < node_affinity.num_possible_nodes; i++) {
if (dd->cr_base[i].va) {
dma_free_coherent(&dd->pcidev->dev,
TXE_NUM_CONTEXTS *
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-12-08 3:34 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-08 3:32 [PATCH 00/23] IB/hfi1,qib,rdmavt: Patches for 4.10 Dennis Dalessandro
[not found] ` <20161208032312.21135.66056.stgit-9QXIwq+3FY+1XWohqUldA0EOCMrvLtNR@public.gmane.org>
2016-12-08 3:32 ` [PATCH 01/23] IB/hfi1: Read new EPROM format Dennis Dalessandro
2016-12-08 3:32 ` [PATCH 02/23] IB/hfi1: Fix dc8051 multiple qword memory reads Dennis Dalessandro
2016-12-08 3:32 ` [PATCH 03/23] IB/hfi1: Use non-atomic __test_and_clear_bit in hot path Dennis Dalessandro
2016-12-08 3:32 ` [PATCH 04/23] IB/hfi1: Export 8051 memory and LCB registers via debugfs Dennis Dalessandro
2016-12-08 3:32 ` [PATCH 05/23] IB/hfi1: Disable header suppression for short packets Dennis Dalessandro
2016-12-08 3:32 ` [PATCH 06/23] IB/rdmavt: Fix trace hierarchy Dennis Dalessandro
2016-12-08 3:32 ` [PATCH 07/23] IB/hfi1: Show statistics counters under IB stats interface Dennis Dalessandro
2016-12-08 3:33 ` [PATCH 08/23] IB/hfi1: Remove dependence on qp->s_cur_size Dennis Dalessandro
2016-12-08 3:33 ` [PATCH 09/23] IB/hfi1: Remove definition of unused hfi1_affinity struct Dennis Dalessandro
2016-12-08 3:33 ` [PATCH 10/23] IB/hfi1: Add special setting for low power AOC Dennis Dalessandro
2016-12-08 3:33 ` [PATCH 11/23] IB/rdmavt: Add trace of MR segs Dennis Dalessandro
2016-12-08 3:33 ` [PATCH 12/23] IB/hfi1: Remove usage of qp->s_cur_sge Dennis Dalessandro
2016-12-08 3:33 ` [PATCH 13/23] IB/hfi1: Remove critical section gap in sc_buffer_alloc() Dennis Dalessandro
2016-12-08 3:33 ` [PATCH 14/23] IB/hfi1: Preserve external device completed bit Dennis Dalessandro
2016-12-08 3:33 ` [PATCH 15/23] IB/hfi1: Replace qp->refcount release code with standard driver wrapper Dennis Dalessandro
2016-12-08 3:33 ` [PATCH 16/23] IB/hfi1: Use reference count wrapper for MRs Dennis Dalessandro
2016-12-08 3:34 ` [PATCH 17/23] IB/qib: Use standard refcount wrapper for QPs Dennis Dalessandro
2016-12-08 3:34 ` [PATCH 18/23] IB/rdmavt: Add a send completion helper Dennis Dalessandro
2016-12-08 3:34 ` [PATCH 19/23] IB/hfi1,IB/qib: Use new " Dennis Dalessandro
2016-12-08 3:34 ` Dennis Dalessandro [this message]
2016-12-08 3:34 ` [PATCH 21/23] IB/rdmavt: Add swqe mr deref helper Dennis Dalessandro
2016-12-08 3:34 ` [PATCH 22/23] IB/hfi1,IB/qib: use rvt " Dennis Dalessandro
2016-12-08 3:34 ` [PATCH 23/23] IB/rdmavt, IB/hfi1, IB/qib: Add inlines for mtu division Dennis Dalessandro
2016-12-12 20:18 ` [PATCH 00/23] IB/hfi1,qib,rdmavt: Patches for 4.10 Doug Ledford
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161208033417.21135.27290.stgit@scvm10.sc.intel.com \
--to=dennis.dalessandro-ral2jqcrhueavxtiumwx3w@public.gmane.org \
--cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=harish.chegondi-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mike.marciniszyn-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox