1
0
Fork 0

Adding upstream version 2.11.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-16 12:28:14 +01:00
parent 6f96c7c854
commit 65508f0a28
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
533 changed files with 9033 additions and 4835 deletions

View file

@ -79,6 +79,7 @@
#define WDC_NVME_SN650_DEV_ID_3 0x2720
#define WDC_NVME_SN650_DEV_ID_4 0x2721
#define WDC_NVME_SN655_DEV_ID 0x2722
#define WDC_NVME_SN655_DEV_ID_1 0x2723
#define WDC_NVME_SN860_DEV_ID 0x2730
#define WDC_NVME_SN660_DEV_ID 0x2704
#define WDC_NVME_SN560_DEV_ID_1 0x2712
@ -86,6 +87,8 @@
#define WDC_NVME_SN560_DEV_ID_3 0x2714
#define WDC_NVME_SN861_DEV_ID 0x2750
#define WDC_NVME_SN861_DEV_ID_1 0x2751
#define WDC_NVME_SN861_DEV_ID_2 0x2752
#define WDC_NVME_SNTMP_DEV_ID 0x2761
/* This id's are no longer supported, delete ?? */
#define WDC_NVME_SN550_DEV_ID 0x2708
@ -138,6 +141,10 @@
#define WDC_NVME_SN810_DEV_ID 0x5011
#define WDC_NVME_SN820CL_DEV_ID 0x5037
#define WDC_NVME_SN5100S_DEV_ID_1 0x5061
#define WDC_NVME_SN5100S_DEV_ID_2 0x5062
#define WDC_NVME_SN5100S_DEV_ID_3 0x5063
#define WDC_DRIVE_CAP_CAP_DIAG 0x0000000000000001
#define WDC_DRIVE_CAP_INTERNAL_LOG 0x0000000000000002
#define WDC_DRIVE_CAP_C1_LOG_PAGE 0x0000000000000004
@ -1530,7 +1537,8 @@ static int wdc_get_vendor_id(struct nvme_dev *dev, uint32_t *vendor_id)
static bool wdc_is_sn861(__u32 device_id)
{
if ((device_id == WDC_NVME_SN861_DEV_ID) ||
(device_id == WDC_NVME_SN861_DEV_ID_1))
(device_id == WDC_NVME_SN861_DEV_ID_1) ||
(device_id == WDC_NVME_SN861_DEV_ID_2))
return true;
else
return false;
@ -1822,6 +1830,7 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
case WDC_NVME_SN650_DEV_ID_3:
case WDC_NVME_SN650_DEV_ID_4:
case WDC_NVME_SN655_DEV_ID:
case WDC_NVME_SN655_DEV_ID_1:
case WDC_NVME_SN550_DEV_ID:
/* verify the 0xC0 log page is supported */
if (wdc_nvme_check_supported_log_page(r, dev,
@ -1872,6 +1881,8 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
case WDC_NVME_SN861_DEV_ID:
case WDC_NVME_SN861_DEV_ID_1:
case WDC_NVME_SN861_DEV_ID_2:
case WDC_NVME_SNTMP_DEV_ID:
capabilities |= (WDC_DRIVE_CAP_C0_LOG_PAGE |
WDC_DRIVE_CAP_C3_LOG_PAGE |
WDC_DRIVE_CAP_CA_LOG_PAGE |
@ -1970,6 +1981,12 @@ static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
fallthrough;
case WDC_NVME_SN8000S_DEV_ID:
fallthrough;
case WDC_NVME_SN5100S_DEV_ID_1:
fallthrough;
case WDC_NVME_SN5100S_DEV_ID_2:
fallthrough;
case WDC_NVME_SN5100S_DEV_ID_3:
fallthrough;
case WDC_NVME_SN740_DEV_ID:
case WDC_NVME_SN740_DEV_ID_1:
case WDC_NVME_SN740_DEV_ID_2:
@ -2357,28 +2374,24 @@ end:
static bool get_dev_mgment_cbs_data(nvme_root_t r, struct nvme_dev *dev,
__u8 log_id, void **cbs_data)
{
int ret = -1;
bool found = false;
__u8 uuid_ix = 0;
__u8 lid = 0;
*cbs_data = NULL;
__u32 device_id, read_vendor_id;
__u32 device_id = 0, vendor_id = 0;
bool uuid_present = false;
int index = 0, uuid_index = 0;
struct nvme_id_uuid_list uuid_list;
ret = wdc_get_pci_ids(r, dev, &device_id, &read_vendor_id);
if (ret == 0) {
if (device_id == WDC_NVME_ZN350_DEV_ID || device_id == WDC_NVME_ZN350_DEV_ID_1) {
lid = WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_ID_C8;
uuid_ix = 0;
} else {
lid = WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_ID;
}
} else {
fprintf(stderr, "ERROR: WDC: get pci ids: %d\n", ret);
return false;
}
/* The wdc_get_pci_ids function could fail when drives are connected
* via a PCIe switch. Therefore, the return code is intentionally
* being ignored. The device_id and vendor_id variables have been
* initialized to 0 so the code can continue on without issue for
* both cases: wdc_get_pci_ids successful or failed.
*/
wdc_get_pci_ids(r, dev, &device_id, &vendor_id);
lid = WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_ID;
typedef struct nvme_id_uuid_list_entry *uuid_list_entry;
@ -6909,6 +6922,7 @@ static int wdc_get_c0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format
case WDC_NVME_SN650_DEV_ID_3:
case WDC_NVME_SN650_DEV_ID_4:
case WDC_NVME_SN655_DEV_ID:
case WDC_NVME_SN655_DEV_ID_1:
if (uuid_index == 0) {
ret = nvme_get_print_ocp_cloud_smart_log(dev,
uuid_index,
@ -10832,13 +10846,13 @@ static void wdc_print_nand_stats_json(__u16 version, void *data)
le32_to_cpu(nand_stats_v3->ssd_correction_counts[12]));
json_object_add_value_uint(root, "System data % life-used",
nand_stats_v3->percent_life_used);
json_object_add_value_uint64(root, "User Data Erase Counts - SLC Min",
le64_to_cpu(nand_stats_v3->user_data_erase_counts[0]));
json_object_add_value_uint64(root, "User Data Erase Counts - SLC Max",
le64_to_cpu(nand_stats_v3->user_data_erase_counts[1]));
json_object_add_value_uint64(root, "User Data Erase Counts - TLC Min",
le64_to_cpu(nand_stats_v3->user_data_erase_counts[2]));
le64_to_cpu(nand_stats_v3->user_data_erase_counts[0]));
json_object_add_value_uint64(root, "User Data Erase Counts - TLC Max",
le64_to_cpu(nand_stats_v3->user_data_erase_counts[1]));
json_object_add_value_uint64(root, "User Data Erase Counts - SLC Min",
le64_to_cpu(nand_stats_v3->user_data_erase_counts[2]));
json_object_add_value_uint64(root, "User Data Erase Counts - SLC Max",
le64_to_cpu(nand_stats_v3->user_data_erase_counts[3]));
temp_ptr = (__u64 *)nand_stats_v3->program_fail_count;
temp_norm = (__u16)(*temp_ptr & 0x000000000000FFFF);
@ -11305,12 +11319,14 @@ static int wdc_vs_drive_info(int argc, char **argv,
case WDC_NVME_SN650_DEV_ID_3:
case WDC_NVME_SN650_DEV_ID_4:
case WDC_NVME_SN655_DEV_ID:
case WDC_NVME_SN655_DEV_ID_1:
case WDC_NVME_SN560_DEV_ID_1:
case WDC_NVME_SN560_DEV_ID_2:
case WDC_NVME_SN560_DEV_ID_3:
case WDC_NVME_SN550_DEV_ID:
case WDC_NVME_ZN350_DEV_ID:
case WDC_NVME_ZN350_DEV_ID_1:
case WDC_NVME_SNTMP_DEV_ID:
ret = wdc_do_drive_info(dev, &result);
if (!ret) {
@ -11429,6 +11445,7 @@ static int wdc_vs_drive_info(int argc, char **argv,
break;
case WDC_NVME_SN861_DEV_ID:
case WDC_NVME_SN861_DEV_ID_1:
case WDC_NVME_SN861_DEV_ID_2:
data_len = sizeof(info);
num_dwords = data_len / 4;
if (data_len % 4 != 0)