iommufd: Add kernel support for testing iommufd
authorJason Gunthorpe <jgg@nvidia.com>
Tue, 29 Nov 2022 20:29:39 +0000 (16:29 -0400)
committerJason Gunthorpe <jgg@nvidia.com>
Thu, 1 Dec 2022 00:16:49 +0000 (20:16 -0400)
commitf4b20bb34c83dceade5470288f48f94ce3598ada
tree914330be8795c745de283d8bd8b1314b36d2d5da
parentd624d6652a65ad4f47a58b8651a1ec1163bb81d3
iommufd: Add kernel support for testing iommufd

Provide a mock kernel module for the iommu_domain that allows it to run
without any HW and the mocking provides a way to directly validate that
the PFNs loaded into the iommu_domain are correct. This exposes the access
kAPI toward userspace to allow userspace to explore the functionality of
pages.c and io_pagetable.c

The mock also simulates the rare case of PAGE_SIZE > iommu page size as
the mock will operate at a 2K iommu page size. This allows exercising all
of the calculations to support this mismatch.

This is also intended to support syzkaller exploring the same space.

However, it is an unusually invasive config option to enable all of
this. The config option should not be enabled in a production kernel.

Link: https://lore.kernel.org/r/16-v6-a196d26f289e+11787-iommufd_jgg@nvidia.com
Tested-by: Matthew Rosato <mjrosato@linux.ibm.com> # s390
Tested-by: Eric Auger <eric.auger@redhat.com> # aarch64
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/iommu/iommufd/Kconfig
drivers/iommu/iommufd/Makefile
drivers/iommu/iommufd/device.c
drivers/iommu/iommufd/ioas.c
drivers/iommu/iommufd/iommufd_private.h
drivers/iommu/iommufd/iommufd_test.h [new file with mode: 0644]
drivers/iommu/iommufd/main.c
drivers/iommu/iommufd/pages.c
drivers/iommu/iommufd/selftest.c [new file with mode: 0644]
include/linux/iommufd.h