mirror of
https://github.com/torvalds/linux.git
synced 2026-04-25 10:02:31 -04:00
The iommufd self test uses an xarray to store the pfns and their orders to emulate a page table. Make it act more like a real iommu driver by replacing the xarray with an iommupt based page table. The new AMDv1 mock format behaves similarly to the xarray. Add set_dirty() as a iommu_pt operation to allow the test suite to simulate HW dirty. Userspace can select between several formats including the normal AMDv1 format and a special MOCK_IOMMUPT_HUGE variation for testing huge page dirty tracking. To make the dirty tracking test work the page table must only store exactly 2M huge pages otherwise the logic the test uses fails. They cannot be broken up or combined. Aside from aligning the selftest with a real page table implementation, this helps test the iommupt code itself. Reviewed-by: Kevin Tian <kevin.tian@intel.com> Reviewed-by: Samiullah Khawaja <skhawaja@google.com> Tested-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com> Tested-by: Pasha Tatashin <pasha.tatashin@soleen.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
51 lines
1.6 KiB
Plaintext
51 lines
1.6 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
|
|
select IOMMUFD_DRIVER
|
|
default n
|
|
help
|
|
This is dangerous, do not enable unless running
|
|
tools/testing/selftests/iommu
|
|
endif
|