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 controls support for multipath access to NVMe 22 subsystems. If this option is enabled support for NVMe multipath 23 access is included in the kernel. If this option is disabled support 24 for NVMe multipath access is excluded from the kernel. When this 25 option is disabled each controller/namespace receives its 26 own /dev/nvmeXnY device entry and NVMe multipath access is 27 not supported. 28 29 If unsure, say Y. 30 31config NVME_VERBOSE_ERRORS 32 bool "NVMe verbose error reporting" 33 depends on NVME_CORE 34 help 35 This option enables verbose reporting for NVMe errors. The 36 error translation table will grow the kernel image size by 37 about 4 KB. 38 39config NVME_HWMON 40 bool "NVMe hardware monitoring" 41 depends on (NVME_CORE=y && HWMON=y) || (NVME_CORE=m && HWMON) 42 help 43 This provides support for NVMe hardware monitoring. If enabled, 44 a hardware monitoring device will be created for each NVMe drive 45 in the system. 46 47config NVME_FABRICS 48 select NVME_CORE 49 select NVME_KEYRING if NVME_TCP_TLS 50 tristate 51 52config NVME_RDMA 53 tristate "NVM Express over Fabrics RDMA host driver" 54 depends on INFINIBAND && INFINIBAND_ADDR_TRANS && BLOCK 55 select NVME_FABRICS 56 select SG_POOL 57 help 58 This provides support for the NVMe over Fabrics protocol using 59 the RDMA (Infiniband, RoCE, iWarp) transport. This allows you 60 to use remote block devices exported using the NVMe protocol set. 61 62 To configure a NVMe over Fabrics controller use the nvme-cli tool 63 from https://github.com/linux-nvme/nvme-cli. 64 65 If unsure, say N. 66 67config NVME_FC 68 tristate "NVM Express over Fabrics FC host driver" 69 depends on BLOCK 70 depends on HAS_DMA 71 select NVME_FABRICS 72 select SG_POOL 73 help 74 This provides support for the NVMe over Fabrics protocol using 75 the FC transport. This allows you to use remote block devices 76 exported using the NVMe protocol set. 77 78 To configure a NVMe over Fabrics controller use the nvme-cli tool 79 from https://github.com/linux-nvme/nvme-cli. 80 81 If unsure, say N. 82 83config NVME_TCP 84 tristate "NVM Express over Fabrics TCP host driver" 85 depends on INET 86 depends on BLOCK 87 select CRC32 88 select NET_CRC32C 89 select NVME_FABRICS 90 help 91 This provides support for the NVMe over Fabrics protocol using 92 the TCP transport. This allows you to use remote block devices 93 exported using the NVMe protocol set. 94 95 To configure a NVMe over Fabrics controller use the nvme-cli tool 96 from https://github.com/linux-nvme/nvme-cli. 97 98 If unsure, say N. 99 100config NVME_TCP_TLS 101 bool "NVMe over Fabrics TCP TLS encryption support" 102 depends on NVME_TCP 103 select NET_HANDSHAKE 104 select KEYS 105 select TLS 106 help 107 Enables TLS encryption for NVMe TCP using the netlink handshake API. 108 109 The TLS handshake daemon is available at 110 https://github.com/oracle/ktls-utils. 111 112 If unsure, say N. 113 114config NVME_HOST_AUTH 115 bool "NVMe over Fabrics In-Band Authentication in host side" 116 depends on NVME_CORE 117 select NVME_AUTH 118 select NVME_KEYRING 119 help 120 This provides support for NVMe over Fabrics In-Band Authentication in 121 host side. 122 123 If unsure, say N. 124 125config NVME_APPLE 126 tristate "Apple ANS2 NVM Express host driver" 127 depends on OF && BLOCK 128 depends on APPLE_RTKIT && APPLE_SART 129 depends on ARCH_APPLE || COMPILE_TEST 130 select NVME_CORE 131 help 132 This provides support for the NVMe controller embedded in Apple SoCs 133 such as the M1. 134 135 To compile this driver as a module, choose M here: the 136 module will be called nvme-apple. 137