Bug 205645 - Only one of two nvme devices started
Summary: Only one of two nvme devices started
Status: NEW
Alias: None
Product: IO/Storage
Classification: Unclassified
Component: Other (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: io_other
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-11-24 13:55 UTC by Gedalya
Modified: 2019-12-26 11:31 UTC (History)
1 user (show)

See Also:
Kernel Version: 5.3.9
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Gedalya 2019-11-24 13:55:35 UTC
Hello,

With two identical NVMe M.2 devices, I get the following:

[    1.069839] nvme nvme0: pci function 0000:02:00.0
[    1.069876] nvme nvme1: pci function 0000:05:00.0
[    1.285972] nvme nvme0: missing or invalid SUBNQN field.
[    1.285994] nvme nvme1: missing or invalid SUBNQN field.
[    1.286046] nvme nvme1: Duplicate cntlid 1 with nvme0, rejecting
[    1.286112] nvme nvme1: Removing after probe failure status: -22
[    1.296942] nvme nvme0: allocated 64 MiB host memory buffer.
[    1.306422] nvme nvme0: 4/0/0 default/read/poll queues
[    1.312608] nvme nvme0: nvme_report_ns_ids: Identify Descriptors failed
[    1.314470] nvme nvme0: nvme_report_ns_ids: Identify Descriptors failed

Commenting out as follows, in drivers/nvme/host/core.c

		/* if (tmp->cntlid == ctrl->cntlid) {
			dev_err(ctrl->device,
				"Duplicate cntlid %u with %s, rejecting\n",
				ctrl->cntlid, dev_name(tmp->device));
			return false;
		} */

I get:

[19223.240315] nvme nvme0: pci function 0000:02:00.0
[19223.240387] nvme nvme1: pci function 0000:05:00.0
[19223.349355] nvme nvme1: missing or invalid SUBNQN field.
[19223.357239] nvme nvme1: allocated 64 MiB host memory buffer.
[19223.367854] nvme nvme1: 4/0/0 default/read/poll queues
[19223.374272] nvme nvme1: nvme_report_ns_ids: Identify Descriptors failed
[19223.376134] nvme nvme1: nvme_report_ns_ids: Identify Descriptors failed
[19223.377516]  nvme0n1: p1
[19223.457331] nvme nvme0: missing or invalid SUBNQN field.
[19223.457343] nvme nvme0: Subsystem does not support multiple controllers
[19223.457365] nvme nvme0: Removing after probe failure status: -22

Or, booting linux 4.19.67-2+deb10u2:

[    1.308671] nvme nvme0: pci function 0000:02:00.0
[    1.308707] nvme nvme1: pci function 0000:05:00.0
[    1.524154] nvme nvme1: missing or invalid SUBNQN field.
[    1.524177] nvme nvme0: missing or invalid SUBNQN field.
[    1.524179] nvme nvme0: ignoring ctrl due to duplicate subnqn (nqn.2014.08.org.nvmexpress:126f126fTM7401918256C       Teelkoou 256G                           ).
[    1.524224] nvme nvme0: Removing after probe failure status: -22
[    1.527619] nvme nvme1: allocated 64 MiB host memory buffer.
[    1.543338] nvme nvme1: nvme_report_ns_ids: Identify Descriptors failed
[    1.545101] nvme nvme1: nvme_report_ns_ids: Identify Descriptors failed
[    1.546249]  nvme0n1: p1

# nvme list
Node             SN                   Model                                    Namespace Usage                      Format           FW Rev  
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1     TM7401918256C        Teelkoou 256G                            1         256.06  GB / 256.06  GB    512   B +  0 B   R0629A0 

# nvme list-subsys 
nvme-subsys0 - NQN=nqn.2014.08.org.nvmexpress:126f126fTM7401918256C       Teelkoou 256G                           
\
 +- nvme0 pcie 0000:02:00.0 live 


# nvme id-ctrl /dev/nvme0n1 
NVME Identify Controller:
vid       : 0x126f
ssvid     : 0x126f
sn        : TM7401918256C       
mn        : Teelkoou 256G                           
fr        : R0629A0 
rab       : 6
ieee      : 000000
cmic      : 0
mdts      : 6
cntlid    : 1
ver       : 10300
rtd3r     : 249f0
rtd3e     : 13880
oaes      : 0x100
ctratt    : 0
rrls      : 0
oacs      : 0x6
acl       : 4
aerl      : 7
frmw      : 0x6
lpa       : 0xf
elpe      : 255
npss      : 0
avscc     : 0
apsta     : 0
wctemp    : 343
cctemp    : 353
mtfa      : 100
hmpre     : 16384
hmmin     : 16384
tnvmcap   : 0
unvmcap   : 0
rpmbs     : 0
edstt     : 0
dsto      : 0
fwug      : 4
kas       : 0
hctma     : 0x1
mntmt     : 0
mxtmt     : 0
sanicap   : 0
hmminds   : 0
hmmaxd    : 0
nsetidmax : 0
anatt     : 0
anacap    : 0
anagrpmax : 0
nanagrpid : 0
sqes      : 0x66
cqes      : 0x44
maxcmd    : 0
nn        : 1
oncs      : 0x5f
fuses     : 0
fna       : 0
vwc       : 0x1
awun      : 0
awupf     : 0
nvscc     : 0
nwpc      : 0
acwu      : 0
sgls      : 0
mnan      : 0
subnqn    : 
ioccsz    : 0
iorcsz    : 0
icdoff    : 0
ctrattr   : 0
msdbd     : 0
ps    0 : mp:9.00W operational enlat:0 exlat:0 rrt:0 rrl:0
          rwt:0 rwl:0 idle_power:- active_power:-

# nvme id-ns /dev/nvme0n1 
NVME Identify Namespace 1:
nsze    : 0x1dcf32b0
ncap    : 0x1dcf32b0
nuse    : 0x1dcf32b0
nsfeat  : 0
nlbaf   : 0
flbas   : 0
mc      : 0
dpc     : 0
dps     : 0
nmic    : 0
rescap  : 0
fpi     : 0x80
dlfeat  : 0
nawun   : 0
nawupf  : 0
nacwu   : 0
nabsn   : 0
nabo    : 0
nabspf  : 0
noiob   : 0
nvmcap  : 0
nsattr	: 0
nvmsetid: 0
anagrpid: 0
endgid  : 0
nguid   : 00000000000000000000000000000000
eui64   : 0100000000000000
lbaf  0 : ms:0   lbads:9  rp:0 (in use)

lspci -nn:

02:00.0 Non-Volatile memory controller [0108]: Silicon Motion, Inc. Device [126f:2263] (rev 03)
05:00.0 Non-Volatile memory controller [0108]: Silicon Motion, Inc. Device [126f:2263] (rev 03)

Since by looking at product reviews, screenshots etc. it seems most buyers are using Windows, I tried booting up the Windows 10 installer. It did present both NVMe devices as choices for the installation target. I did not go any further.

I wonder if this could be made to work on Linux.

If there is something else I should post here, please guide me.

Thanks.
Comment 1 Gedalya 2019-11-25 01:50:20 UTC
after disabling the "Subsystem does not support multiple controllers" check, I now get "nvme nvme1: duplicate IDs for nsid 1", and again only one device, nvme0, remains available.

[44442.259864] nvme nvme0: pci function 0000:02:00.0
[44442.260016] nvme nvme1: pci function 0000:05:00.0
[44442.369530] nvme nvme0: missing or invalid SUBNQN field.
[44442.377301] nvme nvme0: allocated 64 MiB host memory buffer.
[44442.386726] nvme nvme0: 4/0/0 default/read/poll queues
[44442.392800] nvme nvme0: nvme_report_ns_ids: Identify Descriptors failed
[44442.394647] nvme nvme0: nvme_report_ns_ids: Identify Descriptors failed
[44442.478557] nvme nvme1: missing or invalid SUBNQN field.
[44442.489603] nvme nvme1: allocated 64 MiB host memory buffer.
[44442.499456] nvme nvme1: 4/0/0 default/read/poll queues
[44442.505707] nvme nvme1: nvme_report_ns_ids: Identify Descriptors failed
[44442.505712] nvme nvme1: duplicate IDs for nsid 1

Note You need to log in before you can comment on or make changes to this bug.