Fifth set of -rc fixes for 4.13 cycle
- One core fix accidentally applied first to for-next and then cherry picked back because it needed to be in the -rc cycles instead - Another core fix - Two mlx5 fixes -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJZnyrHAAoJELgmozMOVy/dnZ0P/0oDCZ94NF4MlGnRpYNwnkkU TmU0fRJZJv4Z+aZOiBYPXs2JbVcu9lTUBko7XB6OTIPEvDKxZrGSzv+SHP8n3W13 xC+i/GdrVN7GC2HrKNPaN4PgPvlmcuC1GvUpi7xMd8qKK/Zj125vqQFjcE0JXdXt YS8fp/AUFGxkdbaU1/TfBtWAJ1RYrzXocDC+AsQI6hM90Rn9VZy56hLH6Bqm+S+S L53wUleMkMIa96/6HeyXbMP3C9ZahNJuGYUPAOoNDUeVsZA1MprJ4a2RAOaI0siX tT+Q66pxvy049ub1NhSI0K7c9KDeApT4GCGmohKaMODLaRfTzLa7xJxUmsAEnk/d QjAx/VmeEATo929FKf/b+oZNHLrxEYrmxhu1yBfW9LIjrfK2bXgn2uLaBG+/MhNY ZA2UQ7gio1HPVt4zdAMQSrkTUIchysVoa+vboCOdDpMyQiR6Z1S/mG8IPpF26HYX QEm/ao4jIEqgcE5X8iBvN63/aOhq6W762jSQu2c9fGJNSks25fPdcagRkAEWUFeg fbUhYIMDxZDqPNB7V6z61Ob9mOzijJ0RPJPU9ItgwcG0GVY1YMGZV4f07+aK8PEM wZg6ylehqzJY0I1f2fSzm9W990igBknCm1RC5RYj3m7DrMDZCONXPR9UNqFxSuHh Ne4hicmCKmmaH8DV+58d =mnhL -----END PGP SIGNATURE----- Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma Pull more rdma fixes from Doug Ledford: "Well, I thought we were going to be done for this -rc cycle. I should have known better than to say so though. We have four additional items that trickled in. One was a simple mistake on my part. I took a patch into my for-next thinking that the issue was less severe than it was. I was then notified that it needed to be in my -rc area instead. The other three were just found late in testing. Summary: - One core fix accidentally applied first to for-next and then cherry picked back because it needed to be in the -rc cycles instead - Another core fix - Two mlx5 fixes" * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma: IB/mlx5: Always return success for RoCE modify port IB/mlx5: Fix Raw Packet QP event handler assignment IB/core: Avoid accessing non-allocated memory when inferring port type RDMA/uverbs: Initialize cq_context appropriately
This commit is contained in:
commit
90a6cd5039
@ -1015,7 +1015,7 @@ static struct ib_ucq_object *create_cq(struct ib_uverbs_file *file,
|
||||
cq->uobject = &obj->uobject;
|
||||
cq->comp_handler = ib_uverbs_comp_handler;
|
||||
cq->event_handler = ib_uverbs_cq_event_handler;
|
||||
cq->cq_context = &ev_file->ev_queue;
|
||||
cq->cq_context = ev_file ? &ev_file->ev_queue : NULL;
|
||||
atomic_set(&cq->usecnt, 0);
|
||||
|
||||
obj->uobject.object = cq;
|
||||
@ -1522,6 +1522,7 @@ static int create_qp(struct ib_uverbs_file *file,
|
||||
qp->qp_type = attr.qp_type;
|
||||
atomic_set(&qp->usecnt, 0);
|
||||
atomic_inc(&pd->usecnt);
|
||||
qp->port = 0;
|
||||
if (attr.send_cq)
|
||||
atomic_inc(&attr.send_cq->usecnt);
|
||||
if (attr.recv_cq)
|
||||
@ -1962,8 +1963,9 @@ static int modify_qp(struct ib_uverbs_file *file,
|
||||
attr->alt_timeout = cmd->base.alt_timeout;
|
||||
attr->rate_limit = cmd->rate_limit;
|
||||
|
||||
attr->ah_attr.type = rdma_ah_find_type(qp->device,
|
||||
cmd->base.dest.port_num);
|
||||
if (cmd->base.attr_mask & IB_QP_AV)
|
||||
attr->ah_attr.type = rdma_ah_find_type(qp->device,
|
||||
cmd->base.dest.port_num);
|
||||
if (cmd->base.dest.is_global) {
|
||||
rdma_ah_set_grh(&attr->ah_attr, NULL,
|
||||
cmd->base.dest.flow_label,
|
||||
@ -1981,8 +1983,9 @@ static int modify_qp(struct ib_uverbs_file *file,
|
||||
rdma_ah_set_port_num(&attr->ah_attr,
|
||||
cmd->base.dest.port_num);
|
||||
|
||||
attr->alt_ah_attr.type = rdma_ah_find_type(qp->device,
|
||||
cmd->base.dest.port_num);
|
||||
if (cmd->base.attr_mask & IB_QP_ALT_PATH)
|
||||
attr->alt_ah_attr.type =
|
||||
rdma_ah_find_type(qp->device, cmd->base.dest.port_num);
|
||||
if (cmd->base.alt_dest.is_global) {
|
||||
rdma_ah_set_grh(&attr->alt_ah_attr, NULL,
|
||||
cmd->base.alt_dest.flow_label,
|
||||
|
@ -838,6 +838,7 @@ struct ib_qp *ib_create_qp(struct ib_pd *pd,
|
||||
spin_lock_init(&qp->mr_lock);
|
||||
INIT_LIST_HEAD(&qp->rdma_mrs);
|
||||
INIT_LIST_HEAD(&qp->sig_mrs);
|
||||
qp->port = 0;
|
||||
|
||||
if (qp_init_attr->qp_type == IB_QPT_XRC_TGT)
|
||||
return ib_create_xrc_qp(qp, qp_init_attr);
|
||||
@ -1297,7 +1298,11 @@ int ib_modify_qp_with_udata(struct ib_qp *qp, struct ib_qp_attr *attr,
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
return ib_security_modify_qp(qp, attr, attr_mask, udata);
|
||||
ret = ib_security_modify_qp(qp, attr, attr_mask, udata);
|
||||
if (!ret && (attr_mask & IB_QP_PORT))
|
||||
qp->port = attr->port_num;
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(ib_modify_qp_with_udata);
|
||||
|
||||
|
@ -1085,6 +1085,12 @@ static int mlx5_ib_modify_port(struct ib_device *ibdev, u8 port, int mask,
|
||||
bool is_ib = (mlx5_ib_port_link_layer(ibdev, port) ==
|
||||
IB_LINK_LAYER_INFINIBAND);
|
||||
|
||||
/* CM layer calls ib_modify_port() regardless of the link layer. For
|
||||
* Ethernet ports, qkey violation and Port capabilities are meaningless.
|
||||
*/
|
||||
if (!is_ib)
|
||||
return 0;
|
||||
|
||||
if (MLX5_CAP_GEN(dev->mdev, ib_virt) && is_ib) {
|
||||
change_mask = props->clr_port_cap_mask | props->set_port_cap_mask;
|
||||
value = ~props->clr_port_cap_mask | props->set_port_cap_mask;
|
||||
|
@ -1238,6 +1238,7 @@ static int create_raw_packet_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
|
||||
goto err_destroy_tis;
|
||||
|
||||
sq->base.container_mibqp = qp;
|
||||
sq->base.mqp.event = mlx5_ib_qp_event;
|
||||
}
|
||||
|
||||
if (qp->rq.wqe_cnt) {
|
||||
|
@ -1683,6 +1683,7 @@ struct ib_qp {
|
||||
enum ib_qp_type qp_type;
|
||||
struct ib_rwq_ind_table *rwq_ind_tbl;
|
||||
struct ib_qp_security *qp_sec;
|
||||
u8 port;
|
||||
};
|
||||
|
||||
struct ib_mr {
|
||||
|
Loading…
Reference in New Issue
Block a user