nvme(4)
MILESTONE-QUALIFIED
Rendered from the page's mdoc source at milestone/general-usability-qemu-20260927 (platform ff025b1)
with GNU groff version 1.23.0, using the same command the image build uses; an ABSD session running
man 4 nvme prints this text. It is dated 2026-09-27; the build commands and
repository files it mentions are in private sources, and later work is not in it.
All pages.
NVME(4) Kernel Interfaces Manual NVME(4) NAME nvme -- polled NVM Express storage driver DESCRIPTION The nvme driver in the kernel drives one NVM Express controller, found by PCI class (mass storage, non-volatile memory, NVMe). With more than one, the first in PCI bus, device, and function order is used. It resets and enables the controller with one admin and one I/O queue pair of 16 entries in kernel memory, identifies the controller and its first active namespace, and accepts only a namespace formatted with 512-byte blocks and no metadata; any other format is refused by name. It moves one 512-byte block per command through a bounce page and polls for completion with interrupts masked, at most 5000 ticks per command. A flush is an NVMe FLUSH waited to completion. A namespace is writable only when the boot option `nvme-write=serial' names its controller's serial number exactly. Otherwise the driver refuses every write and flush, and init receives a read-only block handle. At boot the kernel uses an NVMe namespace if a usable controller is present, and otherwise the ATA disk on the primary IDE channel. Above the driver nothing knows which is in use. DIAGNOSTICS On the console: `NVME CONTROLLER pci=BB:DD.F vendor=... device=... serial=... model=...' the controller was found. `NVME NAMESPACE nsid=1 lba_bytes=512 sectors=N access=read-only|read-write' the namespace, and whether this boot may write it. `NVME UNAVAILABLE reason' the controller was refused (for example a 4 KiB block format) or failed; the ATA probe runs instead. `BLOCK BACKEND nvme access=...' the block device is this namespace. QUALIFICATION QEMU-qualified on QEMU's NVMe controller model (`-device nvme') with 512-byte blocks, by the kernel's `make nvme-test' (write, read back, flush, bounds, a fresh boot reading the same data, read-only without `nvme-write=', refusal of a 4 KiB format) and by the laptop-shaped QEMU machine. Physical hardware qualification: none. The physical boot image, whose kernel refuses every disk write, has not yet been booted on hardware. The qualified SSH boot described in afterboot(8) does not use this driver: its disk is QEMU's IDE disk, driven by ata(4). SEE ALSO ata(4), afterboot(8) In the kernel repository: HANDOFF.md (Block storage and durable boots) and docs/PHYSICAL-BOOT.md. CAVEATS One queue pair, one block per command, polled: throughput is low by design. No interrupts, MSI, or namespace other than the first active one. ABSD September 27, 2026 NVME(4)