xref: /linux/drivers/nvme/host/Kconfig (revision 6d8854216ebb60959ddb6f4ea4123bd449ba6cf6)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2576d55d6SMing Linconfig NVME_CORE
3576d55d6SMing Lin	tristate
4576d55d6SMing Lin
557dacad5SJay Sternbergconfig BLK_DEV_NVME
657dacad5SJay Sternberg	tristate "NVM Express block device"
711feb18fSKeith Busch	depends on PCI && BLOCK
8576d55d6SMing Lin	select NVME_CORE
9a7f7f624SMasahiro Yamada	help
1057dacad5SJay Sternberg	  The NVM Express driver is for solid state drives directly
1157dacad5SJay Sternberg	  connected to the PCI or PCI Express bus.  If you know you
1257dacad5SJay Sternberg	  don't have one of these, it is safe to answer N.
1357dacad5SJay Sternberg
1457dacad5SJay Sternberg	  To compile this driver as a module, choose M here: the
1557dacad5SJay Sternberg	  module will be called nvme.
1644907332SChristoph Hellwig
1732acab31SChristoph Hellwigconfig NVME_MULTIPATH
1832acab31SChristoph Hellwig	bool "NVMe multipath support"
1932acab31SChristoph Hellwig	depends on NVME_CORE
20a7f7f624SMasahiro Yamada	help
2132c92814SJohn Meneghini	  This option controls support for multipath access to NVMe
2232c92814SJohn Meneghini	  subsystems. If this option is enabled support for NVMe multipath
2332c92814SJohn Meneghini	  access is included in the kernel. If this option is disabled support
2432c92814SJohn Meneghini	  for NVMe multipath access is excluded from the kernel. When this
2532c92814SJohn Meneghini	  option is disabled each controller/namespace receives its
2632c92814SJohn Meneghini	  own /dev/nvmeXnY device entry and NVMe multipath access is
2732c92814SJohn Meneghini	  not supported.
2832c92814SJohn Meneghini
2932c92814SJohn Meneghini	  If unsure, say Y.
3032acab31SChristoph Hellwig
31bd83fe6fSAlan Adamsonconfig NVME_VERBOSE_ERRORS
32bd83fe6fSAlan Adamson	bool "NVMe verbose error reporting"
33bd83fe6fSAlan Adamson	depends on NVME_CORE
34bd83fe6fSAlan Adamson	help
35bd83fe6fSAlan Adamson	   This option enables verbose reporting for NVMe errors. The
36bd83fe6fSAlan Adamson	   error translation table will grow the kernel image size by
37bd83fe6fSAlan Adamson	   about 4 KB.
38bd83fe6fSAlan Adamson
39400b6a7bSGuenter Roeckconfig NVME_HWMON
40400b6a7bSGuenter Roeck	bool "NVMe hardware monitoring"
41400b6a7bSGuenter Roeck	depends on (NVME_CORE=y && HWMON=y) || (NVME_CORE=m && HWMON)
42400b6a7bSGuenter Roeck	help
43400b6a7bSGuenter Roeck	  This provides support for NVMe hardware monitoring. If enabled,
44400b6a7bSGuenter Roeck	  a hardware monitoring device will be created for each NVMe drive
45400b6a7bSGuenter Roeck	  in the system.
46400b6a7bSGuenter Roeck
4707bfcd09SChristoph Hellwigconfig NVME_FABRICS
480866200eSSagi Grimberg	select NVME_CORE
492d5a333eSArnd Bergmann	select NVME_KEYRING if NVME_TCP_TLS
5007bfcd09SChristoph Hellwig	tristate
5171102307SChristoph Hellwig
5271102307SChristoph Hellwigconfig NVME_RDMA
5371102307SChristoph Hellwig	tristate "NVM Express over Fabrics RDMA host driver"
54533d1daeSArnd Bergmann	depends on INFINIBAND && INFINIBAND_ADDR_TRANS && BLOCK
5571102307SChristoph Hellwig	select NVME_FABRICS
5671102307SChristoph Hellwig	select SG_POOL
5771102307SChristoph Hellwig	help
5871102307SChristoph Hellwig	  This provides support for the NVMe over Fabrics protocol using
5971102307SChristoph Hellwig	  the RDMA (Infiniband, RoCE, iWarp) transport.  This allows you
6071102307SChristoph Hellwig	  to use remote block devices exported using the NVMe protocol set.
6171102307SChristoph Hellwig
6271102307SChristoph Hellwig	  To configure a NVMe over Fabrics controller use the nvme-cli tool
6371102307SChristoph Hellwig	  from https://github.com/linux-nvme/nvme-cli.
6471102307SChristoph Hellwig
6571102307SChristoph Hellwig	  If unsure, say N.
66e399441dSJames Smart
67e399441dSJames Smartconfig NVME_FC
68e399441dSJames Smart	tristate "NVM Express over Fabrics FC host driver"
69e399441dSJames Smart	depends on BLOCK
70e399441dSJames Smart	depends on HAS_DMA
71e399441dSJames Smart	select NVME_FABRICS
72e399441dSJames Smart	select SG_POOL
73e399441dSJames Smart	help
74e399441dSJames Smart	  This provides support for the NVMe over Fabrics protocol using
75e399441dSJames Smart	  the FC transport.  This allows you to use remote block devices
76e399441dSJames Smart	  exported using the NVMe protocol set.
77e399441dSJames Smart
78e399441dSJames Smart	  To configure a NVMe over Fabrics controller use the nvme-cli tool
79e399441dSJames Smart	  from https://github.com/linux-nvme/nvme-cli.
80e399441dSJames Smart
81e399441dSJames Smart	  If unsure, say N.
823f2304f8SSagi Grimberg
833f2304f8SSagi Grimbergconfig NVME_TCP
843f2304f8SSagi Grimberg	tristate "NVM Express over Fabrics TCP host driver"
853f2304f8SSagi Grimberg	depends on INET
86042a3eaaSSagi Grimberg	depends on BLOCK
87427fff9aSEric Biggers	select CRC32
88427fff9aSEric Biggers	select NET_CRC32C
893f2304f8SSagi Grimberg	select NVME_FABRICS
903f2304f8SSagi Grimberg	help
913f2304f8SSagi Grimberg	  This provides support for the NVMe over Fabrics protocol using
923f2304f8SSagi Grimberg	  the TCP transport.  This allows you to use remote block devices
933f2304f8SSagi Grimberg	  exported using the NVMe protocol set.
943f2304f8SSagi Grimberg
953f2304f8SSagi Grimberg	  To configure a NVMe over Fabrics controller use the nvme-cli tool
963f2304f8SSagi Grimberg	  from https://github.com/linux-nvme/nvme-cli.
973f2304f8SSagi Grimberg
983f2304f8SSagi Grimberg	  If unsure, say N.
995bd2927aSSven Peter
100be8e82caSHannes Reineckeconfig NVME_TCP_TLS
101be8e82caSHannes Reinecke	bool "NVMe over Fabrics TCP TLS encryption support"
102be8e82caSHannes Reinecke	depends on NVME_TCP
103be8e82caSHannes Reinecke	select NET_HANDSHAKE
104be8e82caSHannes Reinecke	select KEYS
10552198794SAlistair Francis	select TLS
106be8e82caSHannes Reinecke	help
107be8e82caSHannes Reinecke	  Enables TLS encryption for NVMe TCP using the netlink handshake API.
108be8e82caSHannes Reinecke
109*44e479d7SYi Zhang	  The TLS handshake daemon is available at
110be8e82caSHannes Reinecke	  https://github.com/oracle/ktls-utils.
111be8e82caSHannes Reinecke
112be8e82caSHannes Reinecke	  If unsure, say N.
113be8e82caSHannes Reinecke
114d6800634SHannes Reineckeconfig NVME_HOST_AUTH
11529ac4b2fSShin'ichiro Kawasaki	bool "NVMe over Fabrics In-Band Authentication in host side"
116f50fff73SHannes Reinecke	depends on NVME_CORE
117d6800634SHannes Reinecke	select NVME_AUTH
118e88a7595SHannes Reinecke	select NVME_KEYRING
119f50fff73SHannes Reinecke	help
12029ac4b2fSShin'ichiro Kawasaki	  This provides support for NVMe over Fabrics In-Band Authentication in
12129ac4b2fSShin'ichiro Kawasaki	  host side.
122f50fff73SHannes Reinecke
123f50fff73SHannes Reinecke	  If unsure, say N.
124f50fff73SHannes Reinecke
1255bd2927aSSven Peterconfig NVME_APPLE
1265bd2927aSSven Peter	tristate "Apple ANS2 NVM Express host driver"
1275bd2927aSSven Peter	depends on OF && BLOCK
1285bd2927aSSven Peter	depends on APPLE_RTKIT && APPLE_SART
1295bd2927aSSven Peter	depends on ARCH_APPLE || COMPILE_TEST
1305bd2927aSSven Peter	select NVME_CORE
1315bd2927aSSven Peter	help
1325bd2927aSSven Peter	  This provides support for the NVMe controller embedded in Apple SoCs
1335bd2927aSSven Peter	  such as the M1.
1345bd2927aSSven Peter
1355bd2927aSSven Peter	  To compile this driver as a module, choose M here: the
1365bd2927aSSven Peter	  module will be called nvme-apple.
137