summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2026-08-14 06:13:26 -0600
committerJens Axboe <axboe@kernel.dk>2026-08-14 06:13:26 -0600
commit642ec08c2e2e7a41592aba45e243afbc069a039d (patch)
tree164ae3eb4d65512a80f1172bc6e2ce74255edb09 /Documentation
parent30df3ab3c92d0e7854c54df6ae66f4aa6eb5b3d2 (diff)
parentf1a8846e06388113dfdbb89dee005083fa9afdf9 (diff)
Merge tag 'nvme-7.3-2026-08-13' of git://git.infradead.org/nvme into for-7.3/block
Pull NVMe updates from Keith: "- Enable context analysis for the nvme host driver, annotating the subsystem's locks, along with the LIST_HEAD_GUARDED support it needs (Nilay, Marco) - Harden the tcp host and target against malformed PDUs and out of range SGL lengths (Yehyeong, Ibrahim, Greg) - Fix unserialized page_frag_cache use in nvme-tcp request setup (Dmitry) - Bound identify, FDP and passthrough descriptor parsing to the allocated buffers (Hari, Guixin) - Zoned namespace fixes for host and the target (Xixin, Guixin, Yao) - Apple controller fixes: page aligned admin queue buffers, NVMMU TCB setup, DMA direction and admin queue teardown (Sven, Gui-Dong) - Add a namespace level debugfs directory exposing reservation state, and ABI documentation for the host sysfs and target configfs interfaces (Guixin) - Fix cdev and namespace lifetimes (John) - Parallelize nvme-rdma I/O queue allocation and startup (Surabhi) - Fix nvmet-rdma response resource leak on queue teardown (Shin'ichiro) - Authentication fixes: AUTH_RECEIVE buffer and an out of bounds read in negotiate (Xixin, Bryam, Guixin, Eric) - Fix pci-epf use-after-free and CQ reference leak (Shin'ichiro, Yifei) - Reject passthrough of driver managed Set Features (Chao) - Various error path and teardown fixes across the host and target addressing issues with use-after-free and leaking resources (Guixin, Maurizio, Ewan, Zhengrong, Jiang HongHui, Myeonghun, Yang, Geliang, Yehyeong) - Various cleanups and typo fixes (Nilay, Guixin, Pan Chuang)" * tag 'nvme-7.3-2026-08-13' of git://git.infradead.org/nvme: (81 commits) nvmet: fix max_qid race between configfs and controller allocation nvme: nvme-fc: Fix nvme_fc_create_hw_io_queues() queue deletion in error path nvme: ratelimit the completion-path messages driven by device data nvme-tcp: fix host memory disclosure on R2T for a read command nvme-tcp: do not accept C2HData based on blk_rq_payload_bytes() alone nvme-tcp: reject a read that transferred too few bytes nvmet: zns: reject full zone report when buffer is too small nvme-tcp: fix usage of page_frag_cache nvme: reject passthrough of driver-managed Set Features nvmet: fix NULL pointer dereference in nvmet_execute_identify_ns_zns() nvmet: pci-epf: fix use-after-free in nvmet_pci_epf_exec_iod_work() nvmet: pci-epf: put CQ ref on create_cq mapping failure nvme-apple: Drop the PRP null check chicken bit nvme-apple: Require page aligned buffers on the admin queue nvme: Add a quirk for page aligned admin queue buffers nvme-apple: Never set the opcode in the NVMMU TCB nvme-apple: Don't set a DMA direction for commands without a data transfer nvme-apple: Destroy the admin queue on removal nvmet: fix heap out-of-bounds read in nvmet_auth_negotiate() nvme: raise FDP placement handle cap to U8_MAX and warn on overflow ...
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/ABI/stable/configfs-nvmet352
-rw-r--r--Documentation/ABI/stable/sysfs-nvme453
-rw-r--r--Documentation/ABI/testing/sysfs-nvme13
3 files changed, 805 insertions, 13 deletions
diff --git a/Documentation/ABI/stable/configfs-nvmet b/Documentation/ABI/stable/configfs-nvmet
new file mode 100644
index 000000000000..36b587404ee7
--- /dev/null
+++ b/Documentation/ABI/stable/configfs-nvmet
@@ -0,0 +1,352 @@
+What: /config/nvmet/ports/N/addr_adrfam
+What: /config/nvmet/ports/N/addr_portid
+What: /config/nvmet/ports/N/addr_traddr
+What: /config/nvmet/ports/N/addr_trsvcid
+What: /config/nvmet/ports/N/addr_trtype
+What: /config/nvmet/ports/N/addr_treq
+Date: June 2016
+KernelVersion: 4.8
+Contact: Christoph Hellwig <hch@lst.de>
+Description:
+ Address attributes for an NVMe-oF target port.
+
+ addr_adrfam: Shows or sets the address family. Accepted
+ values: "pcie", "ipv4", "ipv6", "ib", "fc", "pci", "loop".
+
+ addr_portid: Shows or sets the port identifier (u16).
+
+ addr_traddr: Shows or sets the transport address string.
+
+ addr_trsvcid: Shows or sets the transport service identifier.
+
+ addr_trtype: Shows or sets the transport type. Accepted
+ values: "rdma", "fc", "tcp", "pci", "loop". Also
+ initializes default TSAS values.
+
+ addr_treq: Shows or sets the transport security requirements.
+ Accepted values: "not specified", "required",
+ "not required". For TCP with TLS1.3, "not specified" is
+ rejected.
+
+ All attributes require the port to be disabled before
+ modification.
+
+What: /config/nvmet/ports/N/referrals/NAME/addr_adrfam
+What: /config/nvmet/ports/N/referrals/NAME/addr_portid
+What: /config/nvmet/ports/N/referrals/NAME/addr_traddr
+What: /config/nvmet/ports/N/referrals/NAME/addr_trsvcid
+What: /config/nvmet/ports/N/referrals/NAME/addr_trtype
+What: /config/nvmet/ports/N/referrals/NAME/addr_treq
+What: /config/nvmet/ports/N/referrals/NAME/enable
+Date: June 2016
+KernelVersion: 4.8
+Contact: Christoph Hellwig <hch@lst.de>
+Description:
+ Address attributes and enable control for a referral entry
+ under a port. The addr_* attributes have the same semantics
+ as the corresponding port-level attributes. The enable
+ attribute shows or sets whether this referral is enabled
+ (boolean).
+
+What: /config/nvmet/ports/N/param_inline_data_size
+Date: June 2018
+KernelVersion: 4.19
+Contact: Steve Wise <swise@opengridcomputing.com>
+Description:
+ Shows or sets the inline data size for this port. Default
+ is -1 which lets the transport choose. The port must be
+ disabled before modification.
+
+What: /config/nvmet/ports/N/ana_groups/ID/ana_state
+Date: June 2018
+KernelVersion: 4.19
+Contact: Christoph Hellwig <hch@lst.de>
+Description:
+ Shows or sets the ANA (Asymmetric Namespace Access) state
+ for this group on this port. Accepted values: "optimized",
+ "non-optimized", "inaccessible", "persistent-loss",
+ "change". Changes trigger an ANA change event.
+
+What: /config/nvmet/ports/N/param_pi_enable
+Date: May 2020
+KernelVersion: 5.8
+Contact: Israel Rukshin <israelr@mellanox.com>
+Description:
+ Shows or sets whether protection information (PI) is
+ enabled/supported for this port. Accepts boolean value.
+ Only available when CONFIG_BLK_DEV_INTEGRITY is enabled.
+ The port must be disabled before modification.
+
+What: /config/nvmet/ports/N/addr_tsas
+Date: August 2023
+KernelVersion: 6.7
+Contact: Hannes Reinecke <hare@suse.de>
+Description:
+ Shows or sets the transport-specific address subtype. For
+ TCP transport, accepted values: "none", "tls1.3" (requires
+ CONFIG_NVME_TARGET_TCP_TLS). For RDMA transport, shows the
+ QP type: "connected" or "datagram". The port must be
+ disabled before modification.
+
+What: /config/nvmet/ports/N/param_max_queue_size
+Date: January 2024
+KernelVersion: 6.9
+Contact: Max Gurtovoy <mgurtovoy@nvidia.com>
+Description:
+ Shows or sets the maximum queue size for this port. Default
+ is -1 which lets the transport choose. The port must be
+ disabled before modification.
+
+What: /config/nvmet/ports/N/param_mdts
+Date: April 2026
+KernelVersion: 7.1
+Contact: Aurelien Aptel <aaptel@nvidia.com>
+Description:
+ Shows or sets the maximum data transfer size for this port.
+ Default is -1 which lets the transport choose. The port
+ must be disabled before modification.
+
+What: /config/nvmet/subsystems/NAME/attr_allow_any_host
+Date: June 2016
+KernelVersion: 4.8
+Contact: Christoph Hellwig <hch@lst.de>
+Description:
+ Shows or sets whether any host is allowed to connect.
+ Accepts boolean value. Cannot be set to 1 if explicit
+ hosts are linked in the allowed_hosts/ directory.
+
+What: /config/nvmet/subsystems/NAME/namespaces/NSID/device_path
+What: /config/nvmet/subsystems/NAME/namespaces/NSID/device_nguid
+What: /config/nvmet/subsystems/NAME/namespaces/NSID/enable
+Date: June 2016
+KernelVersion: 4.8
+Contact: Christoph Hellwig <hch@lst.de>
+Description:
+ Namespace attributes added with the initial NVMe target.
+
+ device_path: Shows or sets the backend block device path.
+ The namespace must be disabled before modification.
+
+ device_nguid: Shows or sets the NGUID (128-bit identifier).
+ Accepts 32 hex digits with optional "-" or ":" separators.
+ The namespace must be disabled before modification.
+
+ enable: Shows or sets whether this namespace is enabled
+ (boolean).
+
+What: /config/nvmet/subsystems/NAME/namespaces/NSID/device_uuid
+Date: June 2017
+KernelVersion: 4.13
+Contact: Johannes Thumshirn <jthumshirn@suse.de>
+Description:
+ Shows or sets the UUID for this namespace. The namespace
+ must be disabled before modification.
+
+What: /config/nvmet/subsystems/NAME/attr_version
+What: /config/nvmet/subsystems/NAME/attr_serial
+Date: July 2017
+KernelVersion: 4.13
+Contact: Johannes Thumshirn <jthumshirn@suse.de>
+Description:
+ attr_version: Shows or sets the NVMe version reported by
+ this subsystem. Format: "major.minor" or
+ "major.minor.tertiary". Cannot be changed after the
+ subsystem has been discovered.
+
+ attr_serial: Shows or sets the serial number. Must be a
+ 1-20 byte ASCII string (characters 0x20-0x7e). Cannot be
+ changed after the subsystem has been discovered.
+
+What: /config/nvmet/subsystems/NAME/namespaces/NSID/ana_grpid
+Date: June 2018
+KernelVersion: 4.19
+Contact: Christoph Hellwig <hch@lst.de>
+Description:
+ Shows or sets the ANA (Asymmetric Namespace Access) Group
+ ID for this namespace. Must be between 1 and 128. Changing
+ triggers an ANA event notification.
+
+What: /config/nvmet/subsystems/NAME/namespaces/NSID/buffered_io
+Date: June 2018
+KernelVersion: 4.19
+Contact: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
+Description:
+ Shows or sets whether buffered I/O is used for this
+ namespace. Accepts boolean value. The namespace must be
+ disabled before modification.
+
+What: /config/nvmet/subsystems/NAME/namespaces/NSID/p2pmem
+Date: October 2018
+KernelVersion: 4.20
+Contact: Logan Gunthorpe <logang@deltatee.com>
+Description:
+ Shows or sets the P2P DMA memory device for this namespace.
+ Accepts a PCI device BDF, "auto", or "none". The namespace
+ must be disabled before modification. Only available when
+ CONFIG_PCI_P2PDMA is enabled.
+
+What: /config/nvmet/subsystems/NAME/attr_cntlid_min
+What: /config/nvmet/subsystems/NAME/attr_cntlid_max
+Date: January 2020
+KernelVersion: 5.7
+Contact: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
+Description:
+ attr_cntlid_min: Shows or sets the minimum controller ID
+ (u16). Must be nonzero and not greater than attr_cntlid_max.
+
+ attr_cntlid_max: Shows or sets the maximum controller ID
+ (u16). Must be nonzero and not less than attr_cntlid_min.
+
+What: /config/nvmet/subsystems/NAME/attr_model
+Date: January 2020
+KernelVersion: 5.7
+Contact: Mark Ruijter <MRuijter@onestopsystems.com>
+Description:
+ Shows or sets the model number for this subsystem. Must
+ be a 1-40 byte ASCII string (characters 0x20-0x7e).
+ Cannot be changed after the subsystem has been discovered.
+
+What: /config/nvmet/subsystems/NAME/attr_pi_enable
+Date: May 2020
+KernelVersion: 5.8
+Contact: Israel Rukshin <israelr@mellanox.com>
+Description:
+ Shows or sets whether protection information (PI) is
+ enabled/supported for this subsystem. Accepts boolean
+ value. Only available when CONFIG_BLK_DEV_INTEGRITY is
+ enabled.
+
+What: /config/nvmet/subsystems/NAME/namespaces/NSID/revalidate_size
+Date: May 2020
+KernelVersion: 5.8
+Contact: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
+Description:
+ Write-only. Writing 1 triggers namespace size revalidation.
+ If the size has changed, a namespace changed AEN is sent.
+ The namespace must be enabled.
+
+What: /config/nvmet/subsystems/NAME/passthru/device_path
+What: /config/nvmet/subsystems/NAME/passthru/enable
+Date: July 2020
+KernelVersion: 5.9
+Contact: Logan Gunthorpe <logang@deltatee.com>
+Description:
+ Passthrough mode attributes.
+
+ device_path: Shows or sets the NVMe controller character
+ device path (e.g., /dev/nvme0). Cannot be changed while
+ the passthrough controller is active.
+
+ enable: Shows or sets whether passthrough mode is enabled
+ (boolean).
+
+ Only available when CONFIG_NVME_TARGET_PASSTHRU is enabled.
+
+What: /config/nvmet/subsystems/NAME/passthru/admin_timeout
+What: /config/nvmet/subsystems/NAME/passthru/io_timeout
+Date: November 2020
+KernelVersion: 5.11
+Contact: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
+Description:
+ admin_timeout: Shows or sets the admin command timeout for
+ passthrough mode, in jiffies.
+
+ io_timeout: Shows or sets the I/O command timeout for
+ passthrough mode, in jiffies.
+
+ Only available when CONFIG_NVME_TARGET_PASSTHRU is enabled.
+
+What: /config/nvmet/subsystems/NAME/passthru/clear_ids
+Date: June 2022
+KernelVersion: 5.19
+Contact: Alan Adamson <alan.adamson@oracle.com>
+Description:
+ Shows or sets whether to clear identify data IDs in
+ passthrough mode. Only available when
+ CONFIG_NVME_TARGET_PASSTHRU is enabled.
+
+What: /config/nvmet/subsystems/NAME/attr_qid_max
+Date: August 2022
+KernelVersion: 6.1
+Contact: Daniel Wagner <dwagner@suse.de>
+Description:
+ Shows or sets the maximum queue ID (number of I/O queues,
+ u16). Must be between 1 and 128. Changing this value
+ forces reconnection of all connected controllers.
+
+What: /config/nvmet/subsystems/NAME/attr_ieee_oui
+Date: November 2022
+KernelVersion: 6.2
+Contact: Aleksandr Miloserdov <a.miloserdov@yadro.com>
+Description:
+ Shows or sets the IEEE OUI for this subsystem. Displayed
+ in "0x%06x" format. Must be a 24-bit value. Cannot be
+ changed after the subsystem has been discovered.
+
+What: /config/nvmet/subsystems/NAME/attr_firmware
+Date: November 2022
+KernelVersion: 6.2
+Contact: Aleksandr Miloserdov <a.miloserdov@yadro.com>
+Description:
+ Shows or sets the firmware revision string for this
+ subsystem. Must be a 1-8 byte ASCII string (characters
+ 0x20-0x7e). Cannot be changed after the subsystem has
+ been discovered.
+
+What: /config/nvmet/subsystems/NAME/namespaces/NSID/resv_enable
+Date: November 2024
+KernelVersion: 6.13
+Contact: Guixin Liu <kanie@linux.alibaba.com>
+Description:
+ Shows or sets whether persistent reservation support is
+ enabled for this namespace. Accepts boolean value. The
+ namespace must be disabled before modification.
+
+What: /config/nvmet/subsystems/NAME/attr_vendor_id
+What: /config/nvmet/subsystems/NAME/attr_subsys_vendor_id
+Date: January 2025
+KernelVersion: 6.14
+Contact: Damien Le Moal <dlemoal@kernel.org>
+Description:
+ attr_vendor_id: Shows or sets the PCI vendor ID reported
+ by this subsystem. Displayed in "0x%x" format.
+
+ attr_subsys_vendor_id: Shows or sets the PCI subsystem
+ vendor ID. Displayed in "0x%x" format.
+
+What: /config/nvmet/hosts/HOSTNQN/dhchap_key
+What: /config/nvmet/hosts/HOSTNQN/dhchap_ctrl_key
+What: /config/nvmet/hosts/HOSTNQN/dhchap_hash
+What: /config/nvmet/hosts/HOSTNQN/dhchap_dhgroup
+Date: June 2022
+KernelVersion: 6.0
+Contact: Hannes Reinecke <hare@suse.de>
+Description:
+ DH-HMAC-CHAP authentication attributes.
+
+ dhchap_key: Shows or sets the host secret key. Accepts a
+ key string in "DHHC-1:" format.
+
+ dhchap_ctrl_key: Shows or sets the controller secret key
+ for bidirectional authentication. Same format as dhchap_key.
+
+ dhchap_hash: Shows or sets the HMAC hash algorithm.
+ Accepted values: "hmac(sha256)", "hmac(sha384)",
+ "hmac(sha512)".
+
+ dhchap_dhgroup: Shows or sets the Diffie-Hellman group for
+ DH-HMAC-CHAP key exchange. Accepted values: "null",
+ "ffdhe2048", "ffdhe3072", "ffdhe4096", "ffdhe6144".
+ Non-null groups require the corresponding KPP crypto
+ algorithm to be available.
+
+ Only available when CONFIG_NVME_TARGET_AUTH is enabled.
+
+What: /config/nvmet/discovery_nqn
+Date: April 2024
+KernelVersion: 6.9
+Contact: Hannes Reinecke <hare@kernel.org>
+Description:
+ Shows or sets the NQN of the discovery subsystem. The
+ value must be unique and not duplicate any existing
+ subsystem name.
diff --git a/Documentation/ABI/stable/sysfs-nvme b/Documentation/ABI/stable/sysfs-nvme
new file mode 100644
index 000000000000..a2f5d0710db4
--- /dev/null
+++ b/Documentation/ABI/stable/sysfs-nvme
@@ -0,0 +1,453 @@
+What: /sys/class/nvme/nvmeX/model
+What: /sys/class/nvme/nvmeX/serial
+What: /sys/class/nvme/nvmeX/firmware_rev
+Date: January 2016
+KernelVersion: 4.5
+Contact: Keith Busch <kbusch@kernel.org>
+Description:
+ Shows the model, serial number, or firmware revision string
+ of the NVMe controller, as reported in the Identify
+ Controller data structure.
+
+What: /sys/class/nvme/nvmeX/cntlid
+Date: February 2016
+KernelVersion: 4.6
+Contact: Ming Lin <ming.l@ssi.samsung.com>
+Description:
+ Shows the controller identifier assigned by the NVMe
+ subsystem.
+
+What: /sys/class/nvme/nvmeX/cntrltype
+What: /sys/class/nvme/nvmeX/dctype
+Date: February 2022
+KernelVersion: 5.18
+Contact: Martin Belanger <martin.belanger@dell.com>
+Description:
+ cntrltype: Shows the controller type. Possible values: "io",
+ "discovery", "admin", "reserved".
+
+ dctype: Shows the discovery controller type. Possible values:
+ "none", "ddc", "cdc", "reserved".
+
+What: /sys/class/nvme/nvmeX/reset_controller
+Date: November 2015
+KernelVersion: 4.5
+Contact: Christoph Hellwig <hch@lst.de>
+Description:
+ Write-only. Writing any value triggers a synchronous
+ controller reset.
+
+What: /sys/class/nvme/nvmeX/rescan_controller
+Date: April 2016
+KernelVersion: 4.7
+Contact: Keith Busch <kbusch@kernel.org>
+Description:
+ Write-only. Writing any value triggers a namespace rescan
+ on this controller.
+
+What: /sys/class/nvme/nvmeX/transport
+What: /sys/class/nvme/nvmeX/subsysnqn
+What: /sys/class/nvme/nvmeX/address
+What: /sys/class/nvme/nvmeX/delete_controller
+What: /sys/class/nvme/nvmeX/reconnect_delay
+What: /sys/class/nvme/nvmeX/ctrl_loss_tmo
+Date: June 2016
+KernelVersion: 4.8
+Contact: Ming Lin <ming.l@ssi.samsung.com>
+Description:
+ Fabrics controller attributes added with NVMe-oF support.
+
+ transport: Shows the transport type string. Possible values:
+ "pcie", "tcp", "rdma", "fc", "loop".
+
+ subsysnqn: Shows the NVMe Qualified Name (NQN) of the
+ subsystem this controller belongs to.
+
+ address: Shows the transport-specific address string. Only
+ available for fabrics controllers.
+
+ delete_controller: Write-only. Triggers deletion of this
+ fabrics controller.
+
+ reconnect_delay: Shows or sets the reconnect delay in
+ seconds. Reading returns the delay value, or "off" if
+ disabled.
+
+ ctrl_loss_tmo: Shows or sets the controller loss timeout in
+ seconds. Reading returns the timeout value, or "off" if
+ infinite reconnects are allowed. Writing a negative value
+ disables the timeout.
+
+What: /sys/class/nvme/nvmeX/hostnqn
+What: /sys/class/nvme/nvmeX/hostid
+Date: February 2020
+KernelVersion: 5.7
+Contact: Sagi Grimberg <sagi@grimberg.me>
+Description:
+ hostnqn: Shows the host NQN used by this fabrics controller.
+
+ hostid: Shows the host identifier (UUID format) used by this
+ fabrics controller.
+
+ Only available for fabrics controllers.
+
+What: /sys/class/nvme/nvmeX/fast_io_fail_tmo
+Date: November 2020
+KernelVersion: 5.11
+Contact: Victor Gladkov <Victor.Gladkov@kioxia.com>
+Description:
+ Shows or sets the fast I/O fail timeout in seconds. Reading
+ returns the timeout value, or "off" if disabled. Writing a
+ negative value disables the fast I/O fail. Only available
+ for fabrics controllers.
+
+What: /sys/class/nvme/nvmeX/kato
+Date: April 2021
+KernelVersion: 5.13
+Contact: Hannes Reinecke <hare@suse.de>
+Description:
+ Shows the Keep Alive Timeout value in milliseconds for
+ this controller.
+
+What: /sys/class/nvme/nvmeX/cmb
+Date: October 2016
+KernelVersion: 4.9
+Contact: Stephen Bates <sbates@raithlin.com>
+Description:
+ Shows the Controller Memory Buffer (CMB) register values
+ in format "cmbloc : 0x%08x\ncmbsz : 0x%08x\n". Only
+ visible when the controller has a CMB (cmbsz != 0).
+ PCI transport only.
+
+What: /sys/class/nvme/nvmeX/cmbloc
+What: /sys/class/nvme/nvmeX/cmbsz
+What: /sys/class/nvme/nvmeX/hmb
+Date: July 2021
+KernelVersion: 5.15
+Contact: Keith Busch <kbusch@kernel.org>
+Description:
+ cmbloc: Shows the CMBLOC register value.
+
+ cmbsz: Shows the CMBSZ register value.
+
+ cmbloc and cmbsz are only visible when the controller has
+ a CMB. PCI transport only.
+
+ hmb: Shows or sets whether the Host Memory Buffer (HMB) is
+ enabled. Reading returns 1 (enabled) or 0 (disabled).
+ Writing 1 enables HMB; writing 0 disables it. Only
+ visible when the controller supports HMB (hmpre != 0).
+ PCI transport only.
+
+What: /sys/class/nvme/nvmeX/state
+Date: November 2016
+KernelVersion: 4.11
+Contact: Sagi Grimberg <sagi@grimberg.me>
+Description:
+ Shows the current state of the controller. Possible values:
+ "new", "live", "resetting", "connecting", "deleting",
+ "deleting (no IO)", "dead".
+
+What: /sys/class/nvme/nvmeX/numa_node
+Date: November 2018
+KernelVersion: 5.0
+Contact: Hannes Reinecke <hare@suse.de>
+Description:
+ Shows the NUMA node the controller is attached to.
+
+What: /sys/class/nvme/nvmeX/queue_count
+What: /sys/class/nvme/nvmeX/sqsize
+Date: September 2019
+KernelVersion: 5.4
+Contact: James Smart <jsmart2021@gmail.com>
+Description:
+ queue_count: Shows the total number of queues (admin + I/O)
+ for this controller.
+
+ sqsize: Shows the submission queue size for this controller.
+
+What: /sys/class/nvme/nvmeX/dhchap_secret
+What: /sys/class/nvme/nvmeX/dhchap_ctrl_secret
+Date: June 2022
+KernelVersion: 6.0
+Contact: Hannes Reinecke <hare@suse.de>
+Description:
+ dhchap_secret: Shows or sets the host DH-HMAC-CHAP secret
+ for this controller. Reading returns "none" if not set.
+ Writing must use the "DHHC-1:" key format and triggers
+ re-authentication.
+
+ dhchap_ctrl_secret: Shows or sets the controller
+ DH-HMAC-CHAP secret for bidirectional authentication.
+ Same format as dhchap_secret.
+
+ Only available when CONFIG_NVME_HOST_AUTH is enabled and
+ for fabrics controllers.
+
+What: /sys/class/nvme/nvmeX/tls_key
+Date: August 2023
+KernelVersion: 6.7
+Contact: Hannes Reinecke <hare@suse.de>
+Description:
+ Shows the serial of the currently active TLS PSK as hex.
+ Returns empty if no TLS key is active. Only available for
+ TCP controllers with TLS or secure concatenation enabled
+ (CONFIG_NVME_TCP_TLS).
+
+What: /sys/class/nvme/nvmeX/tls_configured_key
+Date: July 2024
+KernelVersion: 6.12
+Contact: Hannes Reinecke <hare@kernel.org>
+Description:
+ Shows the serial of the configured TLS key. Writing 0
+ triggers a PSK reauthentication (REPLACETLSPSK) with
+ the target. After reauthentication the returned serial
+ will be the new key. Only available for TCP controllers
+ with secure concatenation enabled (CONFIG_NVME_TCP_TLS).
+
+What: /sys/class/nvme/nvmeX/tls_keyring
+Date: July 2024
+KernelVersion: 6.12
+Contact: Hannes Reinecke <hare@kernel.org>
+Description:
+ Shows the TLS keyring description. Only available for TCP
+ controllers with a keyring configured (CONFIG_NVME_TCP_TLS).
+
+What: /sys/class/nvme/nvmeX/tls_mode
+Date: April 2026
+KernelVersion: 7.1
+Contact: Daniel Wagner <wagi@kernel.org>
+Description:
+ Shows the TLS mode: "tls" for direct TLS or "concat" for
+ secure concatenation. Only available for TCP controllers
+ with TLS or secure concatenation enabled
+ (CONFIG_NVME_TCP_TLS).
+
+What: /sys/class/nvme/nvmeX/passthru_err_log_enabled
+Date: January 2024
+KernelVersion: 6.8
+Contact: Alan Adamson <alan.adamson@oracle.com>
+Description:
+ Shows or sets whether admin passthrough error logging is
+ enabled for this controller. Reading returns "on" or "off".
+ Writing accepts a boolean value.
+
+What: /sys/class/nvme/nvmeX/quirks
+Date: November 2025
+KernelVersion: 7.0
+Contact: Maurizio Lombardi <mlombard@redhat.com>
+Description:
+ Shows the active quirk names for this controller, one per
+ line. Shows "none" if no quirks are active.
+
+What: /sys/class/nvme/nvmeX/admin_timeout
+What: /sys/class/nvme/nvmeX/io_timeout
+Date: May 2026
+KernelVersion: 7.2
+Contact: Maurizio Lombardi <mlombard@redhat.com>
+Description:
+ admin_timeout: Shows or sets the admin command timeout in
+ milliseconds.
+
+ io_timeout: Shows or sets the I/O command timeout in
+ milliseconds. Changes are propagated to all namespace
+ request queues.
+
+ The value must be nonzero. Only writable after the
+ controller has been started at least once.
+
+What: /sys/block/nvmeXnY/uuid
+What: /sys/block/nvmeXnY/eui
+What: /sys/block/nvmeXnY/nsid
+Date: December 2015
+KernelVersion: 4.5
+Contact: Keith Busch <kbusch@kernel.org>
+Description:
+ Namespace identification attributes.
+
+ uuid: Shows the UUID for this namespace. Falls back to
+ showing the NGUID for backward compatibility. Hidden if
+ both are all zeros.
+
+ eui: Shows the IEEE Extended Unique Identifier (EUI-64).
+ Hidden if all zeros.
+
+ nsid: Shows the namespace identifier (NSID).
+
+What: /sys/block/nvmeXnY/wwid
+Date: February 2016
+KernelVersion: 4.6
+Contact: Keith Busch <kbusch@kernel.org>
+Description:
+ Shows the World Wide Identifier for this namespace. The
+ format depends on available identifiers (in priority
+ order): "uuid.{UUID}", "eui.{NGUID}", "eui.{EUI64}", or
+ "nvme.{VID}-{SERIAL}-{MODEL}-{NSID}".
+
+What: /sys/block/nvmeXnY/nguid
+Date: June 2017
+KernelVersion: 4.13
+Contact: Johannes Thumshirn <jthumshirn@suse.de>
+Description:
+ Shows the Namespace Globally Unique Identifier (NGUID).
+ Hidden if the NGUID is all zeros.
+
+What: /sys/block/nvmeXcYnZ/ana_grpid
+What: /sys/block/nvmeXcYnZ/ana_state
+Date: May 2018
+KernelVersion: 4.19
+Contact: Christoph Hellwig <hch@lst.de>
+Description:
+ ana_grpid: Shows the ANA Group ID for this namespace
+ path device.
+
+ ana_state: Shows the ANA state. Possible values:
+ "optimized", "non-optimized", "inaccessible",
+ "persistent-loss", "change".
+
+ Only visible when the controller supports ANA.
+ Requires CONFIG_NVME_MULTIPATH.
+
+What: /sys/block/nvmeXcYnZ/queue_depth
+Date: June 2024
+KernelVersion: 6.11
+Contact: Thomas Song <tsong@purestorage.com>
+Description:
+ Shows the current active I/O count on this path's
+ controller. Returns empty if iopolicy is not "queue-depth".
+ Requires CONFIG_NVME_MULTIPATH.
+
+What: /sys/block/nvmeXcYnZ/numa_nodes
+Date: January 2025
+KernelVersion: 6.15
+Contact: Nilay Shroff <nilay@linux.ibm.com>
+Description:
+ Shows the NUMA node mask for which this path is the
+ currently selected path. Returns empty if iopolicy is not
+ "numa". Requires CONFIG_NVME_MULTIPATH.
+
+What: /sys/block/nvmeXnY/delayed_removal_secs
+Date: May 2025
+KernelVersion: 6.16
+Contact: Nilay Shroff <nilay@linux.ibm.com>
+Description:
+ Shows or sets the delayed removal timeout in seconds for
+ the multipath head device. When nonzero, I/O is queued
+ instead of failed when all paths are gone, and head removal
+ is deferred. Only visible on multipath head devices.
+ Requires CONFIG_NVME_MULTIPATH.
+
+What: /sys/block/nvmeXnY/csi
+What: /sys/block/nvmeXnY/metadata_bytes
+What: /sys/block/nvmeXnY/nuse
+Date: December 2023
+KernelVersion: 6.8
+Contact: Daniel Wagner <dwagner@suse.de>
+Description:
+ csi: Shows the Command Set Identifier for this namespace.
+
+ metadata_bytes: Shows the metadata size in bytes.
+
+ nuse: Shows the Namespace Utilization (NUSE) value. Reading
+ triggers an Identify Namespace command to refresh the
+ value (rate-limited to avoid excessive commands).
+
+What: /sys/block/nvmeXnY/passthru_err_log_enabled
+Date: January 2024
+KernelVersion: 6.8
+Contact: Alan Adamson <alan.adamson@oracle.com>
+Description:
+ Shows or sets whether I/O passthrough error logging is
+ enabled for this namespace. Reading returns "on" or "off".
+ Writing accepts a boolean value.
+
+What: /sys/class/nvme/nvmeX/diag/command_error_count
+What: /sys/class/nvme/nvmeX/diag/reset_count
+What: /sys/class/nvme/nvmeX/diag/reconnect_count
+Date: May 2026
+KernelVersion: 7.2
+Contact: Nilay Shroff <nilay@linux.ibm.com>
+Description:
+ Controller diagnostic counters.
+
+ command_error_count: Admin command error counter.
+
+ reset_count: Controller reset counter.
+
+ reconnect_count: Accumulated reconnect counter. Only
+ available for fabrics controllers.
+
+ All counters can be reset by writing a value.
+
+What: /sys/block/nvmeXnY/diag/command_retries_count
+What: /sys/block/nvmeXnY/diag/command_error_count
+Date: May 2026
+KernelVersion: 7.2
+Contact: Nilay Shroff <nilay@linux.ibm.com>
+Description:
+ Namespace diagnostic counters for non-multipath
+ configurations (when CONFIG_NVME_MULTIPATH is not
+ configured).
+
+ command_retries_count: I/O command retry counter.
+
+ command_error_count: I/O command error counter.
+
+ All counters can be reset by writing any value.
+
+What: /sys/block/nvmeXcYnZ/diag/command_retries_count
+What: /sys/block/nvmeXcYnZ/diag/command_error_count
+What: /sys/block/nvmeXcYnZ/diag/multipath_failover_count
+What: /sys/block/nvmeXnY/diag/io_requeue_no_usable_path_count
+What: /sys/block/nvmeXnY/diag/io_fail_no_available_path_count
+Date: May 2026
+KernelVersion: 7.2
+Contact: Nilay Shroff <nilay@linux.ibm.com>
+Description:
+ Namespace diagnostic counters for multipath
+ configurations (when CONFIG_NVME_MULTIPATH is
+ configured).
+
+ command_retries_count: I/O command retry counter.
+
+ command_error_count: I/O command error counter.
+
+ multipath_failover_count: Multipath failover counter.
+
+ io_requeue_no_usable_path_count: Counter of I/Os
+ requeued because no usable path was available.
+
+ io_fail_no_available_path_count: Counter of I/Os
+ failed because no available path existed.
+
+ All counters can be reset by writing any value.
+
+What: /sys/class/nvme-subsystem/nvme-subsysX/model
+What: /sys/class/nvme-subsystem/nvme-subsysX/serial
+What: /sys/class/nvme-subsystem/nvme-subsysX/firmware_rev
+What: /sys/class/nvme-subsystem/nvme-subsysX/subsysnqn
+Date: November 2017
+KernelVersion: 4.15
+Contact: Hannes Reinecke <hare@suse.de>
+Description:
+ Shows the model, serial number, firmware revision, or NQN
+ of the NVMe subsystem.
+
+What: /sys/class/nvme-subsystem/nvme-subsysX/iopolicy
+Date: February 2019
+KernelVersion: 5.1
+Contact: Hannes Reinecke <hare@suse.de>
+Description:
+ Shows or sets the multipath I/O path selection policy for
+ this subsystem. Accepted values: "numa", "round-robin",
+ "queue-depth". Changing the policy clears all current path
+ selections. Only available when CONFIG_NVME_MULTIPATH is
+ enabled.
+
+What: /sys/class/nvme-subsystem/nvme-subsysX/subsystype
+Date: September 2021
+KernelVersion: 5.16
+Contact: Hannes Reinecke <hare@suse.de>
+Description:
+ Shows the subsystem type. Possible values: "discovery",
+ "nvm", "reserved".
diff --git a/Documentation/ABI/testing/sysfs-nvme b/Documentation/ABI/testing/sysfs-nvme
deleted file mode 100644
index 499d5f843cd4..000000000000
--- a/Documentation/ABI/testing/sysfs-nvme
+++ /dev/null
@@ -1,13 +0,0 @@
-What: /sys/devices/virtual/nvme-fabrics/ctl/.../tls_configured_key
-Date: November 2025
-KernelVersion: 6.19
-Contact: Linux NVMe mailing list <linux-nvme@lists.infradead.org>
-Description:
- The file is avaliable when using a secure concatanation
- connection to a NVMe target. Reading the file will return
- the serial of the currently negotiated key.
-
- Writing 0 to the file will trigger a PSK reauthentication
- (REPLACETLSPSK) with the target. After a reauthentication
- the value returned by tls_configured_key will be the new
- serial.