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)

All manual pages