@@ -1334,6 +1334,14 @@ static void nvme_warn_reset(struct nvme_dev *dev, u32 csts)
1334
1334
dev_warn (dev -> ctrl .device ,
1335
1335
"controller is down; will reset: CSTS=0x%x, PCI_STATUS read failed (%d)\n" ,
1336
1336
csts , result );
1337
+
1338
+ if (csts != ~0 )
1339
+ return ;
1340
+
1341
+ dev_warn (dev -> ctrl .device ,
1342
+ "Does your device have a faulty power saving mode enabled?\n" );
1343
+ dev_warn (dev -> ctrl .device ,
1344
+ "Try \"nvme_core.default_ps_max_latency_us=0 pcie_aspm=off\" and report a bug\n" );
1337
1345
}
1338
1346
1339
1347
static enum blk_eh_timer_return nvme_timeout (struct request * req , bool reserved )
@@ -2976,6 +2984,21 @@ static int nvme_pci_get_address(struct nvme_ctrl *ctrl, char *buf, int size)
2976
2984
return snprintf (buf , size , "%s\n" , dev_name (& pdev -> dev ));
2977
2985
}
2978
2986
2987
+
2988
+ static void nvme_pci_print_device_info (struct nvme_ctrl * ctrl )
2989
+ {
2990
+ struct pci_dev * pdev = to_pci_dev (to_nvme_dev (ctrl )-> dev );
2991
+ struct nvme_subsystem * subsys = ctrl -> subsys ;
2992
+
2993
+ dev_err (ctrl -> device ,
2994
+ "VID:DID %04x:%04x model:%.*s firmware:%.*s\n" ,
2995
+ pdev -> vendor , pdev -> device ,
2996
+ nvme_strlen (subsys -> model , sizeof (subsys -> model )),
2997
+ subsys -> model , nvme_strlen (subsys -> firmware_rev ,
2998
+ sizeof (subsys -> firmware_rev )),
2999
+ subsys -> firmware_rev );
3000
+ }
3001
+
2979
3002
static const struct nvme_ctrl_ops nvme_pci_ctrl_ops = {
2980
3003
.name = "pcie" ,
2981
3004
.module = THIS_MODULE ,
@@ -2987,6 +3010,7 @@ static const struct nvme_ctrl_ops nvme_pci_ctrl_ops = {
2987
3010
.free_ctrl = nvme_pci_free_ctrl ,
2988
3011
.submit_async_event = nvme_pci_submit_async_event ,
2989
3012
.get_address = nvme_pci_get_address ,
3013
+ .print_device_info = nvme_pci_print_device_info ,
2990
3014
};
2991
3015
2992
3016
static int nvme_dev_map (struct nvme_dev * dev )
@@ -3421,7 +3445,8 @@ static const struct pci_device_id nvme_id_table[] = {
3421
3445
{ PCI_VDEVICE (REDHAT , 0x0010 ), /* Qemu emulated controller */
3422
3446
.driver_data = NVME_QUIRK_BOGUS_NID , },
3423
3447
{ PCI_DEVICE (0x126f , 0x2263 ), /* Silicon Motion unidentified */
3424
- .driver_data = NVME_QUIRK_NO_NS_DESC_LIST , },
3448
+ .driver_data = NVME_QUIRK_NO_NS_DESC_LIST |
3449
+ NVME_QUIRK_BOGUS_NID , },
3425
3450
{ PCI_DEVICE (0x1bb1 , 0x0100 ), /* Seagate Nytro Flash Storage */
3426
3451
.driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY |
3427
3452
NVME_QUIRK_NO_NS_DESC_LIST , },
@@ -3437,6 +3462,8 @@ static const struct pci_device_id nvme_id_table[] = {
3437
3462
.driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY |
3438
3463
NVME_QUIRK_DISABLE_WRITE_ZEROES |
3439
3464
NVME_QUIRK_IGNORE_DEV_SUBNQN , },
3465
+ { PCI_DEVICE (0x1987 , 0x5012 ), /* Phison E12 */
3466
+ .driver_data = NVME_QUIRK_BOGUS_NID , },
3440
3467
{ PCI_DEVICE (0x1987 , 0x5016 ), /* Phison E16 */
3441
3468
.driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN , },
3442
3469
{ PCI_DEVICE (0x1b4b , 0x1092 ), /* Lexar 256 GB SSD */
@@ -3449,10 +3476,20 @@ static const struct pci_device_id nvme_id_table[] = {
3449
3476
NVME_QUIRK_IGNORE_DEV_SUBNQN , },
3450
3477
{ PCI_DEVICE (0x1c5c , 0x1504 ), /* SK Hynix PC400 */
3451
3478
.driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES , },
3479
+ { PCI_DEVICE (0x1c5c , 0x174a ), /* SK Hynix P31 SSD */
3480
+ .driver_data = NVME_QUIRK_BOGUS_NID , },
3452
3481
{ PCI_DEVICE (0x15b7 , 0x2001 ), /* Sandisk Skyhawk */
3453
3482
.driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES , },
3454
3483
{ PCI_DEVICE (0x1d97 , 0x2263 ), /* SPCC */
3455
3484
.driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES , },
3485
+ { PCI_DEVICE (0x144d , 0xa80b ), /* Samsung PM9B1 256G and 512G */
3486
+ .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES , },
3487
+ { PCI_DEVICE (0x144d , 0xa809 ), /* Samsung MZALQ256HBJD 256G */
3488
+ .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES , },
3489
+ { PCI_DEVICE (0x1cc4 , 0x6303 ), /* UMIS RPJTJ512MGE1QDY 512G */
3490
+ .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES , },
3491
+ { PCI_DEVICE (0x1cc4 , 0x6302 ), /* UMIS RPJTJ256MGE1QDY 256G */
3492
+ .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES , },
3456
3493
{ PCI_DEVICE (0x2646 , 0x2262 ), /* KINGSTON SKC2000 NVMe SSD */
3457
3494
.driver_data = NVME_QUIRK_NO_DEEPEST_PS , },
3458
3495
{ PCI_DEVICE (0x2646 , 0x2263 ), /* KINGSTON A2000 NVMe SSD */
@@ -3463,6 +3500,10 @@ static const struct pci_device_id nvme_id_table[] = {
3463
3500
.driver_data = NVME_QUIRK_BOGUS_NID , },
3464
3501
{ PCI_DEVICE (0x1e4B , 0x1202 ), /* MAXIO MAP1202 */
3465
3502
.driver_data = NVME_QUIRK_BOGUS_NID , },
3503
+ { PCI_DEVICE (0x1cc1 , 0x5350 ), /* ADATA XPG GAMMIX S50 */
3504
+ .driver_data = NVME_QUIRK_BOGUS_NID , },
3505
+ { PCI_DEVICE (0x1e49 , 0x0041 ), /* ZHITAI TiPro7000 NVMe SSD */
3506
+ .driver_data = NVME_QUIRK_NO_DEEPEST_PS , },
3466
3507
{ PCI_DEVICE (PCI_VENDOR_ID_AMAZON , 0x0061 ),
3467
3508
.driver_data = NVME_QUIRK_DMA_ADDRESS_BITS_48 , },
3468
3509
{ PCI_DEVICE (PCI_VENDOR_ID_AMAZON , 0x0065 ),
0 commit comments