From: Chengchang Tang Date: Fri, 6 Sep 2024 09:34:42 +0000 (+0800) Subject: RDMA/hns: Fix 1bit-ECC recovery address in non-4K OS X-Git-Tag: v6.12-rc1~72^2~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ce196f6297c7f3ab7780795e40efd6c521f60c8b;p=thirdparty%2Fkernel%2Flinux.git RDMA/hns: Fix 1bit-ECC recovery address in non-4K OS The 1bit-ECC recovery address read from HW only contain bits 64:12, so it should be fixed left-shifted 12 bits when used. Currently, the driver will shift the address left by PAGE_SHIFT when used, which is wrong in non-4K OS. Fixes: 2de949abd6a5 ("RDMA/hns: Recover 1bit-ECC error of RAM on chip") Signed-off-by: Chengchang Tang Signed-off-by: Junxian Huang Link: https://patch.msgid.link/20240906093444.3571619-8-huangjunxian6@hisilicon.com Signed-off-by: Leon Romanovsky --- diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c index 5483d04b3ab7e..349b68d7e7db6 100644 --- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c @@ -6285,7 +6285,7 @@ static u64 fmea_get_ram_res_addr(u32 res_type, __le64 *data) res_type == ECC_RESOURCE_SCCC) return le64_to_cpu(*data); - return le64_to_cpu(*data) << PAGE_SHIFT; + return le64_to_cpu(*data) << HNS_HW_PAGE_SHIFT; } static int fmea_recover_others(struct hns_roce_dev *hr_dev, u32 res_type,