1# SPDX-License-Identifier: GPL-2.0-only 2config NVME_CORE 3 tristate 4 5config BLK_DEV_NVME 6 tristate "NVM Express block device" 7 depends on PCI && BLOCK 8 select NVME_CORE 9 help 10 The NVM Express driver is for solid state drives directly 11 connected to the PCI or PCI Express bus. If you know you 12 don't have one of these, it is safe to answer N. 13 14 To compile this driver as a module, choose M here: the 15 module will be called nvme. 16 17config NVME_MULTIPATH 18 bool "NVMe multipath support" 19 depends on NVME_CORE 20 help 21 This option enables support for multipath access to NVMe 22 subsystems. If this option is enabled only a single 23 /dev/nvmeXnY device will show up for each NVMe namespace, 24 even if it is accessible through multiple controllers. 25 26config NVME_VERBOSE_ERRORS 27 bool "NVMe verbose error reporting" 28 depends on NVME_CORE 29 help 30 This option enables verbose reporting for NVMe errors. The 31 error translation table will grow the kernel image size by 32 about 4 KB. 33 34config NVME_HWMON 35 bool "NVMe hardware monitoring" 36 depends on (NVME_CORE=y && HWMON=y) || (NVME_CORE=m && HWMON) 37 help 38 This provides support for NVMe hardware monitoring. If enabled, 39 a hardware monitoring device will be created for each NVMe drive 40 in the system. 41 42config NVME_FABRICS 43 select NVME_CORE 44 tristate 45 46config NVME_RDMA 47 tristate "NVM Express over Fabrics RDMA host driver" 48 depends on INFINIBAND && INFINIBAND_ADDR_TRANS && BLOCK 49 select NVME_FABRICS 50 select SG_POOL 51 help 52 This provides support for the NVMe over Fabrics protocol using 53 the RDMA (Infiniband, RoCE, iWarp) transport. This allows you 54 to use remote block devices exported using the NVMe protocol set. 55 56 To configure a NVMe over Fabrics controller use the nvme-cli tool 57 from https://github.com/linux-nvme/nvme-cli. 58 59 If unsure, say N. 60 61config NVME_FC 62 tristate "NVM Express over Fabrics FC host driver" 63 depends on BLOCK 64 depends on HAS_DMA 65 select NVME_FABRICS 66 select SG_POOL 67 help 68 This provides support for the NVMe over Fabrics protocol using 69 the FC transport. This allows you to use remote block devices 70 exported using the NVMe protocol set. 71 72 To configure a NVMe over Fabrics controller use the nvme-cli tool 73 from https://github.com/linux-nvme/nvme-cli. 74 75 If unsure, say N. 76 77config NVME_TCP 78 tristate "NVM Express over Fabrics TCP host driver" 79 depends on INET 80 depends on BLOCK 81 select NVME_FABRICS 82 select CRYPTO 83 select CRYPTO_CRC32C 84 help 85 This provides support for the NVMe over Fabrics protocol using 86 the TCP transport. This allows you to use remote block devices 87 exported using the NVMe protocol set. 88 89 To configure a NVMe over Fabrics controller use the nvme-cli tool 90 from https://github.com/linux-nvme/nvme-cli. 91 92 If unsure, say N. 93 94config NVME_TCP_TLS 95 bool "NVMe over Fabrics TCP TLS encryption support" 96 depends on NVME_TCP 97 select NVME_KEYRING 98 select NET_HANDSHAKE 99 select KEYS 100 help 101 Enables TLS encryption for NVMe TCP using the netlink handshake API. 102 103 The TLS handshake daemon is availble at 104 https://github.com/oracle/ktls-utils. 105 106 If unsure, say N. 107 108config NVME_HOST_AUTH 109 bool "NVMe over Fabrics In-Band Authentication in host side" 110 depends on NVME_CORE 111 select NVME_AUTH 112 help 113 This provides support for NVMe over Fabrics In-Band Authentication in 114 host side. 115 116 If unsure, say N. 117 118config NVME_APPLE 119 tristate "Apple ANS2 NVM Express host driver" 120 depends on OF && BLOCK 121 depends on APPLE_RTKIT && APPLE_SART 122 depends on ARCH_APPLE || COMPILE_TEST 123 select NVME_CORE 124 help 125 This provides support for the NVMe controller embedded in Apple SoCs 126 such as the M1. 127 128 To compile this driver as a module, choose M here: the 129 module will be called nvme-apple. 130