mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
RDMA/hns: Fix log flood after cmd_mbox failure
hns_roce_cmd_mbox() is the command interface between driver and
hardware. When hardware is abnormal, the unlimited error printings
after hns_roce_cmd_mbox() failure will cause log flood and even
system crash.
Replace ibdev_err() and ibdev_warn() with their ratelimited versions
in the error handling path after hns_roce_cmd_mbox() (and its wrappers
hns_roce_create_hw_ctx/hns_roce_destroy_hw_ctx) fails.
Fixes: 9a4435375c ("IB/hns: Add driver files for hns RoCE driver")
Link: https://patch.msgid.link/r/20260520055759.2354037-4-huangjunxian6@hisilicon.com
Signed-off-by: Lianfa Weng <wenglianfa@huawei.com>
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
3f19c2a385
commit
bbd97d71e5
|
|
@ -174,9 +174,9 @@ static int hns_roce_create_cqc(struct hns_roce_dev *hr_dev,
|
|||
ret = hns_roce_create_hw_ctx(hr_dev, mailbox, HNS_ROCE_CMD_CREATE_CQC,
|
||||
hr_cq->cqn);
|
||||
if (ret)
|
||||
ibdev_err(ibdev,
|
||||
"failed to send create cmd for CQ(0x%lx), ret = %d.\n",
|
||||
hr_cq->cqn, ret);
|
||||
ibdev_err_ratelimited(ibdev,
|
||||
"failed to send create cmd for CQ(0x%lx), ret = %d.\n",
|
||||
hr_cq->cqn, ret);
|
||||
|
||||
hns_roce_free_cmd_mailbox(hr_dev, mailbox);
|
||||
|
||||
|
|
|
|||
|
|
@ -6193,9 +6193,9 @@ static int hns_roce_v2_modify_srq(struct ib_srq *ibsrq,
|
|||
HNS_ROCE_CMD_MODIFY_SRQC, srq->srqn);
|
||||
hns_roce_free_cmd_mailbox(hr_dev, mailbox);
|
||||
if (ret)
|
||||
ibdev_err(&hr_dev->ib_dev,
|
||||
"failed to handle cmd of modifying SRQ, ret = %d.\n",
|
||||
ret);
|
||||
ibdev_err_ratelimited(&hr_dev->ib_dev,
|
||||
"failed to handle cmd of modifying SRQ, ret = %d.\n",
|
||||
ret);
|
||||
}
|
||||
|
||||
out:
|
||||
|
|
@ -6221,9 +6221,9 @@ static int hns_roce_v2_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr)
|
|||
ret = hns_roce_cmd_mbox(hr_dev, 0, mailbox->dma,
|
||||
HNS_ROCE_CMD_QUERY_SRQC, srq->srqn);
|
||||
if (ret) {
|
||||
ibdev_err(&hr_dev->ib_dev,
|
||||
"failed to process cmd of querying SRQ, ret = %d.\n",
|
||||
ret);
|
||||
ibdev_err_ratelimited(&hr_dev->ib_dev,
|
||||
"failed to process cmd of querying SRQ, ret = %d.\n",
|
||||
ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
@ -6329,9 +6329,9 @@ static int hns_roce_v2_query_mpt(struct hns_roce_dev *hr_dev, u32 key,
|
|||
ret = hns_roce_cmd_mbox(hr_dev, 0, mailbox->dma, HNS_ROCE_CMD_QUERY_MPT,
|
||||
key_to_hw_index(key));
|
||||
if (ret) {
|
||||
ibdev_err(&hr_dev->ib_dev,
|
||||
"failed to process cmd when querying MPT, ret = %d.\n",
|
||||
ret);
|
||||
ibdev_err_ratelimited(&hr_dev->ib_dev,
|
||||
"failed to process cmd when querying MPT, ret = %d.\n",
|
||||
ret);
|
||||
goto err_mailbox;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ static int hns_roce_mr_enable(struct hns_roce_dev *hr_dev,
|
|||
ret = hns_roce_create_hw_ctx(hr_dev, mailbox, HNS_ROCE_CMD_CREATE_MPT,
|
||||
mtpt_idx & (hr_dev->caps.num_mtpts - 1));
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to create mpt, ret = %d.\n", ret);
|
||||
dev_err_ratelimited(dev, "failed to create mpt, ret = %d.\n", ret);
|
||||
goto err_page;
|
||||
}
|
||||
|
||||
|
|
@ -315,7 +315,7 @@ struct ib_mr *hns_roce_rereg_user_mr(struct ib_mr *ibmr, int flags, u64 start,
|
|||
ret = hns_roce_destroy_hw_ctx(hr_dev, HNS_ROCE_CMD_DESTROY_MPT,
|
||||
mtpt_idx);
|
||||
if (ret)
|
||||
ibdev_warn(ib_dev, "failed to destroy MPT, ret = %d.\n", ret);
|
||||
ibdev_warn_ratelimited(ib_dev, "failed to destroy MPT, ret = %d.\n", ret);
|
||||
|
||||
mr->enabled = 0;
|
||||
mr->iova = virt_addr;
|
||||
|
|
@ -346,7 +346,7 @@ struct ib_mr *hns_roce_rereg_user_mr(struct ib_mr *ibmr, int flags, u64 start,
|
|||
ret = hns_roce_create_hw_ctx(hr_dev, mailbox, HNS_ROCE_CMD_CREATE_MPT,
|
||||
mtpt_idx);
|
||||
if (ret) {
|
||||
ibdev_err(ib_dev, "failed to create MPT, ret = %d.\n", ret);
|
||||
ibdev_err_ratelimited(ib_dev, "failed to create MPT, ret = %d.\n", ret);
|
||||
goto free_cmd_mbox;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ static int hns_roce_create_srqc(struct hns_roce_dev *hr_dev,
|
|||
ret = hns_roce_create_hw_ctx(hr_dev, mailbox, HNS_ROCE_CMD_CREATE_SRQ,
|
||||
srq->srqn);
|
||||
if (ret)
|
||||
ibdev_err(ibdev, "failed to config SRQC, ret = %d.\n", ret);
|
||||
ibdev_err_ratelimited(ibdev, "failed to config SRQC, ret = %d.\n", ret);
|
||||
|
||||
err_mbox:
|
||||
hns_roce_free_cmd_mailbox(hr_dev, mailbox);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user