This is a preview of the base work, towards VFIO support on ARM platforms with an IOMMU. It forms a base on to which to implement the functionality necessary to enable using device tree devices on ARM (and other platforms based on device trees) with VFIO. This patch series has been subjected to limited testing on the Arndale board (with the Exynos 5250 System MMU). More extensive testing will follow as more features are implemented. It depends on Cho KyongHo's patch series "iommu/exynos: Fixes and Enhancements of System MMU driver with DT", applied on a Linux 3.10.1 kernel, and also my own "iommu/exynos: add devices attached to the System MMU to an IOMMU group". Those patches are required at least in order to test the proposed module on Arndale. The API used is identical to the existing VFIO API that is also used with PCI devices. Only devices that include a basic set of IRQs and memory regions are targeted; devices with complicated relationships with other devices on the device tree are not taken into account at this stage. The following IOCTLs have been found to be working on the Arndale with no changes to VFIO: - VFIO_GET_API_VERSION - VFIO_CHECK_EXTENSION The TYPE1 fix proposed here enables the following IOCTLs: - VFIO_GROUP_GET_STATUS - VFIO_GROUP_SET_CONTAINER - VFIO_SET_IOMMU - VFIO_IOMMU_GET_INFO - VFIO_IOMMU_MAP_DMA The VFIO platform driver proposed here implements the following: - VFIO_GROUP_GET_DEVICE_FD - VFIO_DEVICE_GET_INFO - VFIO_DEVICE_GET_REGION_INFO - VFIO_DEVICE_GET_IRQ_INFO In addition, the VFIO platform driver implements the following through the VFIO device file descriptor: - MMAPing memory regions to the virtual address space of the VFIO user. - Read / write of memory regions directly through the file descriptor. What still needs to be done, includes: - IRQs / IRQFD support. - The API is not currently extended with device tree specific information. - Proper binding of the VFIO_DT driver to devices; currently to test the driver, one has to edit the device tree and add "vfio" to the compatible property. However Linux does not support OF drivers that can be dynamically bound to any device. - More extensive testing with a functioning device doing DMA. - QEMU / KVM support. Antonios Motakis (7): VFIO_IOMMU_TYPE1 workaround to build for platform devices Initial skeleton of VFIO support for Device Tree based devices Return info for device and its memory regions and interrupts VFIO: DT: Support MMAP of MMIO regions VFIO: DT: Read and write support for the device fd VFIO: Update documentation for VFIO_IOMMU_TYPE1 driver VFIO: VFIO_PLATFORM: Update documentation for platform specific devices Documentation/vfio.txt | 25 +++- drivers/vfio/Kconfig | 13 +- drivers/vfio/Makefile | 1 + drivers/vfio/vfio_iommu_type1.c | 22 ++- drivers/vfio/vfio_platform.c | 308 ++++++++++++++++++++++++++++++++++++++++ include/uapi/linux/vfio.h | 1 + 6 files changed, 361 insertions(+), 9 deletions(-) create mode 100644 drivers/vfio/vfio_platform.c -- 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html