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 NVME_FABRICS 88 select CRYPTO 89 select CRYPTO_CRC32C 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 help 106 Enables TLS encryption for NVMe TCP using the netlink handshake API. 107 108 The TLS handshake daemon is availble at 109 https://github.com/oracle/ktls-utils. 110 111 If unsure, say N. 112 113config NVME_HOST_AUTH 114 bool "NVMe over Fabrics In-Band Authentication in host side" 115 depends on NVME_CORE 116 select NVME_AUTH 117 select NVME_KEYRING 118 help 119 This provides support for NVMe over Fabrics In-Band Authentication in 120 host side. 121 122 If unsure, say N. 123 124config NVME_APPLE 125 tristate "Apple ANS2 NVM Express host driver" 126 depends on OF && BLOCK 127 depends on APPLE_RTKIT && APPLE_SART 128 depends on ARCH_APPLE || COMPILE_TEST 129 select NVME_CORE 130 help 131 This provides support for the NVMe controller embedded in Apple SoCs 132 such as the M1. 133 134 To compile this driver as a module, choose M here: the 135 module will be called nvme-apple. 136