HomeFreeBSD

nvme: avoid duplicate SET_NUM_QUEUES commands

Description

nvme: avoid duplicate SET_NUM_QUEUES commands

nvme(4) issues a SET_NUM_QUEUES command during device
initialization to ensure enough I/O queues exists for each
of the MSI-X vectors we have allocated. The SET_NUM_QUEUES
command is then issued again during nvme_ctrlr_start(), to
ensure that is properly set after any controller reset.

At least one NVMe drive exists which fails this second
SET_NUM_QUEUES command during device initialization. So
change nvme_ctrlr_start() to only issue its SET_NUM_QUEUES
command when it is coming out of a reset - avoiding the
duplicate SET_NUM_QUEUES during device initialization.

Reported by: gallatin
MFC after: 3 days
Sponsored by: Intel

Details

Provenance
jimharrisAuthored on
Parents
rS295531: MFC r295356 (Partial)
Branches
Unknown
Tags
Unknown