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