From b31f133a2339708cb11c8c0bcd0598c70ad775c1 Mon Sep 17 00:00:00 2001 From: jeff-lien-sndk Date: Wed, 5 Nov 2025 15:13:59 -0600 Subject: [PATCH] plugins/sandisk: Use Correct PCI Vendor ID for SNESSD1 Drives The current Sandisk plugin code is using the Western Digital PCI vendor id for the SNESSD1 drives. It should be using the Sandisk Vendor ID (0x15B7) instead. The wdc plugin code also needs to be updated to recognize this new Sandisk device. Signed-off-by: jeff-lien-sndk Reviewed-by: brandon-paupore-sndk --- plugins/sandisk/sandisk-nvme.h | 2 +- plugins/sandisk/sandisk-utils.c | 36 ++++++++++++++++----------------- plugins/wdc/wdc-nvme.c | 33 +++++++++++++++++++++++++++++- 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/plugins/sandisk/sandisk-nvme.h b/plugins/sandisk/sandisk-nvme.h index 418451cf32..6f8297be9c 100644 --- a/plugins/sandisk/sandisk-nvme.h +++ b/plugins/sandisk/sandisk-nvme.h @@ -5,7 +5,7 @@ #if !defined(SANDISK_NVME) || defined(CMD_HEADER_MULTI_READ) #define SANDISK_NVME -#define SANDISK_PLUGIN_VERSION "3.0.7" +#define SANDISK_PLUGIN_VERSION "3.0.8" #include "cmd.h" PLUGIN(NAME("sndk", "Sandisk vendor specific extensions", SANDISK_PLUGIN_VERSION), diff --git a/plugins/sandisk/sandisk-utils.c b/plugins/sandisk/sandisk-utils.c index 523609dec4..4b8d976cf5 100644 --- a/plugins/sandisk/sandisk-utils.c +++ b/plugins/sandisk/sandisk-utils.c @@ -568,24 +568,6 @@ __u64 sndk_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev) SNDK_DRIVE_CAP_SET_LATENCY_MONITOR); break; - case SNDK_NVME_SNESSD1_DEV_ID_E1L: - case SNDK_NVME_SNESSD1_DEV_ID_E2: - case SNDK_NVME_SNESSD1_DEV_ID_E3S: - case SNDK_NVME_SNESSD1_DEV_ID_E3L: - case SNDK_NVME_SNESSD1_DEV_ID_U2: - 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_UDUI | - SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE | - 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_SN861_DEV_ID_E1S: capabilities |= (SNDK_DRIVE_CAP_C0_LOG_PAGE | SNDK_DRIVE_CAP_C3_LOG_PAGE | @@ -629,6 +611,24 @@ __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_SNESSD1_DEV_ID_E1L: + case SNDK_NVME_SNESSD1_DEV_ID_E2: + case SNDK_NVME_SNESSD1_DEV_ID_E3S: + case SNDK_NVME_SNESSD1_DEV_ID_E3L: + case SNDK_NVME_SNESSD1_DEV_ID_U2: + 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_UDUI | + SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE | + 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_SN7150_DEV_ID_1: case SNDK_NVME_SN7150_DEV_ID_2: case SNDK_NVME_SN7150_DEV_ID_3: diff --git a/plugins/wdc/wdc-nvme.c b/plugins/wdc/wdc-nvme.c index 43bf793bdb..604fe86401 100644 --- a/plugins/wdc/wdc-nvme.c +++ b/plugins/wdc/wdc-nvme.c @@ -92,6 +92,12 @@ #define WDC_NVME_SNTMP_DEV_ID 0x2761 #define WDC_NVME_SNTMP_DEV_ID_1 0x2763 +#define WDC_NVME_SNESSD1_DEV_ID_E1L 0x2765 +#define WDC_NVME_SNESSD1_DEV_ID_E2 0x2766 +#define WDC_NVME_SNESSD1_DEV_ID_E3S 0x2767 +#define WDC_NVME_SNESSD1_DEV_ID_E3L 0x2768 +#define WDC_NVME_SNESSD1_DEV_ID_U2 0x2769 + /* This id's are no longer supported, delete ?? */ #define WDC_NVME_SN550_DEV_ID 0x2708 @@ -190,7 +196,9 @@ #define WDC_DRIVE_CAP_OCP_C5_LOG_PAGE 0x0000008000000000 #define WDC_DRIVE_CAP_DEVICE_WAF 0x0000010000000000 #define WDC_DRIVE_CAP_SET_LATENCY_MONITOR 0x0000020000000000 -#define WDC_DRIVE_CAP_RESERVED1 0x0000040000000000 +#define WDC_DRIVE_CAP_UDUI 0x0000040000000000 +#define WDC_DRIVE_CAP_RESIZE_SN861 0x0000080000000000 + /* Any new capability flags should be added to the SNDK plugin */ #define WDC_DRIVE_CAP_SMART_LOG_MASK (WDC_DRIVE_CAP_C0_LOG_PAGE | \ @@ -1957,6 +1965,24 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev) case WDC_NVME_SNDK_VID: switch (read_device_id) { + case WDC_NVME_SNESSD1_DEV_ID_E1L: + case WDC_NVME_SNESSD1_DEV_ID_E2: + case WDC_NVME_SNESSD1_DEV_ID_E3S: + case WDC_NVME_SNESSD1_DEV_ID_E3L: + case WDC_NVME_SNESSD1_DEV_ID_U2: + capabilities |= (WDC_DRIVE_CAP_C0_LOG_PAGE | + WDC_DRIVE_CAP_C3_LOG_PAGE | + WDC_DRIVE_CAP_CA_LOG_PAGE | + WDC_DRIVE_CAP_OCP_C4_LOG_PAGE | + WDC_DRIVE_CAP_OCP_C5_LOG_PAGE | + WDC_DRIVE_CAP_UDUI | + WDC_DRIVE_CAP_VU_FID_CLEAR_PCIE | + WDC_DRIVE_CAP_CLOUD_SSD_VERSION | + WDC_DRIVE_CAP_LOG_PAGE_DIR | + WDC_DRIVE_CAP_DRIVE_STATUS | + WDC_DRIVE_CAP_SET_LATENCY_MONITOR); + break; + case WDC_NVME_SXSLCL_DEV_ID: capabilities = WDC_DRIVE_CAP_DRIVE_ESSENTIALS; break; @@ -7392,6 +7418,11 @@ static int wdc_get_c0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format case WDC_NVME_SN655_DEV_ID_1: case WDC_NVME_SNTMP_DEV_ID: case WDC_NVME_SNTMP_DEV_ID_1: + case WDC_NVME_SNESSD1_DEV_ID_E1L: + case WDC_NVME_SNESSD1_DEV_ID_E2: + case WDC_NVME_SNESSD1_DEV_ID_E3S: + case WDC_NVME_SNESSD1_DEV_ID_E3L: + case WDC_NVME_SNESSD1_DEV_ID_U2: if (uuid_index == 0) { ret = nvme_get_print_ocp_cloud_smart_log(dev, uuid_index,