Storage controllers

Generic PCI NVMe controller

A generic NVMe-over-PCIe protocol profile derived from class 010802. It intentionally stops short of naming a retail SSD because a PCI controller identity can be shared by multiple marketed drives.

On this page
  1. Overview & identity
  2. Driver & binding
  3. Firmware
  4. Read-only diagnostics
  5. Limitations & related issues
  6. References

Overview & identity

Class 01:08 with programming interface 02 is the source-defined NVMe PCI match. Controller model/serial/firmware comes from NVMe Identify data, while namespaces are separately exposed block devices.

This is an explicit class, transport or driver-context profile. It is not an exact numeric product match.

A numeric match establishes a candidate family within the reviewed evidence. Marketing names, board variants, subsystem conditions and successful operation remain separate questions.

Driver & binding

The nvme PCI table ends with a class-based match as well as explicit quirk entries. A generic match establishes protocol context, not the absence of a device-specific quirk or the running driver’s success.

  • nvme — kernel driver/module candidate

Detected, bound, operational: learn the difference

Firmware

Device/revision dependent

Controller firmware, option ROM and drive firmware can be separate. The reviewed sources do not establish a host-loaded filename for this profile; firmware revision and update policy require the actual controller and OEM identity.

Inspect firmware packaging on your distribution

Read-only diagnostics

Run one displayed command at a time. Replace uppercase placeholders with the affected device, interface or module from your own output. Commands are never executed here. Read-only output can still contain private identifiers.

Read the class and bound driver

lspci -nnk -s BDF

Replace BDF with the controller address. A class-derived nvme candidate establishes a protocol family only. Kernel driver in use is the observed binding; the PCI pair alone does not name the attached SSD.

Inspect visible block-device identities

lsblk -d -o NAME,MODEL,TRAN,HCTL

MODEL describes a block device or a controller-presented logical volume; it is not a PCI-controller identity. HCTL helps distinguish SCSI targets. TRAN can be absent, and this list does not establish the complete physical disk topology.

Read controller and transport messages

sudo journalctl -k -b --no-pager

Elevated access may be needed. Root reads the current boot kernel journal. Associate nvme messages, port/host identifiers and timeout/reset timestamps with the actual controller. A reset message alone does not prove a bad disk or a firmware defect.

Read NVMe controller identification

sudo nvme id-ctrl /dev/NVME_CONTROLLER

Elevated access may be needed. Requires nvme-cli and root access to the controller device. Replace NVME_CONTROLLER with a real name such as nvme0, not a namespace such as nvme0n1. Read mn, sn and fr; serial numbers may be sensitive when sharing output.

Limitations & related issues

An Identify model string and a healthy namespace do not guarantee every firmware power-state transition works. Idle/resume failures, I/O resets and filesystem errors must remain separate observations.

These guides are linked for relevant observations, not as known defects of every device in this family.

Choose a hardware diagnostic workflow · Inspect a log excerpt in Fix Lab

References

Source review records a checked implementation or document, not a reproduced hardware test. Version-specific tables do not establish a minimum kernel or guaranteed operation.