Hi folks,
I wanted to try out Christoph's NVMe multipathing patchset on my NVMe OmniPath
setup and merged it into 4.14-rc1. On bootup I stumbled upon that splat and no
RDMA operation was possible:
...
is_valid_mcast_lid.isra.23+0xfb/0x110
(gdb) l *(is_valid_mcast_lid+0xfb)
0x229b is in is_valid_mcast_lid (drivers/infiniband/core/verbs.c:1649).
1644 /* If QP state >= init, it is assigned to a port and we can check this
1645 * port only.
1646 */
1647 if (!ib_query_qp(qp, &attr, IB_QP_STATE | IB_QP_PORT, &init_attr)) {
1648 if (attr.qp_state >= IB_QPS_INIT) {
1649 if (qp->device->get_link_layer(qp->device, attr.port_num) !=
1650 IB_LINK_LAYER_INFINIBAND)
1651 return true;
1652 goto lid_check;
1653 }
(gdb)
Why isn't ipoib uses the generic rdma_port_get_link_layer?
Does this help?
--
diff --git a/drivers/infiniband/core/verbs.c
b/drivers/infiniband/core/verbs.c
index ee9e27dc799b..f2c70afea238 100644
--- a/drivers/infiniband/core/verbs.c
+++ b/drivers/infiniband/core/verbs.c
@@ -1646,7 +1646,7 @@ static bool is_valid_mcast_lid(struct ib_qp *qp,
u16 lid)
*/
if (!ib_query_qp(qp, &attr, IB_QP_STATE | IB_QP_PORT,
&init_attr)) {
if (attr.qp_state >= IB_QPS_INIT) {
- if (qp->device->get_link_layer(qp->device,
attr.port_num) !=
+ if (rdma_port_get_link_layer(qp->device,
attr.port_num) !=
IB_LINK_LAYER_INFINIBAND)
return true;
goto lid_check;
--
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html