diff options
| -rw-r--r-- | drivers/infiniband/hw/hfi1/qp.c | 7 | ||||
| -rw-r--r-- | drivers/infiniband/hw/hfi1/qp.h | 3 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_qp.c | 15 | ||||
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_verbs.h | 4 | ||||
| -rw-r--r-- | drivers/infiniband/sw/rdmavt/qp.c | 48 | ||||
| -rw-r--r-- | include/rdma/rdma_vt.h | 5 |
6 files changed, 28 insertions, 54 deletions
diff --git a/drivers/infiniband/hw/hfi1/qp.c b/drivers/infiniband/hw/hfi1/qp.c index 650305cc0373..1a7af9f60c13 100644 --- a/drivers/infiniband/hw/hfi1/qp.c +++ b/drivers/infiniband/hw/hfi1/qp.c | |||
| @@ -647,18 +647,17 @@ void qp_iter_print(struct seq_file *s, struct qp_iter *iter) | |||
| 647 | qp->pid); | 647 | qp->pid); |
| 648 | } | 648 | } |
| 649 | 649 | ||
| 650 | void *qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp, | 650 | void *qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp) |
| 651 | gfp_t gfp) | ||
| 652 | { | 651 | { |
| 653 | struct hfi1_qp_priv *priv; | 652 | struct hfi1_qp_priv *priv; |
| 654 | 653 | ||
| 655 | priv = kzalloc_node(sizeof(*priv), gfp, rdi->dparms.node); | 654 | priv = kzalloc_node(sizeof(*priv), GFP_KERNEL, rdi->dparms.node); |
| 656 | if (!priv) | 655 | if (!priv) |
| 657 | return ERR_PTR(-ENOMEM); | 656 | return ERR_PTR(-ENOMEM); |
| 658 | 657 | ||
| 659 | priv->owner = qp; | 658 | priv->owner = qp; |
| 660 | 659 | ||
| 661 | priv->s_ahg = kzalloc_node(sizeof(*priv->s_ahg), gfp, | 660 | priv->s_ahg = kzalloc_node(sizeof(*priv->s_ahg), GFP_KERNEL, |
| 662 | rdi->dparms.node); | 661 | rdi->dparms.node); |
| 663 | if (!priv->s_ahg) { | 662 | if (!priv->s_ahg) { |
| 664 | kfree(priv); | 663 | kfree(priv); |
diff --git a/drivers/infiniband/hw/hfi1/qp.h b/drivers/infiniband/hw/hfi1/qp.h index 1eb9cd7b8c19..6fe542b6a927 100644 --- a/drivers/infiniband/hw/hfi1/qp.h +++ b/drivers/infiniband/hw/hfi1/qp.h | |||
| @@ -123,8 +123,7 @@ void hfi1_migrate_qp(struct rvt_qp *qp); | |||
| 123 | /* | 123 | /* |
| 124 | * Functions provided by hfi1 driver for rdmavt to use | 124 | * Functions provided by hfi1 driver for rdmavt to use |
| 125 | */ | 125 | */ |
| 126 | void *qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp, | 126 | void *qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp); |
| 127 | gfp_t gfp); | ||
| 128 | void qp_priv_free(struct rvt_dev_info *rdi, struct rvt_qp *qp); | 127 | void qp_priv_free(struct rvt_dev_info *rdi, struct rvt_qp *qp); |
| 129 | unsigned free_all_qps(struct rvt_dev_info *rdi); | 128 | unsigned free_all_qps(struct rvt_dev_info *rdi); |
| 130 | void notify_qp_reset(struct rvt_qp *qp); | 129 | void notify_qp_reset(struct rvt_qp *qp); |
diff --git a/drivers/infiniband/hw/qib/qib_qp.c b/drivers/infiniband/hw/qib/qib_qp.c index 5984981e7dd4..a343e3b5d4cb 100644 --- a/drivers/infiniband/hw/qib/qib_qp.c +++ b/drivers/infiniband/hw/qib/qib_qp.c | |||
| @@ -104,10 +104,9 @@ const struct rvt_operation_params qib_post_parms[RVT_OPERATION_MAX] = { | |||
| 104 | 104 | ||
| 105 | }; | 105 | }; |
| 106 | 106 | ||
| 107 | static void get_map_page(struct rvt_qpn_table *qpt, struct rvt_qpn_map *map, | 107 | static void get_map_page(struct rvt_qpn_table *qpt, struct rvt_qpn_map *map) |
| 108 | gfp_t gfp) | ||
| 109 | { | 108 | { |
| 110 | unsigned long page = get_zeroed_page(gfp); | 109 | unsigned long page = get_zeroed_page(GFP_KERNEL); |
| 111 | 110 | ||
| 112 | /* | 111 | /* |
| 113 | * Free the page if someone raced with us installing it. | 112 | * Free the page if someone raced with us installing it. |
| @@ -126,7 +125,7 @@ static void get_map_page(struct rvt_qpn_table *qpt, struct rvt_qpn_map *map, | |||
| 126 | * zero/one for QP type IB_QPT_SMI/IB_QPT_GSI. | 125 | * zero/one for QP type IB_QPT_SMI/IB_QPT_GSI. |
| 127 | */ | 126 | */ |
| 128 | int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, | 127 | int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, |
| 129 | enum ib_qp_type type, u8 port, gfp_t gfp) | 128 | enum ib_qp_type type, u8 port) |
| 130 | { | 129 | { |
| 131 | u32 i, offset, max_scan, qpn; | 130 | u32 i, offset, max_scan, qpn; |
| 132 | struct rvt_qpn_map *map; | 131 | struct rvt_qpn_map *map; |
| @@ -160,7 +159,7 @@ int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, | |||
| 160 | max_scan = qpt->nmaps - !offset; | 159 | max_scan = qpt->nmaps - !offset; |
| 161 | for (i = 0;;) { | 160 | for (i = 0;;) { |
| 162 | if (unlikely(!map->page)) { | 161 | if (unlikely(!map->page)) { |
| 163 | get_map_page(qpt, map, gfp); | 162 | get_map_page(qpt, map); |
| 164 | if (unlikely(!map->page)) | 163 | if (unlikely(!map->page)) |
| 165 | break; | 164 | break; |
| 166 | } | 165 | } |
| @@ -317,16 +316,16 @@ u32 qib_mtu_from_qp(struct rvt_dev_info *rdi, struct rvt_qp *qp, u32 pmtu) | |||
| 317 | return ib_mtu_enum_to_int(pmtu); | 316 | return ib_mtu_enum_to_int(pmtu); |
| 318 | } | 317 | } |
| 319 | 318 | ||
| 320 | void *qib_qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp, gfp_t gfp) | 319 | void *qib_qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp) |
| 321 | { | 320 | { |
| 322 | struct qib_qp_priv *priv; | 321 | struct qib_qp_priv *priv; |
| 323 | 322 | ||
| 324 | priv = kzalloc(sizeof(*priv), gfp); | 323 | priv = kzalloc(sizeof(*priv), GFP_KERNEL); |
| 325 | if (!priv) | 324 | if (!priv) |
| 326 | return ERR_PTR(-ENOMEM); | 325 | return ERR_PTR(-ENOMEM); |
| 327 | priv->owner = qp; | 326 | priv->owner = qp; |
| 328 | 327 | ||
| 329 | priv->s_hdr = kzalloc(sizeof(*priv->s_hdr), gfp); | 328 | priv->s_hdr = kzalloc(sizeof(*priv->s_hdr), GFP_KERNEL); |
| 330 | if (!priv->s_hdr) { | 329 | if (!priv->s_hdr) { |
| 331 | kfree(priv); | 330 | kfree(priv); |
| 332 | return ERR_PTR(-ENOMEM); | 331 | return ERR_PTR(-ENOMEM); |
diff --git a/drivers/infiniband/hw/qib/qib_verbs.h b/drivers/infiniband/hw/qib/qib_verbs.h index da0db5485ddc..a52fc67b40d7 100644 --- a/drivers/infiniband/hw/qib/qib_verbs.h +++ b/drivers/infiniband/hw/qib/qib_verbs.h | |||
| @@ -274,11 +274,11 @@ int qib_get_counters(struct qib_pportdata *ppd, | |||
| 274 | * Functions provided by qib driver for rdmavt to use | 274 | * Functions provided by qib driver for rdmavt to use |
| 275 | */ | 275 | */ |
| 276 | unsigned qib_free_all_qps(struct rvt_dev_info *rdi); | 276 | unsigned qib_free_all_qps(struct rvt_dev_info *rdi); |
| 277 | void *qib_qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp, gfp_t gfp); | 277 | void *qib_qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp); |
| 278 | void qib_qp_priv_free(struct rvt_dev_info *rdi, struct rvt_qp *qp); | 278 | void qib_qp_priv_free(struct rvt_dev_info *rdi, struct rvt_qp *qp); |
| 279 | void qib_notify_qp_reset(struct rvt_qp *qp); | 279 | void qib_notify_qp_reset(struct rvt_qp *qp); |
| 280 | int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, | 280 | int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, |
| 281 | enum ib_qp_type type, u8 port, gfp_t gfp); | 281 | enum ib_qp_type type, u8 port); |
| 282 | void qib_restart_rc(struct rvt_qp *qp, u32 psn, int wait); | 282 | void qib_restart_rc(struct rvt_qp *qp, u32 psn, int wait); |
| 283 | #ifdef CONFIG_DEBUG_FS | 283 | #ifdef CONFIG_DEBUG_FS |
| 284 | 284 | ||
diff --git a/drivers/infiniband/sw/rdmavt/qp.c b/drivers/infiniband/sw/rdmavt/qp.c index 727e81cc2c8f..459865439a0b 100644 --- a/drivers/infiniband/sw/rdmavt/qp.c +++ b/drivers/infiniband/sw/rdmavt/qp.c | |||
| @@ -118,10 +118,9 @@ const int ib_rvt_state_ops[IB_QPS_ERR + 1] = { | |||
| 118 | EXPORT_SYMBOL(ib_rvt_state_ops); | 118 | EXPORT_SYMBOL(ib_rvt_state_ops); |
| 119 | 119 | ||
| 120 | static void get_map_page(struct rvt_qpn_table *qpt, | 120 | static void get_map_page(struct rvt_qpn_table *qpt, |
| 121 | struct rvt_qpn_map *map, | 121 | struct rvt_qpn_map *map) |
| 122 | gfp_t gfp) | ||
| 123 | { | 122 | { |
| 124 | unsigned long page = get_zeroed_page(gfp); | 123 | unsigned long page = get_zeroed_page(GFP_KERNEL); |
| 125 | 124 | ||
| 126 | /* | 125 | /* |
| 127 | * Free the page if someone raced with us installing it. | 126 | * Free the page if someone raced with us installing it. |
| @@ -173,7 +172,7 @@ static int init_qpn_table(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt) | |||
| 173 | rdi->dparms.qpn_res_start, rdi->dparms.qpn_res_end); | 172 | rdi->dparms.qpn_res_start, rdi->dparms.qpn_res_end); |
| 174 | for (i = rdi->dparms.qpn_res_start; i <= rdi->dparms.qpn_res_end; i++) { | 173 | for (i = rdi->dparms.qpn_res_start; i <= rdi->dparms.qpn_res_end; i++) { |
| 175 | if (!map->page) { | 174 | if (!map->page) { |
| 176 | get_map_page(qpt, map, GFP_KERNEL); | 175 | get_map_page(qpt, map); |
| 177 | if (!map->page) { | 176 | if (!map->page) { |
| 178 | ret = -ENOMEM; | 177 | ret = -ENOMEM; |
| 179 | break; | 178 | break; |
| @@ -342,14 +341,14 @@ static inline unsigned mk_qpn(struct rvt_qpn_table *qpt, | |||
| 342 | * Return: The queue pair number | 341 | * Return: The queue pair number |
| 343 | */ | 342 | */ |
| 344 | static int alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, | 343 | static int alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, |
| 345 | enum ib_qp_type type, u8 port_num, gfp_t gfp) | 344 | enum ib_qp_type type, u8 port_num) |
| 346 | { | 345 | { |
| 347 | u32 i, offset, max_scan, qpn; | 346 | u32 i, offset, max_scan, qpn; |
| 348 | struct rvt_qpn_map *map; | 347 | struct rvt_qpn_map *map; |
| 349 | u32 ret; | 348 | u32 ret; |
| 350 | 349 | ||
| 351 | if (rdi->driver_f.alloc_qpn) | 350 | if (rdi->driver_f.alloc_qpn) |
| 352 | return rdi->driver_f.alloc_qpn(rdi, qpt, type, port_num, gfp); | 351 | return rdi->driver_f.alloc_qpn(rdi, qpt, type, port_num); |
| 353 | 352 | ||
| 354 | if (type == IB_QPT_SMI || type == IB_QPT_GSI) { | 353 | if (type == IB_QPT_SMI || type == IB_QPT_GSI) { |
| 355 | unsigned n; | 354 | unsigned n; |
| @@ -374,7 +373,7 @@ static int alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, | |||
| 374 | max_scan = qpt->nmaps - !offset; | 373 | max_scan = qpt->nmaps - !offset; |
| 375 | for (i = 0;;) { | 374 | for (i = 0;;) { |
| 376 | if (unlikely(!map->page)) { | 375 | if (unlikely(!map->page)) { |
| 377 | get_map_page(qpt, map, gfp); | 376 | get_map_page(qpt, map); |
| 378 | if (unlikely(!map->page)) | 377 | if (unlikely(!map->page)) |
| 379 | break; | 378 | break; |
| 380 | } | 379 | } |
| @@ -672,7 +671,6 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd, | |||
| 672 | struct ib_qp *ret = ERR_PTR(-ENOMEM); | 671 | struct ib_qp *ret = ERR_PTR(-ENOMEM); |
| 673 | struct rvt_dev_info *rdi = ib_to_rvt(ibpd->device); | 672 | struct rvt_dev_info *rdi = ib_t |
