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

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -9784,7 +9784,7 @@ static void gaudi2_handle_eqe(struct hl_device *hdev, struct hl_eq_entry *eq_ent
		break;

	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;
		error_count = GAUDI2_NA_EVENT_CAUSE;
		is_critical = true;
+8 −1
Original line number Diff line number Diff line
@@ -357,6 +357,7 @@ struct hl_eq_addr_dec_intr_data {
struct hl_eq_entry {
	struct hl_eq_header hdr;
	union {
		__le64 data_placeholder;
		struct hl_eq_ecc_data ecc_data;
		struct hl_eq_hbm_ecc_data hbm_ecc_data;	/* Gaudi1 HBM */
		struct hl_eq_sm_sei_data sm_sei_data;
@@ -661,6 +662,9 @@ enum pq_init_status {
 * CPUCP_PACKET_ACTIVE_STATUS_SET -
 *       LKD sends FW indication whether device is free or in use, this indication is reported
 *       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 {
@@ -725,6 +729,8 @@ enum cpucp_packet_id {
	CPUCP_PACKET_RESERVED9,			/* not used */
	CPUCP_PACKET_RESERVED10,		/* not used */
	CPUCP_PACKET_RESERVED11,		/* not used */
	CPUCP_PACKET_RESERVED12,		/* internal */
	CPUCP_PACKET_REGISTER_INTERRUPTS,	/* internal */
	CPUCP_PACKET_ID_MAX			/* must be last */
};

@@ -1127,6 +1133,7 @@ struct cpucp_security_info {
 *                     (0 = functional 1 = binned)
 * @interposer_version: Interposer 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
 */
struct cpucp_info {
@@ -1154,7 +1161,7 @@ struct cpucp_info {
	__u8 substrate_version;
	__u8 reserved2;
	struct cpucp_security_info sec_info;
	__le32 reserved3;
	__le32 fw_hbm_region_size;
	__u8 pll_map[PLL_MAP_LEN];
	__le64 mme_binning_mask;
	__u8 fw_os_version[VERSION_MAX_LEN];
+12 −35
Original line number Diff line number Diff line
@@ -770,15 +770,23 @@ enum hl_components {
	HL_COMPONENTS_ARMCP,
	HL_COMPONENTS_CPLD,
	HL_COMPONENTS_UBOOT,
	HL_COMPONENTS_FUSE,
	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_size: size of all the struct (including dynamic size of modules).
 * @modules_offset: offset of the modules field in this struct.
 * @component: version of the component itself.
 * @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
 *              hl_modules is used.
 * @modules_counter: number of set bits in modules_mask.
@@ -791,45 +799,14 @@ struct hl_component_versions {
	__le16 modules_offset;
	__u8 component[VERSION_MAX_LEN];
	__u8 fw_os[VERSION_MAX_LEN];
	__u8 comp_name[NAME_MAX_LEN];
	__le16 modules_mask;
	__u8 modules_counter;
	__u8 reserved[1];
	__u8 modules[][VERSION_MAX_LEN];
};

/**
 * 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[];
	struct hl_module_data modules[];
};

/* Max size of struct hl_component_versions */
#define HL_COMPONENT_VERSIONS_MAX_SIZE \
	(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)
/* Max size of fit size */
#define HL_FW_VERSIONS_FIT_SIZE	4096

#endif /* HL_BOOT_IF_H */
+2 −2
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0
 *
 * Copyright 2018-2021 HabanaLabs, Ltd.
 * Copyright 2018-2022 HabanaLabs, Ltd.
 * All Rights Reserved.
 *
 */
@@ -958,7 +958,7 @@ enum gaudi2_async_event_id {
	GAUDI2_EVENT_CPU11_STATUS_NIC11_ENG1 = 1318,
	GAUDI2_EVENT_ARC_DCCM_FULL = 1319,
	GAUDI2_EVENT_CPU_FP32_NOT_SUPPORTED = 1320,
	GAUDI2_EVENT_DEV_RESET_REQ = 1321,
	GAUDI2_EVENT_CPU_DEV_RESET_REQ = 1321,
	GAUDI2_EVENT_SIZE,
};

+4 −1
Original line number Diff line number Diff line
@@ -63,7 +63,10 @@ struct gaudi2_cold_rst_data {
			u32 fake_sig_validation_en : 1;
			u32 bist_skip_enable : 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;
	};