xref: /linux/drivers/nvme/host/Kconfig (revision 72bea132f3680ee51e7ed2cee62892b6f5121909)
1# SPDX-License-Identifier: GPL-2.0-only
2config NVME_CORE
3	tristate
4	select BLK_DEV_INTEGRITY_T10 if BLK_DEV_INTEGRITY
5
6config BLK_DEV_NVME
7	tristate "NVM Express block device"
8	depends on PCI && BLOCK
9	select NVME_CORE
10	help
11	  The NVM Express driver is for solid state drives directly
12	  connected to the PCI or PCI Express bus.  If you know you
13	  don't have one of these, it is safe to answer N.
14
15	  To compile this driver as a module, choose M here: the
16	  module will be called nvme.
17
18config NVME_MULTIPATH
19	bool "NVMe multipath support"
20	depends on NVME_CORE
21	help
22	   This option enables support for multipath access to NVMe
23	   subsystems.  If this option is enabled only a single
24	   /dev/nvmeXnY device will show up for each NVMe namespace,
25	   even if it is accessible through multiple controllers.
26
27config NVME_VERBOSE_ERRORS
28	bool "NVMe verbose error reporting"
29	depends on NVME_CORE
30	help
31	   This option enables verbose reporting for NVMe errors. The
32	   error translation table will grow the kernel image size by
33	   about 4 KB.
34
35config NVME_HWMON
36	bool "NVMe hardware monitoring"
37	depends on (NVME_CORE=y && HWMON=y) || (NVME_CORE=m && HWMON)
38	help
39	  This provides support for NVMe hardware monitoring. If enabled,
40	  a hardware monitoring device will be created for each NVMe drive
41	  in the system.
42
43config NVME_FABRICS
44	select NVME_CORE
45	tristate
46
47config NVME_RDMA
48	tristate "NVM Express over Fabrics RDMA host driver"
49	depends on INFINIBAND && INFINIBAND_ADDR_TRANS && BLOCK
50	select NVME_FABRICS
51	select SG_POOL
52	help
53	  This provides support for the NVMe over Fabrics protocol using
54	  the RDMA (Infiniband, RoCE, iWarp) transport.  This allows you
55	  to use remote block devices exported using the NVMe protocol set.
56
57	  To configure a NVMe over Fabrics controller use the nvme-cli tool
58	  from https://github.com/linux-nvme/nvme-cli.
59
60	  If unsure, say N.
61
62config NVME_FC
63	tristate "NVM Express over Fabrics FC host driver"
64	depends on BLOCK
65	depends on HAS_DMA
66	select NVME_FABRICS
67	select SG_POOL
68	help
69	  This provides support for the NVMe over Fabrics protocol using
70	  the FC transport.  This allows you to use remote block devices
71	  exported using the NVMe protocol set.
72
73	  To configure a NVMe over Fabrics controller use the nvme-cli tool
74	  from https://github.com/linux-nvme/nvme-cli.
75
76	  If unsure, say N.
77
78config NVME_TCP
79	tristate "NVM Express over Fabrics TCP host driver"
80	depends on INET
81	depends on BLOCK
82	select NVME_FABRICS
83	select CRYPTO
84	select CRYPTO_CRC32C
85	help
86	  This provides support for the NVMe over Fabrics protocol using
87	  the TCP transport.  This allows you to use remote block devices
88	  exported using the NVMe protocol set.
89
90	  To configure a NVMe over Fabrics controller use the nvme-cli tool
91	  from https://github.com/linux-nvme/nvme-cli.
92
93	  If unsure, say N.
94
95config NVME_TCP_TLS
96	bool "NVMe over Fabrics TCP TLS encryption support"
97	depends on NVME_TCP
98	select NVME_KEYRING
99	select NET_HANDSHAKE
100	select KEYS
101	help
102	  Enables TLS encryption for NVMe TCP using the netlink handshake API.
103
104	  The TLS handshake daemon is availble at
105	  https://github.com/oracle/ktls-utils.
106
107	  If unsure, say N.
108
109config NVME_HOST_AUTH
110	bool "NVMe over Fabrics In-Band Authentication in host side"
111	depends on NVME_CORE
112	select NVME_AUTH
113	help
114	  This provides support for NVMe over Fabrics In-Band Authentication in
115	  host side.
116
117	  If unsure, say N.
118
119config NVME_APPLE
120	tristate "Apple ANS2 NVM Express host driver"
121	depends on OF && BLOCK
122	depends on APPLE_RTKIT && APPLE_SART
123	depends on ARCH_APPLE || COMPILE_TEST
124	select NVME_CORE
125	help
126	  This provides support for the NVMe controller embedded in Apple SoCs
127	  such as the M1.
128
129	  To compile this driver as a module, choose M here: the
130	  module will be called nvme-apple.
131