From 01c4d3d32c5044d3d17055c2d94d40fee9d130e1 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 1 Jul 2023 00:38:48 +0200 Subject: Adding upstream version 2.5. Signed-off-by: Daniel Baumann --- plugins/memblaze/memblaze-utils.h | 342 +++++++++++++++++++------------------- 1 file changed, 169 insertions(+), 173 deletions(-) (limited to 'plugins/memblaze/memblaze-utils.h') diff --git a/plugins/memblaze/memblaze-utils.h b/plugins/memblaze/memblaze-utils.h index f64a115..dd89189 100644 --- a/plugins/memblaze/memblaze-utils.h +++ b/plugins/memblaze/memblaze-utils.h @@ -2,220 +2,216 @@ #ifndef __MEMBLAZE_UTILS_H__ #define __MEMBLAZE_UTILS_H__ -#define SMART_INFO_OLD_SIZE 512 -#define SMART_INFO_NEW_SIZE 4096 +#define SMART_INFO_OLD_SIZE 512 +#define SMART_INFO_NEW_SIZE 4096 -#define ID_SIZE 3 -#define NM_SIZE 2 -#define RAW_SIZE 7 +#define ID_SIZE 3 +#define NM_SIZE 2 +#define RAW_SIZE 7 // Intel Format & new format /* Raisin Additional smart external ID */ -#define RAISIN_SI_VD_PROGRAM_FAIL_ID 0xAB -#define RAISIN_SI_VD_ERASE_FAIL_ID 0xAC -#define RAISIN_SI_VD_WEARLEVELING_COUNT_ID 0xAD -#define RAISIN_SI_VD_E2E_DECTECTION_COUNT_ID 0xB8 -#define RAISIN_SI_VD_PCIE_CRC_ERR_COUNT_ID 0xC7 -#define RAISIN_SI_VD_TIMED_WORKLOAD_MEDIA_WEAR_ID 0xE2 -#define RAISIN_SI_VD_TIMED_WORKLOAD_HOST_READ_ID 0xE3 -#define RAISIN_SI_VD_TIMED_WORKLOAD_TIMER_ID 0xE4 -#define RAISIN_SI_VD_THERMAL_THROTTLE_STATUS_ID 0xEA -#define RAISIN_SI_VD_RETRY_BUFF_OVERFLOW_COUNT_ID 0xF0 -#define RAISIN_SI_VD_PLL_LOCK_LOSS_COUNT_ID 0xF3 -#define RAISIN_SI_VD_TOTAL_WRITE_ID 0xF4 -#define RAISIN_SI_VD_HOST_WRITE_ID 0xF5 -#define RAISIN_SI_VD_SYSTEM_AREA_LIFE_LEFT_ID 0xF6 -#define RAISIN_SI_VD_TOTAL_READ_ID 0xFA -#define RAISIN_SI_VD_TEMPT_SINCE_BORN_ID 0xE7 -#define RAISIN_SI_VD_POWER_CONSUMPTION_ID 0xE8 -#define RAISIN_SI_VD_TEMPT_SINCE_BOOTUP_ID 0xAF -#define RAISIN_SI_VD_POWER_LOSS_PROTECTION_ID 0xEC -#define RAISIN_SI_VD_READ_FAIL_ID 0xF2 -#define RAISIN_SI_VD_THERMAL_THROTTLE_TIME_ID 0xEB -#define RAISIN_SI_VD_FLASH_MEDIA_ERROR_ID 0xED +#define RAISIN_SI_VD_PROGRAM_FAIL_ID 0xAB +#define RAISIN_SI_VD_ERASE_FAIL_ID 0xAC +#define RAISIN_SI_VD_WEARLEVELING_COUNT_ID 0xAD +#define RAISIN_SI_VD_E2E_DECTECTION_COUNT_ID 0xB8 +#define RAISIN_SI_VD_PCIE_CRC_ERR_COUNT_ID 0xC7 +#define RAISIN_SI_VD_TIMED_WORKLOAD_MEDIA_WEAR_ID 0xE2 +#define RAISIN_SI_VD_TIMED_WORKLOAD_HOST_READ_ID 0xE3 +#define RAISIN_SI_VD_TIMED_WORKLOAD_TIMER_ID 0xE4 +#define RAISIN_SI_VD_THERMAL_THROTTLE_STATUS_ID 0xEA +#define RAISIN_SI_VD_RETRY_BUFF_OVERFLOW_COUNT_ID 0xF0 +#define RAISIN_SI_VD_PLL_LOCK_LOSS_COUNT_ID 0xF3 +#define RAISIN_SI_VD_TOTAL_WRITE_ID 0xF4 +#define RAISIN_SI_VD_HOST_WRITE_ID 0xF5 +#define RAISIN_SI_VD_SYSTEM_AREA_LIFE_LEFT_ID 0xF6 +#define RAISIN_SI_VD_TOTAL_READ_ID 0xFA +#define RAISIN_SI_VD_TEMPT_SINCE_BORN_ID 0xE7 +#define RAISIN_SI_VD_POWER_CONSUMPTION_ID 0xE8 +#define RAISIN_SI_VD_TEMPT_SINCE_BOOTUP_ID 0xAF +#define RAISIN_SI_VD_POWER_LOSS_PROTECTION_ID 0xEC +#define RAISIN_SI_VD_READ_FAIL_ID 0xF2 +#define RAISIN_SI_VD_THERMAL_THROTTLE_TIME_ID 0xEB +#define RAISIN_SI_VD_FLASH_MEDIA_ERROR_ID 0xED /* Raisin Addtional smart internal ID */ typedef enum { - /* smart attr following intel */ - RAISIN_SI_VD_PROGRAM_FAIL = 0, /* 0xAB */ - RAISIN_SI_VD_ERASE_FAIL = 1, /* 0xAC */ - RAISIN_SI_VD_WEARLEVELING_COUNT = 2,/* 0xAD */ - RAISIN_SI_VD_E2E_DECTECTION_COUNT = 3, /* 0xB8 */ - RAISIN_SI_VD_PCIE_CRC_ERR_COUNT = 4, /* 0xC7, 2 port data in one attribute */ - RAISIN_SI_VD_TIMED_WORKLOAD_MEDIA_WEAR = 5, /* 0xE2 , unknown definition*/ - RAISIN_SI_VD_TIMED_WORKLOAD_HOST_READ = 6, /* 0xE3 , unknown definition */ - RAISIN_SI_VD_TIMED_WORKLOAD_TIMER = 7, /* 0xE4 , unknown definition */ - RAISIN_SI_VD_THERMAL_THROTTLE_STATUS = 8, /* 0xEA */ - RAISIN_SI_VD_RETRY_BUFF_OVERFLOW_COUNT = 9, /* 0xF0, unknown definition*/ - RAISIN_SI_VD_PLL_LOCK_LOSS_COUNT = 10, /* 0xF3, unknown definition*/ - RAISIN_SI_VD_TOTAL_WRITE = 11, /* 0xF4, unit is 32MiB */ - RAISIN_SI_VD_HOST_WRITE = 12, /* 0xF5, unit is 32MiB */ - RAISIN_SI_VD_SYSTEM_AREA_LIFE_LEFT = 13, /* 0xF6, unknown definition*/ - RAISIN_SI_VD_TOTAL_READ = 14, /* 0xFA, unit is 32MiB */ + /* smart attr following intel */ + RAISIN_SI_VD_PROGRAM_FAIL = 0, /* 0xAB */ + RAISIN_SI_VD_ERASE_FAIL = 1, /* 0xAC */ + RAISIN_SI_VD_WEARLEVELING_COUNT = 2,/* 0xAD */ + RAISIN_SI_VD_E2E_DECTECTION_COUNT = 3, /* 0xB8 */ + RAISIN_SI_VD_PCIE_CRC_ERR_COUNT = 4, /* 0xC7, 2 port data in one attribute */ + RAISIN_SI_VD_TIMED_WORKLOAD_MEDIA_WEAR = 5, /* 0xE2 , unknown definition*/ + RAISIN_SI_VD_TIMED_WORKLOAD_HOST_READ = 6, /* 0xE3 , unknown definition */ + RAISIN_SI_VD_TIMED_WORKLOAD_TIMER = 7, /* 0xE4 , unknown definition */ + RAISIN_SI_VD_THERMAL_THROTTLE_STATUS = 8, /* 0xEA */ + RAISIN_SI_VD_RETRY_BUFF_OVERFLOW_COUNT = 9, /* 0xF0, unknown definition*/ + RAISIN_SI_VD_PLL_LOCK_LOSS_COUNT = 10, /* 0xF3, unknown definition*/ + RAISIN_SI_VD_TOTAL_WRITE = 11, /* 0xF4, unit is 32MiB */ + RAISIN_SI_VD_HOST_WRITE = 12, /* 0xF5, unit is 32MiB */ + RAISIN_SI_VD_SYSTEM_AREA_LIFE_LEFT = 13, /* 0xF6, unknown definition*/ + RAISIN_SI_VD_TOTAL_READ = 14, /* 0xFA, unit is 32MiB */ - /* smart attr self defined */ - RAISIN_SI_VD_TEMPT_SINCE_BORN = 15, /* 0xE7 */ - RAISIN_SI_VD_POWER_CONSUMPTION = 16, /* 0xE8 */ - RAISIN_SI_VD_TEMPT_SINCE_BOOTUP = 17, /* 0xAF */ - RAISIN_SI_VD_POWER_LOSS_PROTECTION = 18, /* 0xEC */ - RAISIN_SI_VD_READ_FAIL = 19, /* 0xF2 */ - RAISIN_SI_VD_THERMAL_THROTTLE_TIME = 20, /* 0xEB */ - RAISIN_SI_VD_FLASH_MEDIA_ERROR = 21, /* 0xED */ - RAISIN_SI_VD_SMART_INFO_ITEMS_MAX, + /* smart attr self defined */ + RAISIN_SI_VD_TEMPT_SINCE_BORN = 15, /* 0xE7 */ + RAISIN_SI_VD_POWER_CONSUMPTION = 16, /* 0xE8 */ + RAISIN_SI_VD_TEMPT_SINCE_BOOTUP = 17, /* 0xAF */ + RAISIN_SI_VD_POWER_LOSS_PROTECTION = 18, /* 0xEC */ + RAISIN_SI_VD_READ_FAIL = 19, /* 0xF2 */ + RAISIN_SI_VD_THERMAL_THROTTLE_TIME = 20, /* 0xEB */ + RAISIN_SI_VD_FLASH_MEDIA_ERROR = 21, /* 0xED */ + RAISIN_SI_VD_SMART_INFO_ITEMS_MAX, } RAISIN_si_vendor_smart_item_e; // Memblaze Format & old format enum { - /*0*/TOTAL_WRITE = 0, - /*1*/TOTAL_READ, - /*2*/THERMAL_THROTTLE, - /*3*/TEMPT_SINCE_RESET, - /*4*/POWER_CONSUMPTION, - /*5*/TEMPT_SINCE_BOOTUP, - /*6*/POWER_LOSS_PROTECTION, - /*7*/WEARLEVELING_COUNT, - /*8*/HOST_WRITE, - /*9*/THERMAL_THROTTLE_CNT, - /*10*/CORRECT_PCIE_PORT0, - /*11*/CORRECT_PCIE_PORT1, - /*12*/REBUILD_FAIL, - /*13*/ERASE_FAIL, - /*14*/PROGRAM_FAIL, - /*15*/READ_FAIL, - /*16*/NR_SMART_ITEMS = RAISIN_SI_VD_SMART_INFO_ITEMS_MAX, + /*0*/TOTAL_WRITE = 0, + /*1*/TOTAL_READ, + /*2*/THERMAL_THROTTLE, + /*3*/TEMPT_SINCE_RESET, + /*4*/POWER_CONSUMPTION, + /*5*/TEMPT_SINCE_BOOTUP, + /*6*/POWER_LOSS_PROTECTION, + /*7*/WEARLEVELING_COUNT, + /*8*/HOST_WRITE, + /*9*/THERMAL_THROTTLE_CNT, + /*10*/CORRECT_PCIE_PORT0, + /*11*/CORRECT_PCIE_PORT1, + /*12*/REBUILD_FAIL, + /*13*/ERASE_FAIL, + /*14*/PROGRAM_FAIL, + /*15*/READ_FAIL, + /*16*/NR_SMART_ITEMS = RAISIN_SI_VD_SMART_INFO_ITEMS_MAX, }; // Memblaze Format & old format #pragma pack(push, 1) struct nvme_memblaze_smart_log_item { - __u8 id[3]; - union { - __u8 __nmval[2]; - __le16 nmval; - }; - union { - __u8 rawval[6]; - struct temperature { - __le16 max; - __le16 min; - __le16 curr; - } temperature; - struct power { - __le16 max; - __le16 min; - __le16 curr; - } power; - struct thermal_throttle_mb { - __u8 on; - __u32 count; - } thermal_throttle; - struct temperature_p { - __le16 max; - __le16 min; - } temperature_p; - struct power_loss_protection { - __u8 curr; - } power_loss_protection; - struct wearleveling_count { - __le16 min; - __le16 max; - __le16 avg; - } wearleveling_count; - struct thermal_throttle_cnt { - __u8 active; - __le32 cnt; - } thermal_throttle_cnt; - }; - __u8 resv; + __u8 id[3]; + union { + __u8 __nmval[2]; + __le16 nmval; + }; + union { + __u8 rawval[6]; + struct temperature { + __le16 max; + __le16 min; + __le16 curr; + } temperature; + struct power { + __le16 max; + __le16 min; + __le16 curr; + } power; + struct thermal_throttle_mb { + __u8 on; + __u32 count; + } thermal_throttle; + struct temperature_p { + __le16 max; + __le16 min; + } temperature_p; + struct power_loss_protection { + __u8 curr; + } power_loss_protection; + struct wearleveling_count { + __le16 min; + __le16 max; + __le16 avg; + } wearleveling_count; + struct thermal_throttle_cnt { + __u8 active; + __le32 cnt; + } thermal_throttle_cnt; + }; + __u8 resv; }; #pragma pack(pop) struct nvme_memblaze_smart_log { - struct nvme_memblaze_smart_log_item items[NR_SMART_ITEMS]; - __u8 resv[SMART_INFO_OLD_SIZE - sizeof(struct nvme_memblaze_smart_log_item) * NR_SMART_ITEMS]; + struct nvme_memblaze_smart_log_item items[NR_SMART_ITEMS]; + __u8 resv[SMART_INFO_OLD_SIZE - sizeof(struct nvme_memblaze_smart_log_item) * NR_SMART_ITEMS]; }; // Intel Format & new format struct nvme_p4_smart_log_item { - /* Item identifier */ - __u8 id[ID_SIZE]; - /* Normalized value or percentage. In the range from 0 to 100. */ - __u8 nmVal[NM_SIZE]; - /* raw value */ - __u8 rawVal[RAW_SIZE]; + /* Item identifier */ + __u8 id[ID_SIZE]; + /* Normalized value or percentage. In the range from 0 to 100. */ + __u8 nmVal[NM_SIZE]; + /* raw value */ + __u8 rawVal[RAW_SIZE]; }; struct nvme_p4_smart_log { - struct nvme_p4_smart_log_item itemArr[NR_SMART_ITEMS]; + struct nvme_p4_smart_log_item itemArr[NR_SMART_ITEMS]; - /** - * change 512 to 4096. - * because micron's getlogpage request,the size of many commands have changed to 4k. - * request size > user malloc size,casuing parameters that are closed in momery are dirty. - */ - __u8 resv[SMART_INFO_NEW_SIZE - sizeof(struct nvme_p4_smart_log_item) * NR_SMART_ITEMS]; + /** + * change 512 to 4096. + * because micron's getlogpage request,the size of many commands have changed to 4k. + * request size > user malloc size,casuing parameters that are closed in momery are dirty. + */ + __u8 resv[SMART_INFO_NEW_SIZE - sizeof(struct nvme_p4_smart_log_item) * NR_SMART_ITEMS]; }; // base -#define DD do{ printf("=Memblaze= %s[%d]-%s():\n", __FILE__, __LINE__, __func__); }while(0) -#define DE(str) do{ printf("===ERROR!=== %s[%d]-%s():str=%s\n", __FILE__, __LINE__, __func__, \ - str); }while(0) +#define DD do{ printf("=Memblaze= %s[%d]-%s():\n", __FILE__, __LINE__, __func__); }while(0) +#define DE(str) do{ printf("===ERROR!=== %s[%d]-%s():str=%s\n", __FILE__, __LINE__, __func__, \ + str); }while(0) // integer -#define DI(i) do{ printf("=Memblaze= %s[%d]-%s():int=%d\n", __FILE__, __LINE__, __func__, \ - (int)i); } while(0) -#define DPI(prompt, i) do{ printf("=Memblaze= %s[%d]-%s():%s=%d\n", __FILE__, __LINE__, __func__, \ - prompt, i); }while(0) -#define DAI(prompt, i, arr, max) do{ printf("=Memblaze= %s[%d]-%s():%s", __FILE__, __LINE__, __func__, prompt); \ - for(i=0;i