192 lines
6.2 KiB
Diff
192 lines
6.2 KiB
Diff
From 20e92bdb92a37e27ce6c102a5338ded5a4962780 Mon Sep 17 00:00:00 2001
|
|
From: Jiaran Zhang <zhangjiaran@huawei.com>
|
|
Date: Sat, 24 Jul 2021 15:45:14 +0800
|
|
Subject: [PATCH 079/283] net: hns3: update error recovery module and type
|
|
|
|
mainline inclusion
|
|
from mainline-v5.14-rc1
|
|
commit 8a95e360fd512f1cb55239645879b15d26bc7e21
|
|
category: feature
|
|
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I8EMUR
|
|
CVE: NA
|
|
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8a95e360fd512f1cb55239645879b15d26bc7e21
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Update error recovery module and type for RoCE.
|
|
|
|
The enumeration values of module names and error types are not sorted
|
|
in sequence. If use the current printing mode, they cannot be correctly
|
|
printed.
|
|
|
|
Use the index mode, If mod_id and type_id match the enumerated value,
|
|
display the corresponding information.
|
|
|
|
Signed-off-by: Jiaran Zhang <zhangjiaran@huawei.com>
|
|
Signed-off-by: Weihang Li <liweihang@huawei.com>
|
|
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Reviewed-by: Yongxin Li <liyongxin1@huawei.com>
|
|
Signed-off-by: Junxin Chen <chenjunxin1@huawei.com>
|
|
Signed-off-by: Zheng Zengkai <zhengzengkai@huawei.com>
|
|
Signed-off-by: Xiaodong Li <lixiaodong67@huawei.com>
|
|
---
|
|
.../hisilicon/hns3/hns3pf/hclge_err.c | 58 ++++++++++++++++++-
|
|
.../hisilicon/hns3/hns3pf/hclge_err.h | 18 ++++++
|
|
.../hisilicon/hns3/hns3pf/hclge_main.c | 3 +-
|
|
3 files changed, 74 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c
|
|
index cf4afddad526..b303cf2d72bf 100644
|
|
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c
|
|
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c
|
|
@@ -677,6 +677,36 @@ static const struct hclge_hw_module_id hclge_hw_module_id_st[] = {
|
|
}, {
|
|
.module_id = MODULE_MASTER,
|
|
.msg = "MODULE_MASTER"
|
|
+ }, {
|
|
+ .module_id = MODULE_ROCEE_TOP,
|
|
+ .msg = "MODULE_ROCEE_TOP"
|
|
+ }, {
|
|
+ .module_id = MODULE_ROCEE_TIMER,
|
|
+ .msg = "MODULE_ROCEE_TIMER"
|
|
+ }, {
|
|
+ .module_id = MODULE_ROCEE_MDB,
|
|
+ .msg = "MODULE_ROCEE_MDB"
|
|
+ }, {
|
|
+ .module_id = MODULE_ROCEE_TSP,
|
|
+ .msg = "MODULE_ROCEE_TSP"
|
|
+ }, {
|
|
+ .module_id = MODULE_ROCEE_TRP,
|
|
+ .msg = "MODULE_ROCEE_TRP"
|
|
+ }, {
|
|
+ .module_id = MODULE_ROCEE_SCC,
|
|
+ .msg = "MODULE_ROCEE_SCC"
|
|
+ }, {
|
|
+ .module_id = MODULE_ROCEE_CAEP,
|
|
+ .msg = "MODULE_ROCEE_CAEP"
|
|
+ }, {
|
|
+ .module_id = MODULE_ROCEE_GEN_AC,
|
|
+ .msg = "MODULE_ROCEE_GEN_AC"
|
|
+ }, {
|
|
+ .module_id = MODULE_ROCEE_QMM,
|
|
+ .msg = "MODULE_ROCEE_QMM"
|
|
+ }, {
|
|
+ .module_id = MODULE_ROCEE_LSAN,
|
|
+ .msg = "MODULE_ROCEE_LSAN"
|
|
}
|
|
};
|
|
|
|
@@ -720,6 +750,12 @@ static const struct hclge_hw_type_id hclge_hw_type_id_st[] = {
|
|
}, {
|
|
.type_id = GLB_ERROR,
|
|
.msg = "glb_error"
|
|
+ }, {
|
|
+ .type_id = ROCEE_NORMAL_ERR,
|
|
+ .msg = "rocee_normal_error"
|
|
+ }, {
|
|
+ .type_id = ROCEE_OVF_ERR,
|
|
+ .msg = "rocee_ovf_error"
|
|
}
|
|
};
|
|
|
|
@@ -2128,6 +2164,8 @@ hclge_handle_error_type_reg_log(struct device *dev,
|
|
#define HCLGE_ERR_TYPE_IS_RAS_OFFSET 7
|
|
|
|
u8 mod_id, total_module, type_id, total_type, i, is_ras;
|
|
+ u8 index_module = MODULE_NONE;
|
|
+ u8 index_type = NONE_ERROR;
|
|
|
|
mod_id = mod_info->mod_id;
|
|
type_id = type_reg_info->type_id & HCLGE_ERR_TYPE_MASK;
|
|
@@ -2136,11 +2174,25 @@ hclge_handle_error_type_reg_log(struct device *dev,
|
|
total_module = ARRAY_SIZE(hclge_hw_module_id_st);
|
|
total_type = ARRAY_SIZE(hclge_hw_type_id_st);
|
|
|
|
- if (mod_id < total_module && type_id < total_type)
|
|
+ for (i = 0; i < total_module; i++) {
|
|
+ if (mod_id == hclge_hw_module_id_st[i].module_id) {
|
|
+ index_module = i;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ for (i = 0; i < total_type; i++) {
|
|
+ if (type_id == hclge_hw_type_id_st[i].type_id) {
|
|
+ index_type = i;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (index_module != MODULE_NONE && index_type != NONE_ERROR)
|
|
dev_err(dev,
|
|
"found %s %s, is %s error.\n",
|
|
- hclge_hw_module_id_st[mod_id].msg,
|
|
- hclge_hw_type_id_st[type_id].msg,
|
|
+ hclge_hw_module_id_st[index_module].msg,
|
|
+ hclge_hw_type_id_st[index_type].msg,
|
|
is_ras ? "ras" : "msix");
|
|
else
|
|
dev_err(dev,
|
|
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h
|
|
index 6cc225a5cfbe..aa9bd5a5e7dd 100644
|
|
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h
|
|
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h
|
|
@@ -18,6 +18,8 @@
|
|
BIT(HCLGE_VECTOR0_IMP_CMDQ_ERR_B)
|
|
#define HCLGE_RAS_REG_NFE_MASK 0xFF00
|
|
#define HCLGE_RAS_REG_ROCEE_ERR_MASK 0x3000000
|
|
+#define HCLGE_RAS_REG_ERR_MASK \
|
|
+ (HCLGE_RAS_REG_NFE_MASK | HCLGE_RAS_REG_ROCEE_ERR_MASK)
|
|
|
|
#define HCLGE_VECTOR0_REG_MSIX_MASK 0x1FF00
|
|
|
|
@@ -137,6 +139,18 @@ enum hclge_mod_name_list {
|
|
MODULE_RCB_TX = 12,
|
|
MODULE_TXDMA = 13,
|
|
MODULE_MASTER = 14,
|
|
+ /* add new MODULE NAME for NIC here in order */
|
|
+ MODULE_ROCEE_TOP = 40,
|
|
+ MODULE_ROCEE_TIMER = 41,
|
|
+ MODULE_ROCEE_MDB = 42,
|
|
+ MODULE_ROCEE_TSP = 43,
|
|
+ MODULE_ROCEE_TRP = 44,
|
|
+ MODULE_ROCEE_SCC = 45,
|
|
+ MODULE_ROCEE_CAEP = 46,
|
|
+ MODULE_ROCEE_GEN_AC = 47,
|
|
+ MODULE_ROCEE_QMM = 48,
|
|
+ MODULE_ROCEE_LSAN = 49,
|
|
+ /* add new MODULE NAME for RoCEE here in order */
|
|
};
|
|
|
|
enum hclge_err_type_list {
|
|
@@ -153,6 +167,10 @@ enum hclge_err_type_list {
|
|
ETS_ERROR = 10,
|
|
NCSI_ERROR = 11,
|
|
GLB_ERROR = 12,
|
|
+ /* add new ERROR TYPE for NIC here in order */
|
|
+ ROCEE_NORMAL_ERR = 40,
|
|
+ ROCEE_OVF_ERR = 41,
|
|
+ /* add new ERROR TYPE for ROCEE here in order */
|
|
};
|
|
|
|
struct hclge_hw_blk {
|
|
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
|
|
index 46a3bc0a9df3..b7e3b4e399c9 100644
|
|
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
|
|
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
|
|
@@ -3256,8 +3256,7 @@ static u32 hclge_check_event_cause(struct hclge_dev *hdev, u32 *clearval)
|
|
|
|
/* check for vector0 msix event and hardware error event source */
|
|
if (msix_src_reg & HCLGE_VECTOR0_REG_MSIX_MASK ||
|
|
- hw_err_src_reg & HCLGE_RAS_REG_NFE_MASK ||
|
|
- hw_err_src_reg & HCLGE_RAS_REG_ROCEE_ERR_MASK)
|
|
+ hw_err_src_reg & HCLGE_RAS_REG_ERR_MASK)
|
|
return HCLGE_VECTOR0_EVENT_ERR;
|
|
|
|
/* check for vector0 mailbox(=CMDQ RX) event source */
|
|
--
|
|
2.34.1
|
|
|