Merge tag 'mm-nonmm-stable-2024-05-19-11-56' of git://git.kernel.org/pub/scm/linux...
[sfrench/cifs-2.6.git] / drivers / nvme / host / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 config NVME_CORE
3         tristate
4         select BLK_DEV_INTEGRITY_T10 if BLK_DEV_INTEGRITY
5
6 config 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
18 config 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
27 config 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
35 config 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
43 config NVME_FABRICS
44         select NVME_CORE
45         tristate
46
47 config 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
62 config 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
78 config 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
95 config 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
109 config 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
119 config 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.