0001 # SPDX-License-Identifier: GPL-2.0-only
0002 config NVME_CORE
0003 tristate
0004 select BLK_DEV_INTEGRITY_T10 if BLK_DEV_INTEGRITY
0005
0006 config BLK_DEV_NVME
0007 tristate "NVM Express block device"
0008 depends on PCI && BLOCK
0009 select NVME_CORE
0010 help
0011 The NVM Express driver is for solid state drives directly
0012 connected to the PCI or PCI Express bus. If you know you
0013 don't have one of these, it is safe to answer N.
0014
0015 To compile this driver as a module, choose M here: the
0016 module will be called nvme.
0017
0018 config NVME_MULTIPATH
0019 bool "NVMe multipath support"
0020 depends on NVME_CORE
0021 help
0022 This option enables support for multipath access to NVMe
0023 subsystems. If this option is enabled only a single
0024 /dev/nvmeXnY device will show up for each NVMe namespace,
0025 even if it is accessible through multiple controllers.
0026
0027 config NVME_VERBOSE_ERRORS
0028 bool "NVMe verbose error reporting"
0029 depends on NVME_CORE
0030 help
0031 This option enables verbose reporting for NVMe errors. The
0032 error translation table will grow the kernel image size by
0033 about 4 KB.
0034
0035 config NVME_HWMON
0036 bool "NVMe hardware monitoring"
0037 depends on (NVME_CORE=y && HWMON=y) || (NVME_CORE=m && HWMON)
0038 help
0039 This provides support for NVMe hardware monitoring. If enabled,
0040 a hardware monitoring device will be created for each NVMe drive
0041 in the system.
0042
0043 config NVME_FABRICS
0044 select NVME_CORE
0045 tristate
0046
0047 config NVME_RDMA
0048 tristate "NVM Express over Fabrics RDMA host driver"
0049 depends on INFINIBAND && INFINIBAND_ADDR_TRANS && BLOCK
0050 select NVME_FABRICS
0051 select SG_POOL
0052 help
0053 This provides support for the NVMe over Fabrics protocol using
0054 the RDMA (Infiniband, RoCE, iWarp) transport. This allows you
0055 to use remote block devices exported using the NVMe protocol set.
0056
0057 To configure a NVMe over Fabrics controller use the nvme-cli tool
0058 from https://github.com/linux-nvme/nvme-cli.
0059
0060 If unsure, say N.
0061
0062 config NVME_FC
0063 tristate "NVM Express over Fabrics FC host driver"
0064 depends on BLOCK
0065 depends on HAS_DMA
0066 select NVME_FABRICS
0067 select SG_POOL
0068 help
0069 This provides support for the NVMe over Fabrics protocol using
0070 the FC transport. This allows you to use remote block devices
0071 exported using the NVMe protocol set.
0072
0073 To configure a NVMe over Fabrics controller use the nvme-cli tool
0074 from https://github.com/linux-nvme/nvme-cli.
0075
0076 If unsure, say N.
0077
0078 config NVME_TCP
0079 tristate "NVM Express over Fabrics TCP host driver"
0080 depends on INET
0081 depends on BLOCK
0082 select NVME_FABRICS
0083 select CRYPTO
0084 select CRYPTO_CRC32C
0085 help
0086 This provides support for the NVMe over Fabrics protocol using
0087 the TCP transport. This allows you to use remote block devices
0088 exported using the NVMe protocol set.
0089
0090 To configure a NVMe over Fabrics controller use the nvme-cli tool
0091 from https://github.com/linux-nvme/nvme-cli.
0092
0093 If unsure, say N.
0094
0095 config NVME_AUTH
0096 bool "NVM Express over Fabrics In-Band Authentication"
0097 depends on NVME_CORE
0098 select NVME_COMMON
0099 select CRYPTO
0100 select CRYPTO_HMAC
0101 select CRYPTO_SHA256
0102 select CRYPTO_SHA512
0103 select CRYPTO_DH
0104 select CRYPTO_DH_RFC7919_GROUPS
0105 help
0106 This provides support for NVMe over Fabrics In-Band Authentication.
0107
0108 If unsure, say N.
0109
0110 config NVME_APPLE
0111 tristate "Apple ANS2 NVM Express host driver"
0112 depends on OF && BLOCK
0113 depends on APPLE_RTKIT && APPLE_SART
0114 depends on ARCH_APPLE || COMPILE_TEST
0115 select NVME_CORE
0116 help
0117 This provides support for the NVMe controller embedded in Apple SoCs
0118 such as the M1.
0119
0120 To compile this driver as a module, choose M here: the
0121 module will be called nvme-apple.