Commit 876c527e authored by Chengchang Tang's avatar Chengchang Tang Committed by zhangyuyang
Browse files

RDMA/hns: Fix 1bit-ECC recovery address in non-4K OS

maillist inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IAR316
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git/commit/?id=ce196f6297c7f3ab7780795e40efd6c521f60c8b



----------------------------------------------------------------------

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: 2de949ab ("RDMA/hns: Recover 1bit-ECC error of RAM on chip")
Signed-off-by: default avatarChengchang Tang <tangchengchang@huawei.com>
Signed-off-by: default avatarJunxian Huang <huangjunxian6@hisilicon.com>
Link: https://patch.msgid.link/20240906093444.3571619-8-huangjunxian6@hisilicon.com


Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarXinghai Cen <cenxinghai@h-partners.com>
parent 420915c1
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6710,7 +6710,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,