Skip to content
Daniel Wagner edited this page Jan 28, 2025 · 7 revisions

nvme show-regs /dev/nvme0 returns: nvme0 failed to map

It's more of a "feature" than an issue. The kernel will not allow user space to map a device's IO memory when that config option is set and the tooling can't get around that limitation.

When the Linux kernel is configured with CONFIG_IO_STRICT_DEVMEM, the kernel prevents user space to map IO memory to userspace. Either compile a kernel without this option enabled or set the kernel command line option iomem=relaxed.

Also when secure boot is enabled the lockdown is activated, which prevents mapping PCI bars to user space.

nvme list shows wrong disk/block size

nvme-cli v2 relies on the kernel reporting the correct disk/block size via the sysfs interface.

Also ensure libnvme has:

and Linux kernel has (v6.8):

nvme id-ns shows the correct disk/block size because it will issue a command to read the current value.

nvme list shows old firmware version after firmware udpate

nvme-cli reads the firmware version from sysfs. Older kernel don't update the firmware entry in sysfs after an firmware upgrade. After a reboot the correct version will be shown. Altnernative you can use nvme id-ctrl to check the firmware version.