]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
RDMA/hns: Fix PBL page MTR find
authorChengchang Tang <tangchengchang@huawei.com>
Sat, 26 Nov 2022 10:29:08 +0000 (18:29 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:32:37 +0000 (13:32 +0100)
[ Upstream commit 9fb39ef2ff3e18f1740625ba04093dfbef086d2b ]

Now, The address of the first two pages in the MR will be searched, which
use to speed up the lookup of the pbl table for hardware.  An exception
will occur when there is only one page in this MR.  This patch fix the
number of page to search.

Fixes: 9b2cf76c9f05 ("RDMA/hns: Optimize PBL buffer allocation process")
Link: https://lore.kernel.org/r/20221126102911.2921820-4-xuhaoyue1@hisilicon.com
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Haoyue Xu <xuhaoyue1@hisilicon.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/hns/hns_roce_hw_v2.c

index 6e08e733cde1f975787a5f5086f49fac7a97cacc..747ce3ac72f1806636aba9dfa3c92c10a70ee4dd 100644 (file)
@@ -3274,7 +3274,8 @@ static int set_mtpt_pbl(struct hns_roce_dev *hr_dev,
        int i, count;
 
        count = hns_roce_mtr_find(hr_dev, &mr->pbl_mtr, 0, pages,
-                                 ARRAY_SIZE(pages), &pbl_ba);
+                                 min_t(int, ARRAY_SIZE(pages), mr->npages),
+                                 &pbl_ba);
        if (count < 1) {
                ibdev_err(ibdev, "failed to find PBL mtr, count = %d.\n",
                          count);