Skip to content

Commit e531485

Browse files
committed
Merge tag 'nvme-5.19-2022-06-23' of git://git.infradead.org/nvme into block-5.19
Pull NVMe fixes from Christoph: "nvme fixes for Linux 5.19 - fix the mixed up CRIMS/CRWMS constants (Joel Granados) - add another broken identifier quirk (Leo Savernik) - fix up a quirk because Samsung reuses PCI IDs over different products (Christoph Hellwig)" * tag 'nvme-5.19-2022-06-23' of git://git.infradead.org/nvme: nvme: move the Samsung X5 quirk entry to the core quirks nvme: fix the CRIMS and CRWMS definitions to match the spec nvme: add a bogus subsystem NQN quirk for Micron MTFDKBA2T0TFH
2 parents ca2a334 + e648783 commit e531485

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

drivers/nvme/host/core.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2546,6 +2546,20 @@ static const struct nvme_core_quirk_entry core_quirks[] = {
25462546
.vid = 0x1e0f,
25472547
.mn = "KCD6XVUL6T40",
25482548
.quirks = NVME_QUIRK_NO_APST,
2549+
},
2550+
{
2551+
/*
2552+
* The external Samsung X5 SSD fails initialization without a
2553+
* delay before checking if it is ready and has a whole set of
2554+
* other problems. To make this even more interesting, it
2555+
* shares the PCI ID with internal Samsung 970 Evo Plus that
2556+
* does not need or want these quirks.
2557+
*/
2558+
.vid = 0x144d,
2559+
.mn = "Samsung Portable SSD X5",
2560+
.quirks = NVME_QUIRK_DELAY_BEFORE_CHK_RDY |
2561+
NVME_QUIRK_NO_DEEPEST_PS |
2562+
NVME_QUIRK_IGNORE_DEV_SUBNQN,
25492563
}
25502564
};
25512565

drivers/nvme/host/pci.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3474,6 +3474,8 @@ static const struct pci_device_id nvme_id_table[] = {
34743474
{ PCI_DEVICE(0x1cc1, 0x8201), /* ADATA SX8200PNP 512GB */
34753475
.driver_data = NVME_QUIRK_NO_DEEPEST_PS |
34763476
NVME_QUIRK_IGNORE_DEV_SUBNQN, },
3477+
{ PCI_DEVICE(0x1344, 0x5407), /* Micron Technology Inc NVMe SSD */
3478+
.driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN },
34773479
{ PCI_DEVICE(0x1c5c, 0x1504), /* SK Hynix PC400 */
34783480
.driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, },
34793481
{ PCI_DEVICE(0x1c5c, 0x174a), /* SK Hynix P31 SSD */
@@ -3524,10 +3526,6 @@ static const struct pci_device_id nvme_id_table[] = {
35243526
NVME_QUIRK_128_BYTES_SQES |
35253527
NVME_QUIRK_SHARED_TAGS |
35263528
NVME_QUIRK_SKIP_CID_GEN },
3527-
{ PCI_DEVICE(0x144d, 0xa808), /* Samsung X5 */
3528-
.driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY|
3529-
NVME_QUIRK_NO_DEEPEST_PS |
3530-
NVME_QUIRK_IGNORE_DEV_SUBNQN, },
35313529
{ PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_EXPRESS, 0xffffff) },
35323530
{ 0, }
35333531
};

include/linux/nvme.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,8 @@ enum {
233233
};
234234

235235
enum {
236-
NVME_CAP_CRMS_CRIMS = 1ULL << 59,
237-
NVME_CAP_CRMS_CRWMS = 1ULL << 60,
236+
NVME_CAP_CRMS_CRWMS = 1ULL << 59,
237+
NVME_CAP_CRMS_CRIMS = 1ULL << 60,
238238
};
239239

240240
struct nvme_id_power_state {

0 commit comments

Comments
 (0)