Message ID | 20201127163251.14533-1-palok@marvell.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Jason Gunthorpe |
Headers | show |
Series | [v2,for-rc] RDMA/qedr: iWARP invalid(zero) doorbell address fix. | expand |
On Fri, Nov 27, 2020 at 04:32:51PM +0000, Alok Prasad wrote: > This patch fixes issue introduced by a previous commit > where iWARP doorbell address wasn't initialized, causing > call trace when any RDMA application wants to use this > interface. > > Below call trace is generated which using rping with the > iWARP interface. > > ========================================================== > [ 325.698218] Illegal doorbell address: 0000000000000000. Legal range for doorbell addresses is [0000000011431e08..00000000ec3799d3] > [ 325.752691] WARNING: CPU: 11 PID: 11990 at drivers/net/ethernet/qlogic/qed/qed_dev.c:93 qed_db_rec_sanity.isra.12+0x48/0x70 [qed] > .... > [ 325.807824] hpsa scsi_transport_sas [last unloaded: crc8] > [ 326.263195] CPU: 11 PID: 11990 Comm: rping Tainted: G S 5.10.0-rc1 #29 > [ 326.299616] Hardware name: HP ProLiant DL380 Gen9/ProLiant DL380 Gen9, BIOS P89 01/22/2018 > [ 326.337657] RIP: 0010:qed_db_rec_sanity.isra.12+0x48/0x70 [qed] > ... > [ 326.451186] RSP: 0018:ffffafc28458fa88 EFLAGS: 00010286 > [ 326.475309] RAX: 0000000000000000 RBX: ffff8d0d4c620000 RCX: 0000000000000000 > [ 326.508079] RDX: ffff8d10afde7d50 RSI: ffff8d10afdd8b40 RDI: ffff8d10afdd8b40 > [ 326.540849] RBP: ffffafc28458fe38 R08: 0000000000000003 R09: 0000000000007fff > [ 326.573671] R10: 0000000000000001 R11: ffffafc28458f888 R12: 0000000000000000 > [ 326.606521] R13: 0000000000000000 R14: ffff8d0d43ccbbd0 R15: ffff8d0d48dae9c0 > [ 326.639406] FS: 00007fbd5267e740(0000) GS:ffff8d10afdc0000(0000) knlGS:0000000000000000 > [ 326.677896] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [ 326.704634] CR2: 00007fbd4f258fb8 CR3: 0000000108d96003 CR4: 00000000001706e0 > [ 326.737465] Call Trace: > [ 326.748839] qed_db_recovery_add+0x6d/0x1f0 [qed] > [ 326.770705] qedr_create_user_qp+0x57e/0xd30 [qedr] > [ 326.793350] qedr_create_qp+0x5f3/0xab0 [qedr] > [ 326.813750] ? lookup_get_idr_uobject.part.12+0x45/0x90 [ib_uverbs] > [ 326.842565] create_qp+0x45d/0xb30 [ib_uverbs] > [ 326.862998] ? ib_uverbs_cq_event_handler+0x30/0x30 [ib_uverbs] > [ 326.890237] ib_uverbs_create_qp+0xb9/0xe0 [ib_uverbs] > [ 326.913855] ib_uverbs_write+0x3f9/0x570 [ib_uverbs] > [ 326.936679] ? security_mmap_file+0x62/0xe0 > [ 326.955889] vfs_write+0xb7/0x200 > [ 326.971088] ksys_write+0xaf/0xd0 > [ 326.986314] ? syscall_trace_enter.isra.25+0x152/0x200 > [ 327.009948] do_syscall_64+0x2d/0x40 > [ 327.026752] entry_SYSCALL_64_after_hwframe+0x44/0xa9 > ============================================================== > > Fixes: 06e8d1df46ed ("RDMA/qedr: Add support for user mode XRC-SRQ's") > Signed-off-by: Michal Kalderon <mkalderon@marvell.com> > Signed-off-by: Igor Russkikh <irusskikh@marvell.com> > Signed-off-by: Alok Prasad <palok@marvell.com> > --- > v2 (from [1]): > - Added call trace in commit message. > [1] https://patchwork.kernel.org/project/linux-rdma/patch/20201127090832.11191-1-palok@marvell.com/ > --- > drivers/infiniband/hw/qedr/verbs.c | 9 +++++++++ > 1 file changed, 9 insertions(+) Applied to for-rc, thanks Jason
diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c index 019642ff24a7..511c95bb3d01 100644 --- a/drivers/infiniband/hw/qedr/verbs.c +++ b/drivers/infiniband/hw/qedr/verbs.c @@ -1936,6 +1936,15 @@ static int qedr_create_user_qp(struct qedr_dev *dev, } if (rdma_protocol_iwarp(&dev->ibdev, 1)) { + qp->urq.db_rec_db2_addr = ctx->dpi_addr + uresp.rq_db2_offset; + + /* calculate the db_rec_db2 data since it is constant so no + * need to reflect from user + */ + qp->urq.db_rec_db2_data.data.icid = cpu_to_le16(qp->icid); + qp->urq.db_rec_db2_data.data.value = + cpu_to_le16(DQ_TCM_IWARP_POST_RQ_CF_CMD); + rc = qedr_db_recovery_add(dev, qp->urq.db_rec_db2_addr, &qp->urq.db_rec_db2_data, DB_REC_WIDTH_32B,