mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-11 17:10:13 +00:00
The selftest now depends on the AMDv1 page table, however the selftest
kconfig itself is just an sub-option of the main IOMMUFD module kconfig.
This means it cannot be modular and so kconfig allowed a modular
IOMMU_PT_AMDV1 with a built in IOMMUFD. This causes link failures:
ld: vmlinux.o: in function `mock_domain_alloc_pgtable.isra.0':
selftest.c:(.text+0x12e8ad3): undefined reference to `pt_iommu_amdv1_init'
ld: vmlinux.o: in function `BSWAP_SHUFB_CTL':
sha1-avx2-asm.o:(.rodata+0xaa36a8): undefined reference to `pt_iommu_amdv1_read_and_clear_dirty'
ld: sha1-avx2-asm.o:(.rodata+0xaa36f0): undefined reference to `pt_iommu_amdv1_map_pages'
ld: sha1-avx2-asm.o:(.rodata+0xaa36f8): undefined reference to `pt_iommu_amdv1_unmap_pages'
ld: sha1-avx2-asm.o:(.rodata+0xaa3720): undefined reference to `pt_iommu_amdv1_iova_to_phys'
Adjust the kconfig to disable IOMMUFD_TEST if IOMMU_PT_AMDV1 is incompatible.
Fixes: e93d5945ed5b ("iommufd: Change the selftest to use iommupt instead of xarray")
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202512210135.freQWpxa-lkp@intel.com/
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
52 lines
1.7 KiB
Plaintext
52 lines
1.7 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
config IOMMUFD_DRIVER_CORE
|
|
bool
|
|
default (IOMMUFD_DRIVER || IOMMUFD) if IOMMUFD!=n
|
|
|
|
config IOMMUFD
|
|
tristate "IOMMU Userspace API"
|
|
select INTERVAL_TREE
|
|
select INTERVAL_TREE_SPAN_ITER
|
|
select IOMMU_API
|
|
default n
|
|
help
|
|
Provides /dev/iommu, the user API to control the IOMMU subsystem as
|
|
it relates to managing IO page tables that point at user space memory.
|
|
|
|
If you don't know what to do here, say N.
|
|
|
|
if IOMMUFD
|
|
config IOMMUFD_VFIO_CONTAINER
|
|
bool "IOMMUFD provides the VFIO container /dev/vfio/vfio"
|
|
depends on VFIO_GROUP && !VFIO_CONTAINER
|
|
default VFIO_GROUP && !VFIO_CONTAINER
|
|
help
|
|
IOMMUFD will provide /dev/vfio/vfio instead of VFIO. This relies on
|
|
IOMMUFD providing compatibility emulation to give the same ioctls.
|
|
It provides an option to build a kernel with legacy VFIO components
|
|
removed.
|
|
|
|
IOMMUFD VFIO container emulation is known to lack certain features
|
|
of the native VFIO container, such as peer-to-peer
|
|
DMA mapping, PPC IOMMU support, as well as other potentially
|
|
undiscovered gaps. This option is currently intended for the
|
|
purpose of testing IOMMUFD with unmodified userspace supporting VFIO
|
|
and making use of the Type1 VFIO IOMMU backend. General purpose
|
|
enabling of this option is currently discouraged.
|
|
|
|
Unless testing IOMMUFD, say N here.
|
|
|
|
config IOMMUFD_TEST
|
|
bool "IOMMU Userspace API Test support"
|
|
depends on DEBUG_KERNEL
|
|
depends on FAULT_INJECTION
|
|
depends on RUNTIME_TESTING_MENU
|
|
depends on IOMMU_PT_AMDV1=y || IOMMUFD=IOMMU_PT_AMDV1
|
|
select DMA_SHARED_BUFFER
|
|
select IOMMUFD_DRIVER
|
|
default n
|
|
help
|
|
This is dangerous, do not enable unless running
|
|
tools/testing/selftests/iommu
|
|
endif
|