Commit 4743d1b3 authored by Logan Gunthorpe's avatar Logan Gunthorpe Committed by Greg Kroah-Hartman

ntb_transport: fix qp count bug

commit cb827ee6 upstream.

In cases where there are more mw's than spads/2-2, the mw count gets
reduced to match the limitation. ntb_transport also tries to ensure that
there are fewer qps than mws but uses the full mw count instead of
the reduced one. When this happens, the math in
'ntb_transport_setup_qp_mw' will get confused and result in a kernel
paging request bug.

This patch fixes the bug by reducing qp_count to the reduced mw count
instead of the full mw count.
Signed-off-by: default avatarLogan Gunthorpe <logang@deltatee.com>
Fixes: e26a5843 ("NTB: Split ntb_hw_intel and ntb_transport drivers")
Acked-by: default avatarAllen Hubbe <Allen.Hubbe@dell.com>
Signed-off-by: default avatarJon Mason <jdmason@kudzu.us>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b8fce382
...@@ -1125,8 +1125,8 @@ static int ntb_transport_probe(struct ntb_client *self, struct ntb_dev *ndev) ...@@ -1125,8 +1125,8 @@ static int ntb_transport_probe(struct ntb_client *self, struct ntb_dev *ndev)
qp_count = ilog2(qp_bitmap); qp_count = ilog2(qp_bitmap);
if (max_num_clients && max_num_clients < qp_count) if (max_num_clients && max_num_clients < qp_count)
qp_count = max_num_clients; qp_count = max_num_clients;
else if (mw_count < qp_count) else if (nt->mw_count < qp_count)
qp_count = mw_count; qp_count = nt->mw_count;
qp_bitmap &= BIT_ULL(qp_count) - 1; qp_bitmap &= BIT_ULL(qp_count) - 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment