文章目录
背景
在DPU的fw操作flint的时候,很多命令都会报这个错误:MFE_NO_FLASH_DETECTED
,早期很疑惑并且猜测MFE是Mellanox Firmware Engine。实际并不是,具体还得走到mellanox flash的代码,该部分代码是Mellanox flint的一个库。
一些报错场景
比如烧录错误的PSID的fw到DPU后,造成DPU无法启动,重新烧录报错:
比如下面这两个之所以报错是网卡secure功能,不允许查看。在ES上可以查看。
MFE是什么?
从下面这点代码可以得知,MFE,是Mellanox Flash Error的全称
bash
typedef enum MfError
{
MFE_OK = 0,
MFE_ERROR,
MFE_BAD_PARAMS,
MFE_CR_ERROR,
MFE_HW_DEVID_ERROR,
有哪些MFE
比如:MFE_NO_FLASH_DETECTED就在其中
bash
typedef enum MfError
{
MFE_OK = 0,
MFE_ERROR,
MFE_BAD_PARAMS,
MFE_CR_ERROR,
MFE_HW_DEVID_ERROR,
MFE_INVAL,
MFE_NOT_IMPLEMENTED,
MFE_UNSUPPORTED_FLASH_TOPOLOGY,
MFE_UNSUPPORTED_FLASH_TYPE,
MFE_CFI_FAILED,
MFE_TIMEOUT,
MFE_ERASE_TIMEOUT,
MFE_WRITE_TIMEOUT,
MFE_ERASE_ERROR,
MFE_WRITE_ERROR,
MFE_BAD_ALIGN,
MFE_SEM_LOCKED,
MFE_VERIFY_ERROR,
MFE_NOMEM,
MFE_OUT_OF_RANGE,
MFE_CMD_SUPPORTED_INBAND_ONLY,
MFE_NO_FLASH_DETECTED,
MFE_LOCKED_CRSPACE,
MFE_CMDIF_BAD_STATUS_ERR,
MFE_CMDIF_TIMEOUT_ERR,
MFE_CMDIF_NOT_READY,
MFE_CMDIF_UNKN_TLV,
MFE_CMDIF_BAD_OP,
MFE_MISMATCH_KEY,
MFE_MISSING_KEY,
MFE_UNKNOWN_REG,
MFE_DIRECT_FW_ACCESS_DISABLED,
MFE_MANAGED_SWITCH_NOT_SUPPORTED,
MFE_NOT_SUPPORTED_OPERATION,
MFE_FLASH_NOT_EXIST,
MFE_MISMATCH_PARAM,
MFE_EXCEED_SUBSECTORS_MAX_NUM,
MFE_EXCEED_SECTORS_MAX_NUM,
MFE_SECTORS_NUM_NOT_POWER_OF_TWO,
MFE_SECTORS_NUM_MORE_THEN_0_LESS_THEN_4,
MFE_UNKOWN_ACCESS_TYPE,
MFE_UNSUPPORTED_DEVICE,
MFE_UNSUPPORTED_ERASE_OPERATION,
MFE_OLD_DEVICE_TYPE,
MFE_ICMD_INIT_FAILED,
MFE_ICMD_NOT_SUPPORTED,
MFE_HW_ACCESS_NOT_SUPP,
MFE_MAD_SEND_ERR,
MFE_ICMD_BAD_PARAM,
MFE_ICMD_INVALID_OPCODE,
MFE_ICMD_INVALID_CMD,
MFE_ICMD_OPERATIONAL_ERROR,
MFE_DATA_IS_OTP,
MFE_REG_ACCESS_BAD_METHOD,
MFE_REG_ACCESS_NOT_SUPPORTED,
MFE_REG_ACCESS_DEV_BUSY,
MFE_REG_ACCESS_VER_NOT_SUPP,
MFE_REG_ACCESS_UNKNOWN_TLV,
MFE_REG_ACCESS_REG_NOT_SUPP,
MFE_REG_ACCESS_CLASS_NOT_SUPP,
MFE_REG_ACCESS_METHOD_NOT_SUPP,
MFE_REG_ACCESS_BAD_PARAM,
MFE_REG_ACCESS_RES_NOT_AVLBL,
MFE_REG_ACCESS_MSG_RECPT_ACK,
MFE_REG_ACCESS_UNKNOWN_ERR,
MFE_REG_ACCESS_SIZE_EXCCEEDS_LIMIT,
MFE_PCICONF,
MFE_ILLEGAL_BANK_NUM,
MFE_OCR_NOT_SUPPORTED,
MFE_ACCESS_COMMANDS_NOT_INITIALIZED,
MFE_LAST
} MfError;