xref: /linux/drivers/nvme/host/Kconfig (revision e9f5f44a)
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