This creates an isolated layer around the container FD code and everything under it, including the VFIO iommu drivers. All this code is placed into container.c, along with the "struct vfio_container" to compartmentalize it. Future patches will provide an iommufd based layer that gives the same API as the container layer and choose which layer to go to based on how userspace operates. The patches continue to split up existing functions and finally the last patch just moves every function that is a "container" function to the new file and creates the global symbols to link them together. Cross-file container functions are prefixed with vfio_container_* for clarity. The last patch can be defered and queued during the merge window to manage conflicts. The earlier patches should be fine immediately conflicts wise. This is the last big series I have to enable basic iommufd functionality. As part of the iommufd series the entire container.c becomes conditionally compiled: https://github.com/jgunthorpe/linux/commits/vfio_iommufd This applies on top of the prior two series: Break up ioctl dispatch functions to one function per ioctl Remove private items from linux/vfio_pci_core.h Jason Gunthorpe (8): vfio: Add header guards and includes to drivers/vfio/vfio.h vfio: Rename __vfio_group_unset_container() vfio: Split the container logic into vfio_container_attach_group() vfio: Remove #ifdefs around CONFIG_VFIO_NOIOMMU vfio: Split out container code from the init/cleanup functions vfio: Rename vfio_ioctl_check_extension() vfio: Split the register_device ops call into functions vfio: Move container code into drivers/vfio/container.c drivers/vfio/Makefile | 1 + drivers/vfio/container.c | 680 +++++++++++++++++++++++++++++++++++++ drivers/vfio/vfio.h | 57 ++++ drivers/vfio/vfio_main.c | 709 ++------------------------------------- 4 files changed, 766 insertions(+), 681 deletions(-) create mode 100644 drivers/vfio/container.c base-commit: 456bc2e671af7852f8a028c8069906b6b6fa1ff9 -- 2.37.2