# SPDX-License-Identifier: GPL-2.0-only config NVME_CORE tristate config BLK_DEV_NVME tristate "NVM Express block device" depends on PCI && BLOCK select NVME_CORE help The NVM Express driver is for solid state drives directly connected to the PCI or PCI Express bus. If you know you don't have one of these, it is safe to answer N. To compile this driver as a module, choose M here: the module will be called nvme. config NVME_MULTIPATH bool "NVMe multipath support" depends on NVME_CORE help This option enables support for multipath access to NVMe subsystems. If this option is enabled only a single /dev/nvmeXnY device will show up for each NVMe namespace, even if it is accessible through multiple controllers. config NVME_VERBOSE_ERRORS bool "NVMe verbose error reporting" depends on NVME_CORE help This option enables verbose reporting for NVMe errors. The error translation table will grow the kernel image size by about 4 KB. config NVME_HWMON bool "NVMe hardware monitoring" depends on (NVME_CORE=y && HWMON=y) || (NVME_CORE=m && HWMON) help This provides support for NVMe hardware monitoring. If enabled, a hardware monitoring device will be created for each NVMe drive in the system. config NVME_FABRICS select NVME_CORE select NVME_KEYRING if NVME_TCP_TLS tristate config NVME_RDMA tristate "NVM Express over Fabrics RDMA host driver" depends on INFINIBAND && INFINIBAND_ADDR_TRANS && BLOCK select NVME_FABRICS select SG_POOL help This provides support for the NVMe over Fabrics protocol using the RDMA (Infiniband, RoCE, iWarp) transport. This allows you to use remote block devices exported using the NVMe protocol set. To configure a NVMe over Fabrics controller use the nvme-cli tool from https://github.com/linux-nvme/nvme-cli. If unsure, say N. config NVME_FC tristate "NVM Express over Fabrics FC host driver" depends on BLOCK depends on HAS_DMA select NVME_FABRICS select SG_POOL help This provides support for the NVMe over Fabrics protocol using the FC transport. This allows you to use remote block devices exported using the NVMe protocol set. To configure a NVMe over Fabrics controller use the nvme-cli tool from https://github.com/linux-nvme/nvme-cli. If unsure, say N. config NVME_TCP tristate "NVM Express over Fabrics TCP host driver" depends on INET depends on BLOCK select NVME_FABRICS select CRYPTO select CRYPTO_CRC32C help This provides support for the NVMe over Fabrics protocol using the TCP transport. This allows you to use remote block devices exported using the NVMe protocol set. To configure a NVMe over Fabrics controller use the nvme-cli tool from https://github.com/linux-nvme/nvme-cli. If unsure, say N. config NVME_TCP_TLS bool "NVMe over Fabrics TCP TLS encryption support" depends on NVME_TCP select NET_HANDSHAKE select KEYS help Enables TLS encryption for NVMe TCP using the netlink handshake API. The TLS handshake daemon is availble at https://github.com/oracle/ktls-utils. If unsure, say N. config NVME_HOST_AUTH bool "NVMe over Fabrics In-Band Authentication in host side" depends on NVME_CORE select NVME_AUTH select NVME_KEYRING if NVME_TCP_TLS help This provides support for NVMe over Fabrics In-Band Authentication in host side. If unsure, say N. config NVME_APPLE tristate "Apple ANS2 NVM Express host driver" depends on OF && BLOCK depends on APPLE_RTKIT && APPLE_SART depends on ARCH_APPLE || COMPILE_TEST select NVME_CORE help This provides support for the NVMe controller embedded in Apple SoCs such as the M1. To compile this driver as a module, choose M here: the module will be called nvme-apple.