aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/qib/qib.h
diff options
context:
space:
mode:
authorRamkrishna Vepa <ramkrishna.vepa@intel.com>2013-05-28 12:57:33 -0400
committerRoland Dreier <roland@purestorage.com>2013-06-21 20:19:48 -0400
commite0f30baca1ebe5547f6760f760b8c4e189fc1203 (patch)
tree5b5b8858c292da3138f1ab8535872005f06f3e50 /drivers/infiniband/hw/qib/qib.h
parentab4a13d69bf01b098906c60e7598d10752401a56 (diff)
IB/qib: Add optional NUMA affinity
This patch adds context relative numa affinity conditioned on the module parameter numa_aware. The qib_ctxtdata has an additional node_id member and qib_create_ctxtdata() has an addition node_id parameter. The allocations within the hdr queue and eager queue setup routines now take this additional member and adjust allocations as necesary. PSM will pass the either current numa node or the node closest to the HCA depending on numa_aware. Verbs will always use the node closest to the HCA. Reviewed-by: Dean Luick <dean.luick@intel.com> Signed-off-by: Ramkrishna Vepa <ramkrishna.vepa@intel.com> Signed-off-by: Vinit Agnihotri <vinit.abhay.agnihotri@intel.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/hw/qib/qib.h')
-rw-r--r--drivers/infiniband/hw/qib/qib.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/qib/qib.h b/drivers/infiniband/hw/qib/qib.h
index cecbd43f9212..2ee82e6550c7 100644
--- a/drivers/infiniband/hw/qib/qib.h
+++ b/drivers/infiniband/hw/qib/qib.h
@@ -154,6 +154,8 @@ struct qib_ctxtdata {
154 */ 154 */
155 /* instead of calculating it */ 155 /* instead of calculating it */
156 unsigned ctxt; 156 unsigned ctxt;
157 /* local node of context */
158 int node_id;
157 /* non-zero if ctxt is being shared. */ 159 /* non-zero if ctxt is being shared. */
158 u16 subctxt_cnt; 160 u16 subctxt_cnt;
159 /* non-zero if ctxt is being shared. */ 161 /* non-zero if ctxt is being shared. */
@@ -1088,6 +1090,8 @@ struct qib_devdata {
1088 u16 psxmitwait_check_rate; 1090 u16 psxmitwait_check_rate;
1089 /* high volume overflow errors defered to tasklet */ 1091 /* high volume overflow errors defered to tasklet */
1090 struct tasklet_struct error_tasklet; 1092 struct tasklet_struct error_tasklet;
1093
1094 int assigned_node_id; /* NUMA node closest to HCA */
1091}; 1095};
1092 1096
1093/* hol_state values */ 1097/* hol_state values */
@@ -1167,7 +1171,7 @@ int qib_create_rcvhdrq(struct qib_devdata *, struct qib_ctxtdata *);
1167int qib_setup_eagerbufs(struct qib_ctxtdata *); 1171int qib_setup_eagerbufs(struct qib_ctxtdata *);
1168void qib_set_ctxtcnt(struct qib_devdata *); 1172void qib_set_ctxtcnt(struct qib_devdata *);
1169int qib_create_ctxts(struct qib_devdata *dd); 1173int qib_create_ctxts(struct qib_devdata *dd);
1170struct qib_ctxtdata *qib_create_ctxtdata(struct qib_pportdata *, u32); 1174struct qib_ctxtdata *qib_create_ctxtdata(struct qib_pportdata *, u32, int);
1171void qib_init_pportdata(struct qib_pportdata *, struct qib_devdata *, u8, u8); 1175void qib_init_pportdata(struct qib_pportdata *, struct qib_devdata *, u8, u8);
1172void qib_free_ctxtdata(struct qib_devdata *, struct qib_ctxtdata *); 1176void qib_free_ctxtdata(struct qib_devdata *, struct qib_ctxtdata *);
1173 1177
@@ -1458,6 +1462,7 @@ extern unsigned qib_n_krcv_queues;
1458extern unsigned qib_sdma_fetch_arb; 1462extern unsigned qib_sdma_fetch_arb;
1459extern unsigned qib_compat_ddr_negotiate; 1463extern unsigned qib_compat_ddr_negotiate;
1460extern int qib_special_trigger; 1464extern int qib_special_trigger;
1465extern unsigned qib_numa_aware;
1461 1466
1462extern struct mutex qib_mutex; 1467extern struct mutex qib_mutex;
1463 1468