xref: /linux/drivers/nvme/target/Kconfig (revision 7d4e49a77d9930c69751b9192448fda6ff9100f1)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2a07b4970SChristoph Hellwig
3a07b4970SChristoph Hellwigconfig NVME_TARGET
4a07b4970SChristoph Hellwig	tristate "NVMe Target support"
5a07b4970SChristoph Hellwig	depends on BLOCK
6*4496e1c1SArnd Bergmann	select CONFIGFS_FS
765e2a74cSArnd Bergmann	select NVME_KEYRING if NVME_TARGET_TCP_TLS
865e2a74cSArnd Bergmann	select KEYS if NVME_TARGET_TCP_TLS
9a5dffbb6SEnrico Weigelt, metux IT consult	select SGL_ALLOC
10a07b4970SChristoph Hellwig	help
11a07b4970SChristoph Hellwig	  This enabled target side support for the NVMe protocol, that is
12a07b4970SChristoph Hellwig	  it allows the Linux kernel to implement NVMe subsystems and
13a07b4970SChristoph Hellwig	  controllers and export Linux block devices as NVMe namespaces.
14a07b4970SChristoph Hellwig	  You need to select at least one of the transports below to make this
15a07b4970SChristoph Hellwig	  functionality useful.
16a07b4970SChristoph Hellwig
17a07b4970SChristoph Hellwig	  To configure the NVMe target you probably want to use the nvmetcli
18a07b4970SChristoph Hellwig	  tool from http://git.infradead.org/users/hch/nvmetcli.git.
19a07b4970SChristoph Hellwig
20649fd414SHannes Reineckeconfig NVME_TARGET_DEBUGFS
21649fd414SHannes Reinecke        bool "NVMe Target debugfs support"
22649fd414SHannes Reinecke	depends on NVME_TARGET
23649fd414SHannes Reinecke	help
24649fd414SHannes Reinecke	  This enables debugfs support to display the connected controllers
25649fd414SHannes Reinecke	  to each subsystem
26649fd414SHannes Reinecke
27649fd414SHannes Reinecke	  If unsure, say N.
28649fd414SHannes Reinecke
29d9174c1aSChaitanya Kulkarniconfig NVME_TARGET_PASSTHRU
30d9174c1aSChaitanya Kulkarni	bool "NVMe Target Passthrough support"
31d9174c1aSChaitanya Kulkarni	depends on NVME_TARGET
32d9174c1aSChaitanya Kulkarni	depends on NVME_CORE=y || NVME_CORE=NVME_TARGET
33d9174c1aSChaitanya Kulkarni	help
34d9174c1aSChaitanya Kulkarni	  This enables target side NVMe passthru controller support for the
35d9174c1aSChaitanya Kulkarni	  NVMe Over Fabrics protocol. It allows for hosts to manage and
36d9174c1aSChaitanya Kulkarni	  directly access an actual NVMe controller residing on the target
379f20599cSColin Ian King	  side, including executing Vendor Unique Commands.
38d9174c1aSChaitanya Kulkarni
39d9174c1aSChaitanya Kulkarni	  If unsure, say N.
40d9174c1aSChaitanya Kulkarni
413a85a5deSChristoph Hellwigconfig NVME_TARGET_LOOP
423a85a5deSChristoph Hellwig	tristate "NVMe loopback device support"
436eae8c45SArnd Bergmann	depends on NVME_TARGET
443a85a5deSChristoph Hellwig	select NVME_FABRICS
453a85a5deSChristoph Hellwig	select SG_POOL
463a85a5deSChristoph Hellwig	help
473a85a5deSChristoph Hellwig	  This enables the NVMe loopback device support, which can be useful
483a85a5deSChristoph Hellwig	  to test NVMe host and target side features.
493a85a5deSChristoph Hellwig
50a07b4970SChristoph Hellwig	  If unsure, say N.
518f000cacSChristoph Hellwig
528f000cacSChristoph Hellwigconfig NVME_TARGET_RDMA
538f000cacSChristoph Hellwig	tristate "NVMe over Fabrics RDMA target support"
54533d1daeSArnd Bergmann	depends on INFINIBAND && INFINIBAND_ADDR_TRANS
556eae8c45SArnd Bergmann	depends on NVME_TARGET
5668c6e9cdSBart Van Assche	select SGL_ALLOC
578f000cacSChristoph Hellwig	help
588f000cacSChristoph Hellwig	  This enables the NVMe RDMA target support, which allows exporting NVMe
598f000cacSChristoph Hellwig	  devices over RDMA.
608f000cacSChristoph Hellwig
618f000cacSChristoph Hellwig	  If unsure, say N.
62c5343203SJames Smart
63c5343203SJames Smartconfig NVME_TARGET_FC
64c5343203SJames Smart	tristate "NVMe over Fabrics FC target driver"
65c5343203SJames Smart	depends on NVME_TARGET
66c5343203SJames Smart	depends on HAS_DMA
674442b56fSBart Van Assche	select SGL_ALLOC
68c5343203SJames Smart	help
69c5343203SJames Smart	  This enables the NVMe FC target support, which allows exporting NVMe
70c5343203SJames Smart	  devices over FC.
71c5343203SJames Smart
72c5343203SJames Smart	  If unsure, say N.
73c5343203SJames Smart
74475d0fe7SJames Smartconfig NVME_TARGET_FCLOOP
75475d0fe7SJames Smart	tristate "NVMe over Fabrics FC Transport Loopback Test driver"
76475d0fe7SJames Smart	depends on NVME_TARGET
77475d0fe7SJames Smart	select NVME_FABRICS
78475d0fe7SJames Smart	select SG_POOL
79475d0fe7SJames Smart	depends on NVME_FC
80475d0fe7SJames Smart	depends on NVME_TARGET_FC
81475d0fe7SJames Smart	help
82475d0fe7SJames Smart	  This enables the NVMe FC loopback test support, which can be useful
83475d0fe7SJames Smart	  to test NVMe-FC transport interfaces.
84475d0fe7SJames Smart
85475d0fe7SJames Smart	  If unsure, say N.
86872d26a3SSagi Grimberg
87872d26a3SSagi Grimbergconfig NVME_TARGET_TCP
88872d26a3SSagi Grimberg	tristate "NVMe over Fabrics TCP target support"
89872d26a3SSagi Grimberg	depends on INET
90872d26a3SSagi Grimberg	depends on NVME_TARGET
91872d26a3SSagi Grimberg	help
92872d26a3SSagi Grimberg	  This enables the NVMe TCP target support, which allows exporting NVMe
93872d26a3SSagi Grimberg	  devices over TCP.
94872d26a3SSagi Grimberg
95872d26a3SSagi Grimberg	  If unsure, say N.
96db1312ddSHannes Reinecke
97675b453eSHannes Reineckeconfig NVME_TARGET_TCP_TLS
98675b453eSHannes Reinecke	bool "NVMe over Fabrics TCP target TLS encryption support"
99675b453eSHannes Reinecke	depends on NVME_TARGET_TCP
100675b453eSHannes Reinecke	select NET_HANDSHAKE
101ac38b7efSAlistair Francis	select TLS
102675b453eSHannes Reinecke	help
103675b453eSHannes Reinecke	  Enables TLS encryption for the NVMe TCP target using the netlink handshake API.
104675b453eSHannes Reinecke
105675b453eSHannes Reinecke	  The TLS handshake daemon is available at
106675b453eSHannes Reinecke	  https://github.com/oracle/ktls-utils.
107675b453eSHannes Reinecke
108675b453eSHannes Reinecke	  If unsure, say N.
109675b453eSHannes Reinecke
110db1312ddSHannes Reineckeconfig NVME_TARGET_AUTH
11129ac4b2fSShin'ichiro Kawasaki	bool "NVMe over Fabrics In-band Authentication in target side"
112db1312ddSHannes Reinecke	depends on NVME_TARGET
113d6800634SHannes Reinecke	select NVME_AUTH
114db1312ddSHannes Reinecke	help
11529ac4b2fSShin'ichiro Kawasaki	  This enables support for NVMe over Fabrics In-band Authentication in
11629ac4b2fSShin'ichiro Kawasaki	  target side.
117db1312ddSHannes Reinecke
118db1312ddSHannes Reinecke	  If unsure, say N.
1190faa0fe6SDamien Le Moal
1200faa0fe6SDamien Le Moalconfig NVME_TARGET_PCI_EPF
1210faa0fe6SDamien Le Moal	tristate "NVMe PCI Endpoint Function target support"
1220faa0fe6SDamien Le Moal	depends on NVME_TARGET && PCI_ENDPOINT
1230faa0fe6SDamien Le Moal	depends on NVME_CORE=y || NVME_CORE=NVME_TARGET
1240faa0fe6SDamien Le Moal	help
1250faa0fe6SDamien Le Moal	  This enables the NVMe PCI Endpoint Function target driver support,
1260faa0fe6SDamien Le Moal	  which allows creating a NVMe PCI controller using an endpoint mode
1270faa0fe6SDamien Le Moal	  capable PCI controller.
1280faa0fe6SDamien Le Moal
1290faa0fe6SDamien Le Moal	  If unsure, say N.
130