[Solved]Nvme error: Duplicate cntlid 0 with nvme0, rejecting

Kernel not recognizing your hardware? Problems with power management or PCMCIA? What hardware is compatible with Gentoo? See here. (Only for kernels supported by Gentoo.)
Post Reply
ds123
n00b
n00b
Posts: 66
Joined: Mon Mar 22, 2004 10:36 pm

[Solved]Nvme error: Duplicate cntlid 0 with nvme0, rejecting

Post by ds123 »

I have a new laptop: Asus Strix Scar 17 se.

It has two nvme drives (Micron_3400_MTFDKBA1T0TFH). When purchased, with Windows, the two drives were mirrored (raid 0). Since then, trying to install linux, only one drive can be seen at a time.

Here is an excerpt from dmesg using the livecd:

Code: Select all

livecd / # dmesg |grep nvme
[    1.746864] nvme nvme0: pci function 0000:6c:00.0
[    1.746952] nvme nvme1: pci function 0000:6e:00.0
[    1.783143] nvme nvme1: Duplicate cntlid 0 with nvme0, rejecting
[    1.783150] nvme nvme1: Removing after probe failure status: -22
[    1.802536] nvme nvme0: 24/0/0 default/read/poll queues
[    1.807437]  nvme0n1: p1 p2 p3
See how the first two lines show the pci connections 6c and 6e. Then it declares that there is a duplicate cntlid and so leaves only one drive in use. In fact, it could be either drive that is rejected.

Here is the relevant info from lspci -k:

Code: Select all

6c:00.0 Non-Volatile memory controller: Micron Technology Inc Device 5407
        Subsystem: Micron Technology Inc Device 0100
        Kernel driver in use: nvme
6e:00.0 Non-Volatile memory controller: Micron Technology Inc Device 5407
        Subsystem: Micron Technology Inc Device 0100
The live cd uses the kernel linux-5.15.52-gentoo. I have also built the kernel (same version) as part of the install process (hoping to blunder through), but have obtained similar results. The nvme module is loaded separately in the live cd, I have also built the nvme driver into module into the kernel with the same results. The bios/uefi shows both drives listed.

Has anyone else gotten this problem? And how did you solve it? Or, do you have any suggestions to point me in a direction?

Thanks very much.
Last edited by ds123 on Mon Aug 08, 2022 6:15 pm, edited 1 time in total.
Mistwolf
Apprentice
Apprentice
Posts: 189
Joined: Wed Mar 07, 2007 2:06 am
Location: Edmonton, AB

Post by Mistwolf »

If you do a google search, this issue has been around since 2019 (search for "nvme nvme1: Duplicate cntlid 0 with nvme0, rejecting").

Appears that the drives have identical serial number field (cntlID) in the SCSI vendor code of the drive, ie: drives don't conform to SCSI standards, which the Linux kernel uses for SATA/m.2 ports.

See if there is FW upgrade for those drives and/or a bios upgrade.
ds123
n00b
n00b
Posts: 66
Joined: Mon Mar 22, 2004 10:36 pm

Post by ds123 »

Since I was unable to find fw updates that addressed the problem, I modified the kernel with a quirk.

Bear in mind that my experience with patches is limited, here is what I have.

Code: Select all

--- drivers/nvme/host/pci.c     2022-08-01 13:18:49.806650206 -0700
+++ ../new_pci.c        2022-08-01 13:12:31.749992593 -0700
@@ -3346,6 +3346,10 @@
        { PCI_DEVICE(0x1cc1, 0x8201),   /* ADATA SX8200PNP 512GB */
                .driver_data = NVME_QUIRK_NO_DEEPEST_PS |
                                NVME_QUIRK_IGNORE_DEV_SUBNQN, },
+       /* I did this */
+        { PCI_DEVICE(0x1344, 0x5407), /* Micron Technology Inc NVMe SSD */
+                .driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN },
+
        { PCI_DEVICE(0x1c5c, 0x1504),   /* SK Hynix PC400 */
                .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, },
        { PCI_DEVICE(0x15b7, 0x2001),   /*  Sandisk Skyhawk */
With this change, both drives are visible and available, I regard this problem as solved for now.

Another issue with the laptop that proved difficult for me was properly enabling the touchpad. While the Gentoo Live cd correctly enables the touchpad, when I attempted to build the kernel in my usual way, I was unable to get the right combination of factors with the nvidia-drivers, etc. What did work for me was to use the live cd config as a basis for my new kernel. Then, I converted the nvme modules to built-in, and changed the framebuffer parameters. And so I was able to get a working system. All that remains is to pare down the unnecessary modules for unrelated hardware.

Hope this helps someone's struggle down the line.
User avatar
Goverp
Advocate
Advocate
Posts: 2401
Joined: Wed Mar 07, 2007 6:41 pm

Post by Goverp »

Sounds worth reporting upstream to the kernel maintainers. Look in the /usr/src/linux/MAINTAINERS file for a suitable recipient.
Greybeard
Post Reply