diff --git a/plugins/sandisk/sandisk-nvme.c b/plugins/sandisk/sandisk-nvme.c index cafada17b3..2f33dffed4 100644 --- a/plugins/sandisk/sandisk-nvme.c +++ b/plugins/sandisk/sandisk-nvme.c @@ -172,6 +172,8 @@ static int sndk_capabilities(int argc, char **argv, capabilities & SNDK_DRIVE_CAP_CLEAR_PCIE_MASK ? "Supported" : "Not Supported"); printf("get-drive-status : %s\n", capabilities & SNDK_DRIVE_CAP_DRIVE_STATUS ? "Supported" : "Not Supported"); + printf("clear-assert-dump : %s\n", + capabilities & SNDK_DRIVE_CAP_CLEAR_ASSERT ? "Supported" : "Not Supported"); printf("drive-resize : %s\n", capabilities & SNDK_DRIVE_CAP_RESIZE ? "Supported" : "Not Supported"); printf("vs-fw-activate-history : %s\n", diff --git a/plugins/sandisk/sandisk-utils.c b/plugins/sandisk/sandisk-utils.c index fdc05eadaf..a741264361 100644 --- a/plugins/sandisk/sandisk-utils.c +++ b/plugins/sandisk/sandisk-utils.c @@ -137,7 +137,6 @@ __u64 sndk_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev) int ret; uint32_t read_device_id = -1, read_vendor_id = -1; - __u32 cust_id; ret = sndk_get_pci_ids(r, dev, &read_device_id, &read_vendor_id); if (ret < 0) { @@ -158,201 +157,6 @@ __u64 sndk_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev) switch (read_vendor_id) { case SNDK_NVME_WDC_VID: switch (read_device_id) { - case SNDK_NVME_SN630_DEV_ID: - case SNDK_NVME_SN630_DEV_ID_1: - capabilities = (SNDK_DRIVE_CAP_INTERNAL_LOG | - SNDK_DRIVE_CAP_DRIVE_STATUS | - SNDK_DRIVE_CAP_CLEAR_ASSERT | - SNDK_DRIVE_CAP_RESIZE | - SNDK_DRIVE_CAP_CLEAR_PCIE); - /* verify the 0xCA log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_NVME_GET_DEVICE_INFO_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_CA_LOG_PAGE; - - /* verify the 0xD0 log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_NVME_GET_VU_SMART_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_D0_LOG_PAGE; - break; - - case SNDK_NVME_SN640_DEV_ID: - case SNDK_NVME_SN640_DEV_ID_1: - case SNDK_NVME_SN640_DEV_ID_2: - case SNDK_NVME_SN640_DEV_ID_3: - /* verify the 0xC0 log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_NVME_GET_SMART_CLOUD_ATTR_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_C0_LOG_PAGE; - - capabilities |= (SNDK_DRIVE_CAP_INTERNAL_LOG | - SNDK_DRIVE_CAP_DRIVE_STATUS | - SNDK_DRIVE_CAP_CLEAR_ASSERT | - SNDK_DRIVE_CAP_RESIZE | - SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY | - SNDK_DRIVE_CAP_DISABLE_CTLR_TELE_LOG | - SNDK_DRIVE_CAP_REASON_ID | - SNDK_DRIVE_CAP_LOG_PAGE_DIR); - - /* verify the 0xC1 (OCP Error Recovery) log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_ERROR_REC_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_OCP_C1_LOG_PAGE; - - /* verify the 0xC3 (OCP Latency Monitor) log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_LATENCY_MON_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_C3_LOG_PAGE; - - /* verify the 0xC4 (OCP Device Capabilities) log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_DEV_CAP_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_OCP_C4_LOG_PAGE; - - /* verify the 0xC5 (OCP Unsupported Requirements) log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_UNSUPPORTED_REQS_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_OCP_C5_LOG_PAGE; - - /* verify the 0xCA log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_NVME_GET_DEVICE_INFO_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_CA_LOG_PAGE; - - /* verify the 0xD0 log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_NVME_GET_VU_SMART_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_D0_LOG_PAGE; - - cust_id = run_wdc_get_fw_cust_id(r, dev); - if (cust_id == SNDK_INVALID_CUSTOMER_ID) { - fprintf(stderr, "%s: ERROR: SNDK: invalid customer id\n", __func__); - return -1; - } - - if ((cust_id == SNDK_CUSTOMER_ID_0x1004) || - (cust_id == SNDK_CUSTOMER_ID_0x1008) || - (cust_id == SNDK_CUSTOMER_ID_0x1005) || - (cust_id == SNDK_CUSTOMER_ID_0x1304)) - capabilities |= (SNDK_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY | - SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE | - SNDK_DRIVE_CAP_INFO | - SNDK_DRIVE_CAP_CLOUD_SSD_VERSION); - else - capabilities |= (SNDK_DRIVE_CAP_CLEAR_FW_ACT_HISTORY | - SNDK_DRIVE_CAP_CLEAR_PCIE); - - break; - - case SNDK_NVME_SN840_DEV_ID: - case SNDK_NVME_SN840_DEV_ID_1: - /* verify the 0xC0 log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_NVME_GET_EOL_STATUS_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_C0_LOG_PAGE; - - capabilities |= (SNDK_DRIVE_CAP_INTERNAL_LOG | - SNDK_DRIVE_CAP_DRIVE_STATUS | - SNDK_DRIVE_CAP_CLEAR_ASSERT | - SNDK_DRIVE_CAP_RESIZE | - SNDK_DRIVE_CAP_CLEAR_PCIE | - SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY | - SNDK_DRIVE_CAP_CLEAR_FW_ACT_HISTORY | - SNDK_DRIVE_CAP_DISABLE_CTLR_TELE_LOG | - SNDK_DRIVE_CAP_REASON_ID | - SNDK_DRIVE_CAP_LOG_PAGE_DIR); - - /* verify the 0xCA log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_NVME_GET_DEVICE_INFO_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_CA_LOG_PAGE; - - /* verify the 0xD0 log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_NVME_GET_VU_SMART_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_D0_LOG_PAGE; - break; - - case SNDK_NVME_SN650_DEV_ID: - case SNDK_NVME_SN650_DEV_ID_1: - case SNDK_NVME_SN650_DEV_ID_2: - case SNDK_NVME_SN650_DEV_ID_3: - case SNDK_NVME_SN650_DEV_ID_4: - case SNDK_NVME_SN655_DEV_ID: - case SNDK_NVME_SN655_DEV_ID_1: - /* verify the 0xC0 log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_NVME_GET_SMART_CLOUD_ATTR_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_C0_LOG_PAGE; - - /* verify the 0xC1 (OCP Error Recovery) log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_ERROR_REC_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_OCP_C1_LOG_PAGE; - - /* verify the 0xC3 (OCP Latency Monitor) log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_LATENCY_MON_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_C3_LOG_PAGE; - - /* verify the 0xC4 (OCP Device Capabilities) log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_DEV_CAP_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_OCP_C4_LOG_PAGE; - - /* verify the 0xC5 (OCP Unsupported Requirements) log page is supported */ - if (run_wdc_nvme_check_supported_log_page(r, dev, - SNDK_UNSUPPORTED_REQS_LOG_ID)) - capabilities |= SNDK_DRIVE_CAP_OCP_C5_LOG_PAGE; - - capabilities |= (SNDK_DRIVE_CAP_INTERNAL_LOG | - SNDK_DRIVE_CAP_DRIVE_STATUS | - SNDK_DRIVE_CAP_CLEAR_ASSERT | - SNDK_DRIVE_CAP_RESIZE | - SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY | - SNDK_DRIVE_CAP_DISABLE_CTLR_TELE_LOG | - SNDK_DRIVE_CAP_REASON_ID | - SNDK_DRIVE_CAP_LOG_PAGE_DIR); - - cust_id = run_wdc_get_fw_cust_id(r, dev); - if (cust_id == SNDK_INVALID_CUSTOMER_ID) { - fprintf(stderr, "%s: ERROR: SNDK: invalid customer id\n", __func__); - return -1; - } - - if ((cust_id == SNDK_CUSTOMER_ID_0x1004) || - (cust_id == SNDK_CUSTOMER_ID_0x1008) || - (cust_id == SNDK_CUSTOMER_ID_0x1005) || - (cust_id == SNDK_CUSTOMER_ID_0x1304)) - capabilities |= (SNDK_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY | - SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE | - SNDK_DRIVE_CAP_INFO | - SNDK_DRIVE_CAP_CLOUD_SSD_VERSION); - else - capabilities |= (SNDK_DRIVE_CAP_CLEAR_FW_ACT_HISTORY | - SNDK_DRIVE_CAP_CLEAR_PCIE); - - break; - - case SNDK_NVME_SN861_DEV_ID: - case SNDK_NVME_SN861_DEV_ID_1: - case SNDK_NVME_SN861_DEV_ID_2: - capabilities |= (SNDK_DRIVE_CAP_C0_LOG_PAGE | - SNDK_DRIVE_CAP_C3_LOG_PAGE | - SNDK_DRIVE_CAP_CA_LOG_PAGE | - SNDK_DRIVE_CAP_OCP_C4_LOG_PAGE | - SNDK_DRIVE_CAP_OCP_C5_LOG_PAGE | - SNDK_DRIVE_CAP_INTERNAL_LOG | - SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY_C2 | - SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE | - SNDK_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY | - SNDK_DRIVE_CAP_INFO | - SNDK_DRIVE_CAP_CLOUD_SSD_VERSION | - SNDK_DRIVE_CAP_LOG_PAGE_DIR | - SNDK_DRIVE_CAP_DRIVE_STATUS | - SNDK_DRIVE_CAP_SET_LATENCY_MONITOR); - break; - case SNDK_NVME_SNTMP_DEV_ID: capabilities |= (SNDK_DRIVE_CAP_C0_LOG_PAGE | SNDK_DRIVE_CAP_C3_LOG_PAGE | @@ -377,86 +181,14 @@ __u64 sndk_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev) case SNDK_NVME_SNDK_VID: switch (read_device_id) { - case SNDK_NVME_SN520_DEV_ID: - case SNDK_NVME_SN520_DEV_ID_1: - case SNDK_NVME_SN520_DEV_ID_2: - case SNDK_NVME_SN810_DEV_ID: - capabilities = SNDK_DRIVE_CAP_DUI_DATA; - break; - - case SNDK_NVME_SN820CL_DEV_ID: - capabilities = SNDK_DRIVE_CAP_DUI_DATA | - SNDK_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION | - SNDK_DRIVE_CAP_CLOUD_LOG_PAGE | - SNDK_DRIVE_CAP_C0_LOG_PAGE | - SNDK_DRIVE_CAP_HW_REV_LOG_PAGE | - SNDK_DRIVE_CAP_INFO | - SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE | - SNDK_DRIVE_CAP_NAND_STATS | - SNDK_DRIVE_CAP_DEVICE_WAF | - SNDK_DRIVE_CAP_TEMP_STATS; - break; - - case SNDK_NVME_SN720_DEV_ID: - capabilities = SNDK_DRIVE_CAP_DUI_DATA | - SNDK_DRIVE_CAP_NAND_STATS | - SNDK_DRIVE_CAP_NS_RESIZE; - break; - - case SNDK_NVME_SN730_DEV_ID: - capabilities = SNDK_DRIVE_CAP_DUI | - SNDK_DRIVE_CAP_NAND_STATS | - SNDK_DRIVE_CAP_INFO | - SNDK_DRIVE_CAP_TEMP_STATS | - SNDK_DRIVE_CAP_VUC_CLEAR_PCIE | - SNDK_DRIVE_CAP_PCIE_STATS; - break; - - case SNDK_NVME_SN530_DEV_ID_1: - case SNDK_NVME_SN530_DEV_ID_2: - case SNDK_NVME_SN530_DEV_ID_3: - case SNDK_NVME_SN530_DEV_ID_4: - case SNDK_NVME_SN530_DEV_ID_5: - case SNDK_NVME_SN350_DEV_ID: - case SNDK_NVME_SN570_DEV_ID: - case SNDK_NVME_SN850X_DEV_ID: - case SNDK_NVME_SN5000_DEV_ID_1: - case SNDK_NVME_SN5000_DEV_ID_2: - case SNDK_NVME_SN5000_DEV_ID_3: - case SNDK_NVME_SN5000_DEV_ID_4: - case SNDK_NVME_SN7000S_DEV_ID_1: case SNDK_NVME_SN7150_DEV_ID_1: case SNDK_NVME_SN7150_DEV_ID_2: case SNDK_NVME_SN7150_DEV_ID_3: case SNDK_NVME_SN7150_DEV_ID_4: case SNDK_NVME_SN7150_DEV_ID_5: - case SNDK_NVME_SN7100_DEV_ID_1: - case SNDK_NVME_SN7100_DEV_ID_2: - case SNDK_NVME_SN7100_DEV_ID_3: - case SNDK_NVME_SN8000S_DEV_ID: - case SNDK_NVME_SN5100S_DEV_ID_1: - case SNDK_NVME_SN5100S_DEV_ID_2: - case SNDK_NVME_SN5100S_DEV_ID_3: - case SNDK_NVME_SN740_DEV_ID: - case SNDK_NVME_SN740_DEV_ID_1: - case SNDK_NVME_SN740_DEV_ID_2: - case SNDK_NVME_SN740_DEV_ID_3: - case SNDK_NVME_SN340_DEV_ID: capabilities = SNDK_DRIVE_CAP_DUI; break; - case SNDK_NVME_ZN350_DEV_ID: - case SNDK_NVME_ZN350_DEV_ID_1: - capabilities = SNDK_DRIVE_CAP_DUI_DATA | - SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE | - SNDK_DRIVE_CAP_C0_LOG_PAGE | - SNDK_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY | - SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY_C2 | - SNDK_DRIVE_CAP_INFO | - SNDK_DRIVE_CAP_CLOUD_SSD_VERSION | - SNDK_DRIVE_CAP_LOG_PAGE_DIR; - break; - default: capabilities = 0; } @@ -465,6 +197,10 @@ __u64 sndk_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev) capabilities = 0; } + /* Check for fallback WDC plugin support */ + if (!capabilities) + capabilities = run_wdc_get_drive_capabilities(r, dev); + return capabilities; } diff --git a/plugins/sandisk/sandisk-utils.h b/plugins/sandisk/sandisk-utils.h index afbc018c3a..3324c1e5bd 100644 --- a/plugins/sandisk/sandisk-utils.h +++ b/plugins/sandisk/sandisk-utils.h @@ -96,42 +96,50 @@ #define SNDK_NVME_SN5100S_DEV_ID_2 0x5062 #define SNDK_NVME_SN5100S_DEV_ID_3 0x5063 -#define SNDK_DRIVE_CAP_INTERNAL_LOG 0x0000000000000001 -#define SNDK_DRIVE_CAP_C1_LOG_PAGE 0x0000000000000002 -#define SNDK_DRIVE_CAP_CA_LOG_PAGE 0x0000000000000004 -#define SNDK_DRIVE_CAP_D0_LOG_PAGE 0x0000000000000008 -#define SNDK_DRIVE_CAP_DRIVE_STATUS 0x0000000000000010 -#define SNDK_DRIVE_CAP_CLEAR_ASSERT 0x0000000000000020 -#define SNDK_DRIVE_CAP_CLEAR_PCIE 0x0000000000000040 -#define SNDK_DRIVE_CAP_RESIZE 0x0000000000000080 -#define SNDK_DRIVE_CAP_NAND_STATS 0x0000000000000100 -#define SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY 0x0000000000000200 -#define SNDK_DRIVE_CAP_CLEAR_FW_ACT_HISTORY 0x0000000000000400 -#define SNDK_DRIVE_CAP_DISABLE_CTLR_TELE_LOG 0x0000000000000800 -#define SNDK_DRIVE_CAP_REASON_ID 0x0000000000001000 -#define SNDK_DRIVE_CAP_LOG_PAGE_DIR 0x0000000000002000 -#define SNDK_DRIVE_CAP_NS_RESIZE 0x0000000000004000 -#define SNDK_DRIVE_CAP_INFO 0x0000000000008000 -#define SNDK_DRIVE_CAP_C0_LOG_PAGE 0x0000000000010000 -#define SNDK_DRIVE_CAP_TEMP_STATS 0x0000000000020000 -#define SNDK_DRIVE_CAP_VUC_CLEAR_PCIE 0x0000000000040000 -#define SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE 0x0000000000080000 -#define SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY_C2 0x0000000000100000 -#define SNDK_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY 0x0000000000200000 -#define SNDK_DRIVE_CAP_CLOUD_SSD_VERSION 0x0000000000400000 -#define SNDK_DRIVE_CAP_PCIE_STATS 0x0000000000800000 -#define SNDK_DRIVE_CAP_HW_REV_LOG_PAGE 0x0000000001000000 -#define SNDK_DRIVE_CAP_C3_LOG_PAGE 0x0000000002000000 -#define SNDK_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION 0x0000000004000000 -#define SNDK_DRIVE_CAP_CLOUD_LOG_PAGE 0x0000000008000000 -#define SNDK_DRIVE_CAP_DUI_DATA 0x0000000010000000 -#define SNDK_DRIVE_CAP_VUC_LOG 0x0000000020000000 -#define SNDK_DRIVE_CAP_DUI 0x0000000040000000 -#define SNDK_DRIVE_CAP_OCP_C1_LOG_PAGE 0x0000000080000000 -#define SNDK_DRIVE_CAP_OCP_C4_LOG_PAGE 0x0000000100000000 -#define SNDK_DRIVE_CAP_OCP_C5_LOG_PAGE 0x0000000200000000 -#define SNDK_DRIVE_CAP_DEVICE_WAF 0x0000000400000000 -#define SNDK_DRIVE_CAP_SET_LATENCY_MONITOR 0x0000000800000000 +/* Shared flag space with WDC plugin */ +#define SNDK_DRIVE_CAP_RESERVED1 0x0000000000000001 +#define SNDK_DRIVE_CAP_INTERNAL_LOG 0x0000000000000002 +#define SNDK_DRIVE_CAP_C1_LOG_PAGE 0x0000000000000004 +#define SNDK_DRIVE_CAP_CA_LOG_PAGE 0x0000000000000008 +#define SNDK_DRIVE_CAP_D0_LOG_PAGE 0x0000000000000010 +#define SNDK_DRIVE_CAP_DRIVE_STATUS 0x0000000000000020 +#define SNDK_DRIVE_CAP_CLEAR_ASSERT 0x0000000000000040 +#define SNDK_DRIVE_CAP_CLEAR_PCIE 0x0000000000000080 +#define SNDK_DRIVE_CAP_RESIZE 0x0000000000000100 +#define SNDK_DRIVE_CAP_NAND_STATS 0x0000000000000200 +#define SNDK_DRIVE_CAP_RESERVED2 0x0000000000000400 +#define SNDK_DRIVE_CAP_RESERVED3 0x0000000000000800 +#define SNDK_DRIVE_CAP_RESERVED4 0x0000000000001000 +#define SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY 0x0000000000002000 +#define SNDK_DRIVE_CAP_CLEAR_FW_ACT_HISTORY 0x0000000000004000 +#define SNDK_DRIVE_CAP_DISABLE_CTLR_TELE_LOG 0x0000000000008000 +#define SNDK_DRIVE_CAP_REASON_ID 0x0000000000010000 +#define SNDK_DRIVE_CAP_LOG_PAGE_DIR 0x0000000000020000 +#define SNDK_DRIVE_CAP_NS_RESIZE 0x0000000000040000 +#define SNDK_DRIVE_CAP_INFO 0x0000000000080000 +#define SNDK_DRIVE_CAP_C0_LOG_PAGE 0x0000000000100000 +#define SNDK_DRIVE_CAP_TEMP_STATS 0x0000000000200000 +#define SNDK_DRIVE_CAP_VUC_CLEAR_PCIE 0x0000000000400000 +#define SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE 0x0000000000800000 +#define SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY_C2 0x0000000001000000 +#define SNDK_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY 0x0000000002000000 +#define SNDK_DRIVE_CAP_CLOUD_SSD_VERSION 0x0000000004000000 +#define SNDK_DRIVE_CAP_PCIE_STATS 0x0000000008000000 +#define SNDK_DRIVE_CAP_HW_REV_LOG_PAGE 0x0000000010000000 +#define SNDK_DRIVE_CAP_C3_LOG_PAGE 0x0000000020000000 +#define SNDK_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION 0x0000000040000000 +#define SNDK_DRIVE_CAP_CLOUD_LOG_PAGE 0x0000000080000000 +#define SNDK_DRIVE_CAP_RESERVED5 0x0000000100000000 +#define SNDK_DRIVE_CAP_DUI_DATA 0x0000000200000000 +#define SNDK_DRIVE_CAP_VUC_LOG 0x0000000400000000 +#define SNDK_DRIVE_CAP_DUI 0x0000000800000000 +#define SNDK_DRIVE_CAP_RESERVED6 0x0000001000000000 +#define SNDK_DRIVE_CAP_OCP_C1_LOG_PAGE 0x0000002000000000 +#define SNDK_DRIVE_CAP_OCP_C4_LOG_PAGE 0x0000004000000000 +#define SNDK_DRIVE_CAP_OCP_C5_LOG_PAGE 0x0000008000000000 +#define SNDK_DRIVE_CAP_DEVICE_WAF 0x0000010000000000 +#define SNDK_DRIVE_CAP_SET_LATENCY_MONITOR 0x0000020000000000 +/* Any new capability flags should be added to the WDC plugin */ #define SNDK_DRIVE_CAP_SMART_LOG_MASK (SNDK_DRIVE_CAP_C0_LOG_PAGE | \ SNDK_DRIVE_CAP_C1_LOG_PAGE | \ diff --git a/plugins/wdc/wdc-nvme-cmds.h b/plugins/wdc/wdc-nvme-cmds.h index 3f60d6dde8..2dea9b06c2 100644 --- a/plugins/wdc/wdc-nvme-cmds.h +++ b/plugins/wdc/wdc-nvme-cmds.h @@ -123,3 +123,5 @@ bool run_wdc_nvme_check_supported_log_page(nvme_root_t r, __u32 run_wdc_get_fw_cust_id(nvme_root_t r, struct nvme_dev *dev); + +__u64 run_wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev); diff --git a/plugins/wdc/wdc-nvme.c b/plugins/wdc/wdc-nvme.c index a6c1572ecc..8eb1b71fc7 100644 --- a/plugins/wdc/wdc-nvme.c +++ b/plugins/wdc/wdc-nvme.c @@ -146,6 +146,7 @@ #define WDC_NVME_SN5100S_DEV_ID_2 0x5062 #define WDC_NVME_SN5100S_DEV_ID_3 0x5063 +/* Shared flag space with SNDK plugin, should be kept in sync */ #define WDC_DRIVE_CAP_CAP_DIAG 0x0000000000000001 #define WDC_DRIVE_CAP_INTERNAL_LOG 0x0000000000000002 #define WDC_DRIVE_CAP_C1_LOG_PAGE 0x0000000000000004 @@ -178,7 +179,6 @@ #define WDC_DRIVE_CAP_C3_LOG_PAGE 0x0000000020000000 #define WDC_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION 0x0000000040000000 #define WDC_DRIVE_CAP_CLOUD_LOG_PAGE 0x0000000080000000 - #define WDC_DRIVE_CAP_DRIVE_ESSENTIALS 0x0000000100000000 #define WDC_DRIVE_CAP_DUI_DATA 0x0000000200000000 #define WDC_SN730B_CAP_VUC_LOG 0x0000000400000000 @@ -189,6 +189,7 @@ #define WDC_DRIVE_CAP_OCP_C5_LOG_PAGE 0x0000008000000000 #define WDC_DRIVE_CAP_DEVICE_WAF 0x0000010000000000 #define WDC_DRIVE_CAP_SET_LATENCY_MONITOR 0x0000020000000000 +/* Any new capability flags should be added to the SNDK plugin */ #define WDC_DRIVE_CAP_SMART_LOG_MASK (WDC_DRIVE_CAP_C0_LOG_PAGE | \ WDC_DRIVE_CAP_C1_LOG_PAGE | \ @@ -12940,3 +12941,8 @@ bool run_wdc_nvme_check_supported_log_page(nvme_root_t r, log_id, 0); } + +__u64 run_wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev) +{ + return wdc_get_drive_capabilities(r, dev); +}