xref: /openbmc/linux/drivers/nvme/host/Kconfig (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2576d55d6SMing Linconfig NVME_CORE
3576d55d6SMing Lin	tristate
4a754bd5fSHerbert Xu	select BLK_DEV_INTEGRITY_T10 if BLK_DEV_INTEGRITY
5576d55d6SMing Lin
657dacad5SJay Sternbergconfig BLK_DEV_NVME
757dacad5SJay Sternberg	tristate "NVM Express block device"
811feb18fSKeith Busch	depends on PCI && BLOCK
9576d55d6SMing Lin	select NVME_CORE
10a7f7f624SMasahiro Yamada	help
1157dacad5SJay Sternberg	  The NVM Express driver is for solid state drives directly
1257dacad5SJay Sternberg	  connected to the PCI or PCI Express bus.  If you know you
1357dacad5SJay Sternberg	  don't have one of these, it is safe to answer N.
1457dacad5SJay Sternberg
1557dacad5SJay Sternberg	  To compile this driver as a module, choose M here: the
1657dacad5SJay Sternberg	  module will be called nvme.
1744907332SChristoph Hellwig
1832acab31SChristoph Hellwigconfig NVME_MULTIPATH
1932acab31SChristoph Hellwig	bool "NVMe multipath support"
2032acab31SChristoph Hellwig	depends on NVME_CORE
21a7f7f624SMasahiro Yamada	help
2232acab31SChristoph Hellwig	   This option enables support for multipath access to NVMe
2332acab31SChristoph Hellwig	   subsystems.  If this option is enabled only a single
24d399742cSGeert Uytterhoeven	   /dev/nvmeXnY device will show up for each NVMe namespace,
2532acab31SChristoph Hellwig	   even if it is accessible through multiple controllers.
2632acab31SChristoph Hellwig
27bd83fe6fSAlan Adamsonconfig NVME_VERBOSE_ERRORS
28bd83fe6fSAlan Adamson	bool "NVMe verbose error reporting"
29bd83fe6fSAlan Adamson	depends on NVME_CORE
30bd83fe6fSAlan Adamson	help
31bd83fe6fSAlan Adamson	   This option enables verbose reporting for NVMe errors. The
32bd83fe6fSAlan Adamson	   error translation table will grow the kernel image size by
33bd83fe6fSAlan Adamson	   about 4 KB.
34bd83fe6fSAlan Adamson
35400b6a7bSGuenter Roeckconfig NVME_HWMON
36400b6a7bSGuenter Roeck	bool "NVMe hardware monitoring"
37400b6a7bSGuenter Roeck	depends on (NVME_CORE=y && HWMON=y) || (NVME_CORE=m && HWMON)
38400b6a7bSGuenter Roeck	help
39400b6a7bSGuenter Roeck	  This provides support for NVMe hardware monitoring. If enabled,
40400b6a7bSGuenter Roeck	  a hardware monitoring device will be created for each NVMe drive
41400b6a7bSGuenter Roeck	  in the system.
42400b6a7bSGuenter Roeck
4307bfcd09SChristoph Hellwigconfig NVME_FABRICS
440866200eSSagi Grimberg	select NVME_CORE
4507bfcd09SChristoph Hellwig	tristate
4671102307SChristoph Hellwig
4771102307SChristoph Hellwigconfig NVME_RDMA
4871102307SChristoph Hellwig	tristate "NVM Express over Fabrics RDMA host driver"
49533d1daeSArnd Bergmann	depends on INFINIBAND && INFINIBAND_ADDR_TRANS && BLOCK
5071102307SChristoph Hellwig	select NVME_FABRICS
5171102307SChristoph Hellwig	select SG_POOL
5271102307SChristoph Hellwig	help
5371102307SChristoph Hellwig	  This provides support for the NVMe over Fabrics protocol using
5471102307SChristoph Hellwig	  the RDMA (Infiniband, RoCE, iWarp) transport.  This allows you
5571102307SChristoph Hellwig	  to use remote block devices exported using the NVMe protocol set.
5671102307SChristoph Hellwig
5771102307SChristoph Hellwig	  To configure a NVMe over Fabrics controller use the nvme-cli tool
5871102307SChristoph Hellwig	  from https://github.com/linux-nvme/nvme-cli.
5971102307SChristoph Hellwig
6071102307SChristoph Hellwig	  If unsure, say N.
61e399441dSJames Smart
62e399441dSJames Smartconfig NVME_FC
63e399441dSJames Smart	tristate "NVM Express over Fabrics FC host driver"
64e399441dSJames Smart	depends on BLOCK
65e399441dSJames Smart	depends on HAS_DMA
66e399441dSJames Smart	select NVME_FABRICS
67e399441dSJames Smart	select SG_POOL
68e399441dSJames Smart	help
69e399441dSJames Smart	  This provides support for the NVMe over Fabrics protocol using
70e399441dSJames Smart	  the FC transport.  This allows you to use remote block devices
71e399441dSJames Smart	  exported using the NVMe protocol set.
72e399441dSJames Smart
73e399441dSJames Smart	  To configure a NVMe over Fabrics controller use the nvme-cli tool
74e399441dSJames Smart	  from https://github.com/linux-nvme/nvme-cli.
75e399441dSJames Smart
76e399441dSJames Smart	  If unsure, say N.
773f2304f8SSagi Grimberg
783f2304f8SSagi Grimbergconfig NVME_TCP
793f2304f8SSagi Grimberg	tristate "NVM Express over Fabrics TCP host driver"
803f2304f8SSagi Grimberg	depends on INET
81042a3eaaSSagi Grimberg	depends on BLOCK
823f2304f8SSagi Grimberg	select NVME_FABRICS
83af5ad178SNecip Fazil Yildiran	select CRYPTO
8479fd751dSMinwoo Im	select CRYPTO_CRC32C
853f2304f8SSagi Grimberg	help
863f2304f8SSagi Grimberg	  This provides support for the NVMe over Fabrics protocol using
873f2304f8SSagi Grimberg	  the TCP transport.  This allows you to use remote block devices
883f2304f8SSagi Grimberg	  exported using the NVMe protocol set.
893f2304f8SSagi Grimberg
903f2304f8SSagi Grimberg	  To configure a NVMe over Fabrics controller use the nvme-cli tool
913f2304f8SSagi Grimberg	  from https://github.com/linux-nvme/nvme-cli.
923f2304f8SSagi Grimberg
933f2304f8SSagi Grimberg	  If unsure, say N.
945bd2927aSSven Peter
95f50fff73SHannes Reineckeconfig NVME_AUTH
96f50fff73SHannes Reinecke	bool "NVM Express over Fabrics In-Band Authentication"
97f50fff73SHannes Reinecke	depends on NVME_CORE
98f50fff73SHannes Reinecke	select NVME_COMMON
99f50fff73SHannes Reinecke	select CRYPTO
100f50fff73SHannes Reinecke	select CRYPTO_HMAC
101f50fff73SHannes Reinecke	select CRYPTO_SHA256
102f50fff73SHannes Reinecke	select CRYPTO_SHA512
103*b61775d1SHannes Reinecke	select CRYPTO_DH
104*b61775d1SHannes Reinecke	select CRYPTO_DH_RFC7919_GROUPS
105f50fff73SHannes Reinecke	help
106f50fff73SHannes Reinecke	  This provides support for NVMe over Fabrics In-Band Authentication.
107f50fff73SHannes Reinecke
108f50fff73SHannes Reinecke	  If unsure, say N.
109f50fff73SHannes Reinecke
1105bd2927aSSven Peterconfig NVME_APPLE
1115bd2927aSSven Peter	tristate "Apple ANS2 NVM Express host driver"
1125bd2927aSSven Peter	depends on OF && BLOCK
1135bd2927aSSven Peter	depends on APPLE_RTKIT && APPLE_SART
1145bd2927aSSven Peter	depends on ARCH_APPLE || COMPILE_TEST
1155bd2927aSSven Peter	select NVME_CORE
1165bd2927aSSven Peter	help
1175bd2927aSSven Peter	  This provides support for the NVMe controller embedded in Apple SoCs
1185bd2927aSSven Peter	  such as the M1.
1195bd2927aSSven Peter
1205bd2927aSSven Peter	  To compile this driver as a module, choose M here: the
1215bd2927aSSven Peter	  module will be called nvme-apple.
122