[PATCH 1/3] habanalabs: update SyncManager interrupt handling

From: Oded Gabbay
Date: Tue Jan 26 2021 - 22:29:17 EST


The firmware provides more information about SyncManager events.
Adjust the code to the latest firmware interface file.

Signed-off-by: Oded Gabbay <ogabbay@xxxxxxxxxx>
---
drivers/misc/habanalabs/gaudi/gaudi.c | 14 +++++++-------
drivers/misc/habanalabs/include/common/cpucp_if.h | 11 +++++++++--
2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/drivers/misc/habanalabs/gaudi/gaudi.c b/drivers/misc/habanalabs/gaudi/gaudi.c
index 1348016309e3..a9bd5aef6c02 100644
--- a/drivers/misc/habanalabs/gaudi/gaudi.c
+++ b/drivers/misc/habanalabs/gaudi/gaudi.c
@@ -6860,24 +6860,24 @@ static void gaudi_print_sm_sei_info(struct hl_device *hdev, u16 event_type,
u32 index = event_type - GAUDI_EVENT_DMA_IF_SEI_0;

switch (sei_data->sei_cause) {
- case GAUDI_SM_SEI_SO_OVERFLOW:
+ case SM_SEI_SO_OVERFLOW:
dev_err(hdev->dev,
"SM %u SEI Error: SO %u overflow/underflow",
- index, le16_to_cpu(sei_data->sei_log));
+ index, le32_to_cpu(sei_data->sei_log));
break;
- case GAUDI_SM_SEI_LBW_4B_UNALIGNED:
+ case SM_SEI_LBW_4B_UNALIGNED:
dev_err(hdev->dev,
"SM %u SEI Error: Unaligned 4B LBW access, monitor agent address low - %#x",
- index, le16_to_cpu(sei_data->sei_log));
+ index, le32_to_cpu(sei_data->sei_log));
break;
- case GAUDI_SM_SEI_AXI_RESPONSE_ERR:
+ case SM_SEI_AXI_RESPONSE_ERR:
dev_err(hdev->dev,
"SM %u SEI Error: AXI ID %u response error",
- index, le16_to_cpu(sei_data->sei_log));
+ index, le32_to_cpu(sei_data->sei_log));
break;
default:
dev_err(hdev->dev, "Unknown SM SEI cause %u",
- le16_to_cpu(sei_data->sei_log));
+ le32_to_cpu(sei_data->sei_log));
break;
}
}
diff --git a/drivers/misc/habanalabs/include/common/cpucp_if.h b/drivers/misc/habanalabs/include/common/cpucp_if.h
index d75d1077461b..b77c1c16c32c 100644
--- a/drivers/misc/habanalabs/include/common/cpucp_if.h
+++ b/drivers/misc/habanalabs/include/common/cpucp_if.h
@@ -58,10 +58,17 @@ struct hl_eq_ecc_data {
__u8 pad[7];
};

+enum hl_sm_sei_cause {
+ SM_SEI_SO_OVERFLOW,
+ SM_SEI_LBW_4B_UNALIGNED,
+ SM_SEI_AXI_RESPONSE_ERR
+};
+
struct hl_eq_sm_sei_data {
- __le16 sei_log;
+ __le32 sei_log;
+ /* enum hl_sm_sei_cause */
__u8 sei_cause;
- __u8 pad[5];
+ __u8 pad[3];
};

struct hl_eq_entry {
--
2.25.1