Skip to content

Commit 8b1d91d

Browse files
committed
Merge: nvme-pci: add BOGUS_NID quirk for Samsung PM1733
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/6843 # Merge Request Required Information ## Summary of Changes nvme-pci: add BOGUS_NID quirk for Samsung PM1733 JIRA: https://issues.redhat.com/browse/RHEL-89350 Upstream Status: RHEL-only Customers in the field are encountering issues with some firmware versions of the Samsung PM1733 NVMe solid state drive, where a non-zero value is present in the EUI64 identifier of a namespace, but is only unique to the controller. The NGUID value is non-zero, and unique identifiers for namespaces created by this drive are unique; only the common EUI64 between multiple namespaces create a problem. This is not an issue if there is only one namespace attached to the device, but upstream commit e2724cb added a stricter check for identifiers, which results in the inability to attach namespaces beyond the first attached namespace. Signed-off-by: Bryan Gurney <[email protected]> ## Approved Development Ticket(s) All submissions to CentOS Stream must reference a ticket in [Red Hat Jira](https://issues.redhat.com/). <details><summary>Click for formatting instructions</summary> Please follow the CentOS Stream [contribution documentation](https://docs.centos.org/en-US/stream-contrib/quickstart/) for how to file this ticket and have it approved. List tickets each on their own line of this description using the format "Resolves: RHEL-76229", "Related: RHEL-76229" or "Reverts: RHEL-76229", as appropriate. </details> Approved-by: John Meneghini <[email protected]> Approved-by: Maurizio Lombardi <[email protected]> Approved-by: Ewan D. Milne <[email protected]> Approved-by: CKI KWF Bot <[email protected]> Merged-by: Augusto Caringi <[email protected]>
2 parents c4b452c + 236d5ab commit 8b1d91d

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

drivers/nvme/host/core.c

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3526,14 +3526,26 @@ static int nvme_subsys_check_duplicate_ids(struct nvme_subsystem *subsys,
35263526
lockdep_assert_held(&subsys->lock);
35273527

35283528
list_for_each_entry(h, &subsys->nsheads, entry) {
3529-
if (has_uuid && uuid_equal(&ids->uuid, &h->ids.uuid))
3529+
if (has_uuid && uuid_equal(&ids->uuid, &h->ids.uuid)) {
3530+
dev_warn(&subsys->dev,
3531+
"%s: firmware bug: non-unique uuid found\n",
3532+
__func__);
35303533
return -EINVAL;
3534+
}
35313535
if (has_nguid &&
3532-
memcmp(&ids->nguid, &h->ids.nguid, sizeof(ids->nguid)) == 0)
3536+
memcmp(&ids->nguid, &h->ids.nguid, sizeof(ids->nguid)) == 0) {
3537+
dev_warn(&subsys->dev,
3538+
"%s: firmware bug: non-unique nguid found\n",
3539+
__func__);
35333540
return -EINVAL;
3541+
}
35343542
if (has_eui64 &&
3535-
memcmp(&ids->eui64, &h->ids.eui64, sizeof(ids->eui64)) == 0)
3543+
memcmp(&ids->eui64, &h->ids.eui64, sizeof(ids->eui64)) == 0) {
3544+
dev_warn(&subsys->dev,
3545+
"%s: firmware bug: non-unique eui64 found\n",
3546+
__func__);
35363547
return -EINVAL;
3548+
}
35373549
}
35383550

35393551
return 0;

drivers/nvme/host/pci.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3466,6 +3466,8 @@ static const struct pci_device_id nvme_id_table[] = {
34663466
.driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY |
34673467
NVME_QUIRK_DISABLE_WRITE_ZEROES|
34683468
NVME_QUIRK_IGNORE_DEV_SUBNQN, },
3469+
{ PCI_DEVICE(0x144d, 0xa824), /* Samsung PM1733 */
3470+
.driver_data = NVME_QUIRK_BOGUS_NID, },
34693471
{ PCI_DEVICE(0x15b7, 0x5008), /* Sandisk SN530 */
34703472
.driver_data = NVME_QUIRK_BROKEN_MSI },
34713473
{ PCI_DEVICE(0x1987, 0x5012), /* Phison E12 */

0 commit comments

Comments
 (0)