xref: /linux/drivers/nvme/target/Kconfig (revision 1cbfb828e05171ca2dd77b5988d068e6872480fe)
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
6a07b4970SChristoph Hellwig	depends on 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
101675b453eSHannes Reinecke	help
102675b453eSHannes Reinecke	  Enables TLS encryption for the NVMe TCP target using the netlink handshake API.
103675b453eSHannes Reinecke
104675b453eSHannes Reinecke	  The TLS handshake daemon is available at
105675b453eSHannes Reinecke	  https://github.com/oracle/ktls-utils.
106675b453eSHannes Reinecke
107675b453eSHannes Reinecke	  If unsure, say N.
108675b453eSHannes Reinecke
109db1312ddSHannes Reineckeconfig NVME_TARGET_AUTH
11029ac4b2fSShin'ichiro Kawasaki	bool "NVMe over Fabrics In-band Authentication in target side"
111db1312ddSHannes Reinecke	depends on NVME_TARGET
112d6800634SHannes Reinecke	select NVME_AUTH
113db1312ddSHannes Reinecke	help
11429ac4b2fSShin'ichiro Kawasaki	  This enables support for NVMe over Fabrics In-band Authentication in
11529ac4b2fSShin'ichiro Kawasaki	  target side.
116db1312ddSHannes Reinecke
117db1312ddSHannes Reinecke	  If unsure, say N.
118*0faa0fe6SDamien Le Moal
119*0faa0fe6SDamien Le Moalconfig NVME_TARGET_PCI_EPF
120*0faa0fe6SDamien Le Moal	tristate "NVMe PCI Endpoint Function target support"
121*0faa0fe6SDamien Le Moal	depends on NVME_TARGET && PCI_ENDPOINT
122*0faa0fe6SDamien Le Moal	depends on NVME_CORE=y || NVME_CORE=NVME_TARGET
123*0faa0fe6SDamien Le Moal	help
124*0faa0fe6SDamien Le Moal	  This enables the NVMe PCI Endpoint Function target driver support,
125*0faa0fe6SDamien Le Moal	  which allows creating a NVMe PCI controller using an endpoint mode
126*0faa0fe6SDamien Le Moal	  capable PCI controller.
127*0faa0fe6SDamien Le Moal
128*0faa0fe6SDamien Le Moal	  If unsure, say N.
129