mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-25 19:38:44 +00:00

Configfs can be configured as a loadable module, which causes a link-time
failure for dm-crypt crash dump support:
crash_dump_dm_crypt.c:(.text+0x3a4): undefined reference to `config_item_init_type_name'
aarch64-linux-ld: kernel/crash_dump_dm_crypt.o: in function `configfs_dmcrypt_keys_init':
crash_dump_dm_crypt.c:(.init.text+0x90): undefined reference to `config_group_init'
aarch64-linux-ld: crash_dump_dm_crypt.c:(.init.text+0xb4): undefined reference to `configfs_register_subsystem'
aarch64-linux-ld: crash_dump_dm_crypt.c:(.init.text+0xd8): undefined reference to `configfs_unregister_subsystem'
This could be avoided with a dependency on CONFIGFS_FS=y, but the
dependency has an additional problem of causing Kconfig dependency loops
since most other uses select the symbol.
Using a simple 'select CONFIGFS_FS' here in turn fails with
CONFIG_DM_CRYPT=m, because that still only causes configfs to be a
loadable module.
The only version I found that fixes this reliably uses an additional
Kconfig symbol to ensure the 'select' actually turns on configfs as
builtin, with two additional changes to avoid dependency loops with nvme
and sysfs.
There is no compile-time dependency between configfs and sysfs, so
selecting configfs from a driver with sysfs disabled does not cause link
failures, only the default /sys/kernel/config mount point will not be
created.
Link: https://lkml.kernel.org/r/20250521160359.2132363-1-arnd@kernel.org
Fixes: 6b23858fd63b ("crash_dump: make dm crypt keys persist for the kdump kernel")
Fixes: 1fb4704084
("nvme-loop: add configfs dependency")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Andreas Hindborg <a.hindborg@kernel.org>
Cc: Breno Leitao <leitao@debian.org>
Cc: Chaitanya Kulkarni <kch@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Coiby Xu <coxu@redhat.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
130 lines
3.6 KiB
Plaintext
130 lines
3.6 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
config NVME_TARGET
|
|
tristate "NVMe Target support"
|
|
depends on BLOCK
|
|
select CONFIGFS_FS
|
|
select NVME_KEYRING if NVME_TARGET_TCP_TLS
|
|
select KEYS if NVME_TARGET_TCP_TLS
|
|
select SGL_ALLOC
|
|
help
|
|
This enabled target side support for the NVMe protocol, that is
|
|
it allows the Linux kernel to implement NVMe subsystems and
|
|
controllers and export Linux block devices as NVMe namespaces.
|
|
You need to select at least one of the transports below to make this
|
|
functionality useful.
|
|
|
|
To configure the NVMe target you probably want to use the nvmetcli
|
|
tool from http://git.infradead.org/users/hch/nvmetcli.git.
|
|
|
|
config NVME_TARGET_DEBUGFS
|
|
bool "NVMe Target debugfs support"
|
|
depends on NVME_TARGET
|
|
help
|
|
This enables debugfs support to display the connected controllers
|
|
to each subsystem
|
|
|
|
If unsure, say N.
|
|
|
|
config NVME_TARGET_PASSTHRU
|
|
bool "NVMe Target Passthrough support"
|
|
depends on NVME_TARGET
|
|
depends on NVME_CORE=y || NVME_CORE=NVME_TARGET
|
|
help
|
|
This enables target side NVMe passthru controller support for the
|
|
NVMe Over Fabrics protocol. It allows for hosts to manage and
|
|
directly access an actual NVMe controller residing on the target
|
|
side, including executing Vendor Unique Commands.
|
|
|
|
If unsure, say N.
|
|
|
|
config NVME_TARGET_LOOP
|
|
tristate "NVMe loopback device support"
|
|
depends on NVME_TARGET
|
|
select NVME_FABRICS
|
|
select SG_POOL
|
|
help
|
|
This enables the NVMe loopback device support, which can be useful
|
|
to test NVMe host and target side features.
|
|
|
|
If unsure, say N.
|
|
|
|
config NVME_TARGET_RDMA
|
|
tristate "NVMe over Fabrics RDMA target support"
|
|
depends on INFINIBAND && INFINIBAND_ADDR_TRANS
|
|
depends on NVME_TARGET
|
|
select SGL_ALLOC
|
|
help
|
|
This enables the NVMe RDMA target support, which allows exporting NVMe
|
|
devices over RDMA.
|
|
|
|
If unsure, say N.
|
|
|
|
config NVME_TARGET_FC
|
|
tristate "NVMe over Fabrics FC target driver"
|
|
depends on NVME_TARGET
|
|
depends on HAS_DMA
|
|
select SGL_ALLOC
|
|
help
|
|
This enables the NVMe FC target support, which allows exporting NVMe
|
|
devices over FC.
|
|
|
|
If unsure, say N.
|
|
|
|
config NVME_TARGET_FCLOOP
|
|
tristate "NVMe over Fabrics FC Transport Loopback Test driver"
|
|
depends on NVME_TARGET
|
|
select NVME_FABRICS
|
|
select SG_POOL
|
|
depends on NVME_FC
|
|
depends on NVME_TARGET_FC
|
|
help
|
|
This enables the NVMe FC loopback test support, which can be useful
|
|
to test NVMe-FC transport interfaces.
|
|
|
|
If unsure, say N.
|
|
|
|
config NVME_TARGET_TCP
|
|
tristate "NVMe over Fabrics TCP target support"
|
|
depends on INET
|
|
depends on NVME_TARGET
|
|
help
|
|
This enables the NVMe TCP target support, which allows exporting NVMe
|
|
devices over TCP.
|
|
|
|
If unsure, say N.
|
|
|
|
config NVME_TARGET_TCP_TLS
|
|
bool "NVMe over Fabrics TCP target TLS encryption support"
|
|
depends on NVME_TARGET_TCP
|
|
select NET_HANDSHAKE
|
|
select TLS
|
|
help
|
|
Enables TLS encryption for the NVMe TCP target using the netlink handshake API.
|
|
|
|
The TLS handshake daemon is available at
|
|
https://github.com/oracle/ktls-utils.
|
|
|
|
If unsure, say N.
|
|
|
|
config NVME_TARGET_AUTH
|
|
bool "NVMe over Fabrics In-band Authentication in target side"
|
|
depends on NVME_TARGET
|
|
select NVME_AUTH
|
|
help
|
|
This enables support for NVMe over Fabrics In-band Authentication in
|
|
target side.
|
|
|
|
If unsure, say N.
|
|
|
|
config NVME_TARGET_PCI_EPF
|
|
tristate "NVMe PCI Endpoint Function target support"
|
|
depends on NVME_TARGET && PCI_ENDPOINT
|
|
depends on NVME_CORE=y || NVME_CORE=NVME_TARGET
|
|
help
|
|
This enables the NVMe PCI Endpoint Function target driver support,
|
|
which allows creating a NVMe PCI controller using an endpoint mode
|
|
capable PCI controller.
|
|
|
|
If unsure, say N.
|