未验证 提交 bb1726f5 编写于 作者: O openeuler-ci-bot 提交者: Gitee

!1671 Backport bugfixes for RDMA/hns from mainline linux

Merge Pull Request from: @stinft 
 
https://gitee.com/openeuler/kernel/issues/I76PRT
https://gitee.com/openeuler/kernel/issues/I76PUJ
https://gitee.com/openeuler/kernel/issues/I76PY9
https://gitee.com/openeuler/kernel/issues/I7R61Q
https://gitee.com/openeuler/kernel/issues/I7RKQ1 
 
Link:https://gitee.com/openeuler/kernel/pulls/1671 

Reviewed-by: Chengchang Tang <tangchengchang@huawei.com> 
Signed-off-by: Jialin Zhang <zhangjialin11@huawei.com> 
...@@ -942,7 +942,7 @@ void hns_roce_cleanup_hem_table(struct hns_roce_dev *hr_dev, ...@@ -942,7 +942,7 @@ void hns_roce_cleanup_hem_table(struct hns_roce_dev *hr_dev,
obj = i * table->table_chunk_size / table->obj_size; obj = i * table->table_chunk_size / table->obj_size;
ret = hr_dev->hw->clear_hem(hr_dev, table, obj, 0); ret = hr_dev->hw->clear_hem(hr_dev, table, obj, 0);
if (ret) if (ret)
dev_err(dev, "Clear HEM base address failed, ret = %d.\n", dev_err(dev, "clear HEM base address failed, ret = %d.\n",
ret); ret);
hns_roce_free_hem(hr_dev, table->hem[i]); hns_roce_free_hem(hr_dev, table->hem[i]);
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
#define HNS_ROCE_V2_MAX_SRQWQE_SEGS 0x1000000 #define HNS_ROCE_V2_MAX_SRQWQE_SEGS 0x1000000
#define HNS_ROCE_V2_MAX_IDX_SEGS 0x1000000 #define HNS_ROCE_V2_MAX_IDX_SEGS 0x1000000
#define HNS_ROCE_V2_QP_ACK_TIMEOUT_OFS_HIP08 10 #define HNS_ROCE_V2_QP_ACK_TIMEOUT_OFS_HIP08 10
#define HNS_ROCE_V3_SCCC_SZ 64 #define HNS_ROCE_V3_SCCC_SZ 64
#define HNS_ROCE_V3_GMV_ENTRY_SZ 32 #define HNS_ROCE_V3_GMV_ENTRY_SZ 32
......
...@@ -1073,40 +1073,40 @@ static int mtr_init_buf_cfg(struct hns_roce_dev *hr_dev, ...@@ -1073,40 +1073,40 @@ static int mtr_init_buf_cfg(struct hns_roce_dev *hr_dev,
static u64 cal_pages_per_l1ba(unsigned int ba_per_bt, unsigned int hopnum) static u64 cal_pages_per_l1ba(unsigned int ba_per_bt, unsigned int hopnum)
{ {
return int_pow(ba_per_bt, hopnum - 1); return int_pow(ba_per_bt, hopnum - 1);
} }
static unsigned int cal_best_bt_pg_sz(struct hns_roce_dev *hr_dev, static unsigned int cal_best_bt_pg_sz(struct hns_roce_dev *hr_dev,
struct hns_roce_mtr *mtr, struct hns_roce_mtr *mtr,
unsigned int pg_shift) unsigned int pg_shift)
{ {
unsigned long cap = hr_dev->caps.page_size_cap; unsigned long cap = hr_dev->caps.page_size_cap;
struct hns_roce_buf_region *re; struct hns_roce_buf_region *re;
unsigned int pgs_per_l1ba; unsigned int pgs_per_l1ba;
unsigned int ba_per_bt; unsigned int ba_per_bt;
unsigned int ba_num; unsigned int ba_num;
int i; int i;
for_each_set_bit_from(pg_shift, &cap, sizeof(cap) * BITS_PER_BYTE) { for_each_set_bit_from(pg_shift, &cap, sizeof(cap) * BITS_PER_BYTE) {
if (!(BIT(pg_shift) & cap)) if (!(BIT(pg_shift) & cap))
continue; continue;
ba_per_bt = BIT(pg_shift) / BA_BYTE_LEN; ba_per_bt = BIT(pg_shift) / BA_BYTE_LEN;
ba_num = 0; ba_num = 0;
for (i = 0; i < mtr->hem_cfg.region_count; i++) { for (i = 0; i < mtr->hem_cfg.region_count; i++) {
re = &mtr->hem_cfg.region[i]; re = &mtr->hem_cfg.region[i];
if (re->hopnum == 0) if (re->hopnum == 0)
continue; continue;
pgs_per_l1ba = cal_pages_per_l1ba(ba_per_bt, re->hopnum); pgs_per_l1ba = cal_pages_per_l1ba(ba_per_bt, re->hopnum);
ba_num += DIV_ROUND_UP(re->count, pgs_per_l1ba); ba_num += DIV_ROUND_UP(re->count, pgs_per_l1ba);
} }
if (ba_num <= ba_per_bt) if (ba_num <= ba_per_bt)
return pg_shift; return pg_shift;
} }
return 0; return 0;
} }
static int mtr_alloc_mtt(struct hns_roce_dev *hr_dev, struct hns_roce_mtr *mtr, static int mtr_alloc_mtt(struct hns_roce_dev *hr_dev, struct hns_roce_mtr *mtr,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册