linux/drivers/infiniband/hw/hns
Lijun Ou 8d18ad83f1 RDMA/hns: Fix bug when wqe num is larger than 16K
hip08 can support up to 32768 wqes in one qp. currently if the wqe num
is larger than 16384, the driver will lead a calltrace as follows.

[21361.393725] Call trace:
[21361.398605]  hns_roce_v2_modify_qp+0xbcc/0x1360 [hns_roce_hw_v2]
[21361.410627]  hns_roce_modify_qp+0x1d8/0x2f8 [hns_roce]
[21361.420906]  _ib_modify_qp+0x70/0x118
[21361.428222]  ib_modify_qp+0x14/0x1c
[21361.435193]  rt_ktest_modify_qp+0xb8/0x650 [rdma_test]
[21361.445472]  exec_modify_qp_cmd+0x110/0x4d8 [rdma_test]
[21361.455924]  rt_ktest_dispatch_cmd_3+0xa94/0x2edc [rdma_test]
[21361.467422]  rt_ktest_dispatch_cmd_2+0x9c/0x108 [rdma_test]
[21361.478570]  rt_ktest_dispatch_cmd+0x138/0x904 [rdma_test]
[21361.489545]  rt_ktest_dev_write+0x328/0x4b0 [rdma_test]
[21361.499998]  __vfs_write+0x38/0x15c
[21361.506966]  vfs_write+0xa8/0x1a0
[21361.513586]  ksys_write+0x50/0xb0
[21361.520206]  sys_write+0xc/0x14
[21361.526479]  el0_svc_naked+0x30/0x34
[21361.533622] Code: 1ac10841 d37d7c22 0b000021 d37df021 (f86268c0)
[21361.545815] ---[ end trace e2a1feb2c3d7f13c ]---

When the wqe num is larger than 16384, hns_roce_table_find will return an
invalid mtt, this will lead an kernel paging requet error if the driver try
to access it. It's the mtt design defect which can't support up to the max
wqe num of hip08.

This patch fixs it by replacing mtt with mtr for wqe.

Fixes: 926a01dc00 ("RDMA/hns: Add QP operations support for hip08 SoC")
Signed-off-by: Xi Wang <wangxi11@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2019-06-20 12:56:34 -04:00
..
hns_roce_ah.c RDMA: Introduce and use GID attr helper to read RoCE L2 fields 2019-05-03 11:10:02 -03:00
hns_roce_alloc.c RDMA/hns: Add a group interfaces for optimizing buffers getting flow 2019-06-20 12:56:34 -04:00
hns_roce_cmd.c RDMA/hns: Fix the chip hanging caused by sending mailbox&CMQ during reset 2019-02-04 16:13:50 -07:00
hns_roce_cmd.h RDMA/hns: Dump detailed driver-specific CQ 2019-04-08 13:05:25 -03:00
hns_roce_common.h RDMA/hns: Remove asynchronic QP destroy 2019-04-24 10:55:31 -03:00
hns_roce_cq.c RDMA: Convert CQ allocations to be under core responsibility 2019-06-11 16:39:49 -04:00
hns_roce_db.c RDMA/hns: Replace magic numbers with #defines 2019-05-27 17:31:00 -03:00
hns_roce_device.h RDMA/hns: Fix bug when wqe num is larger than 16K 2019-06-20 12:56:34 -04:00
hns_roce_hem.c RDMA/hns: Add mtr support for mixed multihop addressing 2019-06-20 12:56:34 -04:00
hns_roce_hem.h RDMA/hns: Add mtr support for mixed multihop addressing 2019-06-20 12:56:34 -04:00
hns_roce_hw_v1.c RDMA: Convert CQ allocations to be under core responsibility 2019-06-11 16:39:49 -04:00
hns_roce_hw_v1.h RDMA/hns: Remove asynchronic QP destroy 2019-04-24 10:55:31 -03:00
hns_roce_hw_v2_dfx.c RDMA/hns: Dump detailed driver-specific CQ 2019-04-08 13:05:25 -03:00
hns_roce_hw_v2.c RDMA/hns: Fix bug when wqe num is larger than 16K 2019-06-20 12:56:34 -04:00
hns_roce_hw_v2.h RDMA/hns: Replace magic numbers with #defines 2019-05-27 17:31:00 -03:00
hns_roce_main.c RDMA: Report available cdevs through RDMA_NLDEV_CMD_GET_CHARDEV 2019-06-18 22:44:08 -04:00
hns_roce_mr.c RDMA/hns: Add mtr support for mixed multihop addressing 2019-06-20 12:56:34 -04:00
hns_roce_pd.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
hns_roce_qp.c RDMA/hns: Fix bug when wqe num is larger than 16K 2019-06-20 12:56:34 -04:00
hns_roce_restrack.c RDMA/hns: Dump detailed driver-specific CQ 2019-04-08 13:05:25 -03:00
hns_roce_srq.c RDMA/hns: Bugfix for posting multiple srq work request 2019-05-31 16:11:02 -03:00
Kconfig IB/{core,uverbs}: Move ib_umem_xxx functions from ib_core to ib_uverbs 2019-01-10 17:06:44 -07:00
Makefile RDMA/hns: Dump detailed driver-specific CQ 2019-04-08 13:05:25 -03:00