Commit 336b78c6 authored by Oded Gabbay's avatar Oded Gabbay

accel/habanalabs: align to latest firmware specs

Copy the most up-to-date interface files to the firmware.
Signed-off-by: default avatarOded Gabbay <ogabbay@kernel.org>
Reviewed-by: default avatarOfir Bitton <obitton@habana.ai>
parent 443355d2
...@@ -9784,7 +9784,7 @@ static void gaudi2_handle_eqe(struct hl_device *hdev, struct hl_eq_entry *eq_ent ...@@ -9784,7 +9784,7 @@ static void gaudi2_handle_eqe(struct hl_device *hdev, struct hl_eq_entry *eq_ent
break; break;
case GAUDI2_EVENT_CPU_FP32_NOT_SUPPORTED: case GAUDI2_EVENT_CPU_FP32_NOT_SUPPORTED:
case GAUDI2_EVENT_DEV_RESET_REQ: case GAUDI2_EVENT_CPU_DEV_RESET_REQ:
event_mask |= HL_NOTIFIER_EVENT_GENERAL_HW_ERR; event_mask |= HL_NOTIFIER_EVENT_GENERAL_HW_ERR;
error_count = GAUDI2_NA_EVENT_CAUSE; error_count = GAUDI2_NA_EVENT_CAUSE;
is_critical = true; is_critical = true;
......
...@@ -357,6 +357,7 @@ struct hl_eq_addr_dec_intr_data { ...@@ -357,6 +357,7 @@ struct hl_eq_addr_dec_intr_data {
struct hl_eq_entry { struct hl_eq_entry {
struct hl_eq_header hdr; struct hl_eq_header hdr;
union { union {
__le64 data_placeholder;
struct hl_eq_ecc_data ecc_data; struct hl_eq_ecc_data ecc_data;
struct hl_eq_hbm_ecc_data hbm_ecc_data; /* Gaudi1 HBM */ struct hl_eq_hbm_ecc_data hbm_ecc_data; /* Gaudi1 HBM */
struct hl_eq_sm_sei_data sm_sei_data; struct hl_eq_sm_sei_data sm_sei_data;
...@@ -661,6 +662,9 @@ enum pq_init_status { ...@@ -661,6 +662,9 @@ enum pq_init_status {
* CPUCP_PACKET_ACTIVE_STATUS_SET - * CPUCP_PACKET_ACTIVE_STATUS_SET -
* LKD sends FW indication whether device is free or in use, this indication is reported * LKD sends FW indication whether device is free or in use, this indication is reported
* also to the BMC. * also to the BMC.
*
* CPUCP_PACKET_REGISTER_INTERRUPTS -
* Packet to register interrupts indicating LKD is ready to receive events from FW.
*/ */
enum cpucp_packet_id { enum cpucp_packet_id {
...@@ -725,6 +729,8 @@ enum cpucp_packet_id { ...@@ -725,6 +729,8 @@ enum cpucp_packet_id {
CPUCP_PACKET_RESERVED9, /* not used */ CPUCP_PACKET_RESERVED9, /* not used */
CPUCP_PACKET_RESERVED10, /* not used */ CPUCP_PACKET_RESERVED10, /* not used */
CPUCP_PACKET_RESERVED11, /* not used */ CPUCP_PACKET_RESERVED11, /* not used */
CPUCP_PACKET_RESERVED12, /* internal */
CPUCP_PACKET_REGISTER_INTERRUPTS, /* internal */
CPUCP_PACKET_ID_MAX /* must be last */ CPUCP_PACKET_ID_MAX /* must be last */
}; };
...@@ -1127,6 +1133,7 @@ struct cpucp_security_info { ...@@ -1127,6 +1133,7 @@ struct cpucp_security_info {
* (0 = functional 1 = binned) * (0 = functional 1 = binned)
* @interposer_version: Interposer version programmed in eFuse * @interposer_version: Interposer version programmed in eFuse
* @substrate_version: Substrate version programmed in eFuse * @substrate_version: Substrate version programmed in eFuse
* @fw_hbm_region_size: Size in bytes of FW reserved region in HBM.
* @fw_os_version: Firmware OS Version * @fw_os_version: Firmware OS Version
*/ */
struct cpucp_info { struct cpucp_info {
...@@ -1154,7 +1161,7 @@ struct cpucp_info { ...@@ -1154,7 +1161,7 @@ struct cpucp_info {
__u8 substrate_version; __u8 substrate_version;
__u8 reserved2; __u8 reserved2;
struct cpucp_security_info sec_info; struct cpucp_security_info sec_info;
__le32 reserved3; __le32 fw_hbm_region_size;
__u8 pll_map[PLL_MAP_LEN]; __u8 pll_map[PLL_MAP_LEN];
__le64 mme_binning_mask; __le64 mme_binning_mask;
__u8 fw_os_version[VERSION_MAX_LEN]; __u8 fw_os_version[VERSION_MAX_LEN];
......
...@@ -770,15 +770,23 @@ enum hl_components { ...@@ -770,15 +770,23 @@ enum hl_components {
HL_COMPONENTS_ARMCP, HL_COMPONENTS_ARMCP,
HL_COMPONENTS_CPLD, HL_COMPONENTS_CPLD,
HL_COMPONENTS_UBOOT, HL_COMPONENTS_UBOOT,
HL_COMPONENTS_FUSE,
HL_COMPONENTS_MAX_NUM = 16 HL_COMPONENTS_MAX_NUM = 16
}; };
#define NAME_MAX_LEN 32 /* bytes */
struct hl_module_data {
__u8 name[NAME_MAX_LEN];
__u8 version[VERSION_MAX_LEN];
};
/** /**
* struct hl_component_versions - versions associated with hl component. * struct hl_component_versions - versions associated with hl component.
* @struct_size: size of all the struct (including dynamic size of modules). * @struct_size: size of all the struct (including dynamic size of modules).
* @modules_offset: offset of the modules field in this struct. * @modules_offset: offset of the modules field in this struct.
* @component: version of the component itself. * @component: version of the component itself.
* @fw_os: Firmware OS Version. * @fw_os: Firmware OS Version.
* @comp_name: Name of the component.
* @modules_mask: i'th bit (from LSB) is a flag - on if module i in enum * @modules_mask: i'th bit (from LSB) is a flag - on if module i in enum
* hl_modules is used. * hl_modules is used.
* @modules_counter: number of set bits in modules_mask. * @modules_counter: number of set bits in modules_mask.
...@@ -791,45 +799,14 @@ struct hl_component_versions { ...@@ -791,45 +799,14 @@ struct hl_component_versions {
__le16 modules_offset; __le16 modules_offset;
__u8 component[VERSION_MAX_LEN]; __u8 component[VERSION_MAX_LEN];
__u8 fw_os[VERSION_MAX_LEN]; __u8 fw_os[VERSION_MAX_LEN];
__u8 comp_name[NAME_MAX_LEN];
__le16 modules_mask; __le16 modules_mask;
__u8 modules_counter; __u8 modules_counter;
__u8 reserved[1]; __u8 reserved[1];
__u8 modules[][VERSION_MAX_LEN]; struct hl_module_data modules[];
};
/**
* struct hl_fw_versions - all versions (fuse, cpucp's components with their
* modules)
* @struct_size: size of all the struct (including dynamic size of components).
* @components_offset: offset of the components field in this struct.
* @fuse: silicon production FUSE information.
* @components_mask: i'th bit (from LSB) is a flag - on if component i in enum
* hl_components is used.
* @components_counter: number of set bits in components_mask.
* @reserved: reserved for future use.
* @components: versions of hl components. Index i corresponds to the i'th bit
* that is *on* in components_mask. For example, if
* components_mask=0b101, then *components represents arcpid and
* *(hl_component_versions*)((char*)components + 1') represents
* preboot, where 1' = components[0].struct_size.
*/
struct hl_fw_versions {
__le16 struct_size;
__le16 components_offset;
__u8 fuse[VERSION_MAX_LEN];
__le16 components_mask;
__u8 components_counter;
__u8 reserved[1];
struct hl_component_versions components[];
}; };
/* Max size of struct hl_component_versions */ /* Max size of fit size */
#define HL_COMPONENT_VERSIONS_MAX_SIZE \ #define HL_FW_VERSIONS_FIT_SIZE 4096
(sizeof(struct hl_component_versions) + HL_MODULES_MAX_NUM * \
VERSION_MAX_LEN)
/* Max size of struct hl_fw_versions */
#define HL_FW_VERSIONS_MAX_SIZE (sizeof(struct hl_fw_versions) + \
HL_COMPONENTS_MAX_NUM * HL_COMPONENT_VERSIONS_MAX_SIZE)
#endif /* HL_BOOT_IF_H */ #endif /* HL_BOOT_IF_H */
/* SPDX-License-Identifier: GPL-2.0 /* SPDX-License-Identifier: GPL-2.0
* *
* Copyright 2018-2021 HabanaLabs, Ltd. * Copyright 2018-2022 HabanaLabs, Ltd.
* All Rights Reserved. * All Rights Reserved.
* *
*/ */
...@@ -958,7 +958,7 @@ enum gaudi2_async_event_id { ...@@ -958,7 +958,7 @@ enum gaudi2_async_event_id {
GAUDI2_EVENT_CPU11_STATUS_NIC11_ENG1 = 1318, GAUDI2_EVENT_CPU11_STATUS_NIC11_ENG1 = 1318,
GAUDI2_EVENT_ARC_DCCM_FULL = 1319, GAUDI2_EVENT_ARC_DCCM_FULL = 1319,
GAUDI2_EVENT_CPU_FP32_NOT_SUPPORTED = 1320, GAUDI2_EVENT_CPU_FP32_NOT_SUPPORTED = 1320,
GAUDI2_EVENT_DEV_RESET_REQ = 1321, GAUDI2_EVENT_CPU_DEV_RESET_REQ = 1321,
GAUDI2_EVENT_SIZE, GAUDI2_EVENT_SIZE,
}; };
......
...@@ -63,7 +63,10 @@ struct gaudi2_cold_rst_data { ...@@ -63,7 +63,10 @@ struct gaudi2_cold_rst_data {
u32 fake_sig_validation_en : 1; u32 fake_sig_validation_en : 1;
u32 bist_skip_enable : 1; u32 bist_skip_enable : 1;
u32 bist_need_iatu_config : 1; u32 bist_need_iatu_config : 1;
u32 reserved : 24; u32 fake_bis_compliant : 1;
u32 wd_rst_cause_arm : 1;
u32 wd_rst_cause_arcpid : 1;
u32 reserved : 21;
}; };
__le32 data; __le32 data;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment