]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
RDMA/hns: Add clear_hem return value to log
authorChengchang Tang <tangchengchang@huawei.com>
Tue, 23 May 2023 12:16:41 +0000 (20:16 +0800)
committerJason Gunthorpe <jgg@nvidia.com>
Thu, 1 Jun 2023 22:58:47 +0000 (19:58 -0300)
Log return value of clear_hem() to help diagnose.

Link: https://lore.kernel.org/r/20230523121641.3132102-4-huangjunxian6@hisilicon.com
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/hns/hns_roce_hem.c

index f30274986c0da822c617b04dd116723b39bdb412..47c0efed18211a31d38df3e7f8ee9f76038e279c 100644 (file)
@@ -619,6 +619,7 @@ static void clear_mhop_hem(struct hns_roce_dev *hr_dev,
        u32 hop_num = mhop->hop_num;
        u32 chunk_ba_num;
        u32 step_idx;
+       int ret;
 
        index->inited = HEM_INDEX_BUF;
        chunk_ba_num = mhop->bt_chunk_size / BA_BYTE_LEN;
@@ -642,16 +643,24 @@ static void clear_mhop_hem(struct hns_roce_dev *hr_dev,
                else
                        step_idx = hop_num;
 
-               if (hr_dev->hw->clear_hem(hr_dev, table, obj, step_idx))
-                       ibdev_warn(ibdev, "failed to clear hop%u HEM.\n", hop_num);
-
-               if (index->inited & HEM_INDEX_L1)
-                       if (hr_dev->hw->clear_hem(hr_dev, table, obj, 1))
-                               ibdev_warn(ibdev, "failed to clear HEM step 1.\n");
+               ret = hr_dev->hw->clear_hem(hr_dev, table, obj, step_idx);
+               if (ret)
+                       ibdev_warn(ibdev, "failed to clear hop%u HEM, ret = %d.\n",
+                                  hop_num, ret);
+
+               if (index->inited & HEM_INDEX_L1) {
+                       ret = hr_dev->hw->clear_hem(hr_dev, table, obj, 1);
+                       if (ret)
+                               ibdev_warn(ibdev, "failed to clear HEM step 1, ret = %d.\n",
+                                          ret);
+               }
 
-               if (index->inited & HEM_INDEX_L0)
-                       if (hr_dev->hw->clear_hem(hr_dev, table, obj, 0))
-                               ibdev_warn(ibdev, "failed to clear HEM step 0.\n");
+               if (index->inited & HEM_INDEX_L0) {
+                       ret = hr_dev->hw->clear_hem(hr_dev, table, obj, 0);
+                       if (ret)
+                               ibdev_warn(ibdev, "failed to clear HEM step 0, ret = %d.\n",
+                                          ret);
+               }
        }
 }
 
@@ -688,6 +697,7 @@ void hns_roce_table_put(struct hns_roce_dev *hr_dev,
 {
        struct device *dev = hr_dev->dev;
        unsigned long i;
+       int ret;
 
        if (hns_roce_check_whether_mhop(hr_dev, table->type)) {
                hns_roce_table_mhop_put(hr_dev, table, obj, 1);
@@ -700,8 +710,10 @@ void hns_roce_table_put(struct hns_roce_dev *hr_dev,
                                         &table->mutex))
                return;
 
-       if (hr_dev->hw->clear_hem(hr_dev, table, obj, HEM_HOP_STEP_DIRECT))
-               dev_warn(dev, "failed to clear HEM base address.\n");
+       ret = hr_dev->hw->clear_hem(hr_dev, table, obj, HEM_HOP_STEP_DIRECT);
+       if (ret)
+               dev_warn(dev, "failed to clear HEM base address, ret = %d.\n",
+                        ret);
 
        hns_roce_free_hem(hr_dev, table->hem[i]);
        table->hem[i] = NULL;
@@ -917,6 +929,8 @@ void hns_roce_cleanup_hem_table(struct hns_roce_dev *hr_dev,
 {
        struct device *dev = hr_dev->dev;
        unsigned long i;
+       int obj;
+       int ret;
 
        if (hns_roce_check_whether_mhop(hr_dev, table->type)) {
                hns_roce_cleanup_mhop_hem_table(hr_dev, table);
@@ -925,9 +939,11 @@ void hns_roce_cleanup_hem_table(struct hns_roce_dev *hr_dev,
 
        for (i = 0; i < table->num_hem; ++i)
                if (table->hem[i]) {
-                       if (hr_dev->hw->clear_hem(hr_dev, table,
-                           i * table->table_chunk_size / table->obj_size, 0))
-                               dev_err(dev, "clear HEM base address failed.\n");
+                       obj = i * table->table_chunk_size / table->obj_size;
+                       ret = hr_dev->hw->clear_hem(hr_dev, table, obj, 0);
+                       if (ret)
+                               dev_err(dev, "clear HEM base address failed, ret = %d.\n",
+                                       ret);
 
                        hns_roce_free_hem(hr_dev, table->hem[i]);
                }