On Sun, Dec 7, 2014 at 8:12 PM, Alex Williamson <alex.williamson@xxxxxxxxxx> wrote: > > On Thu, 2014-11-27 at 18:32 +0100, Antonios Motakis wrote: > > This patch series aims to implement VFIO support for platform devices that > > reside behind an IOMMU. Examples of such devices are devices behind an ARM > > SMMU, or behind a Samsung Exynos System MMU. > > > > The API used is based on 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 complex relationships with other devices on a device > > tree are not taken into account at this stage. > > > > This patch series may be applied on the following series/patches: > > - [PATCH] driver core: amba: add device binding path 'driver_override' > > - [PATCH v3 0/6] vfio: type1: support for ARM SMMUS with VFIO_IOMMU_TYPE1 > > > > A copy can be cloned from the branch vfio-platform-v10 at: > > git@xxxxxxxxxx:virtualopensystems/linux-kvm-arm.git > > Hi Antonios, > > Sorry for the delay in reviewing. Between this and your v3 0/6 series, > the only nits I have are: > > * 2/6 is unneeded, Will already provided a patch to enable type1 > on ARM that's currently in -next. That patch is easily dropped > with no modification to the series, no need to resend. > * 04/20 has a kasprintf() with unchecked return value. > > If you want to just send a new 04/20 with that trivial fix, that'd be > fine. Looks like I'll need to wait until Joerg's next branch pull is > accepted before I can merge these in. Thanks, Done. However if I'm not missing something, it seems this would still be blocked by the patch "driver core: amba: add device binding path 'driver_override'" (at least the AMBA part). Antonios > > Alex > > > Changes since v9: > > - Reworked the splitting of the patches that decouple virqfd from PCI > > - Some styling issues and typos > > - Removed superfluous includes > > - AMBA devices are now named vfio-amba- suffixed by the AMBA device id > > - Several other cleanups and fixes > > Changes since v8: > > - Separate irq handler for edge and level triggered interrupts > > - Mutex based lock for VFIO fd open/release > > - Fixed bug where the first region of a platform device wasn't exposed > > - Read only regions can be MMAPed only read only > > - Code cleanups > > Changes since v7: > > - Some initial placeholder functionality for PIO resources > > - Cleaned up code for IRQ triggering, masking and unmasking > > - Some functionality has been removed from this series and posted separately: > > - VFIO_IOMMU_TYPE1 support for ARM SMMUs > > - IOMMU NOEXEC patches > > - driver_override functionality for AMBA devices > > - Several fixes > > Changes since v6: > > - Integrated support for AMBA devices > > - Numerous cleanups and fixes > > Changes since v5: > > - Full eventfd support for IRQ masking and unmasking. > > - Changed IOMMU_EXEC to IOMMU_NOEXEC, along with related flags in VFIO. > > - Other fixes based on reviewer comments. > > Changes since v4: > > - Use static offsets for each region in the VFIO device fd > > - Include patch in the series for the ARM SMMU to expose IOMMU_EXEC > > availability via IOMMU_CAP_DMA_EXEC > > - Rebased on VFIO multi domain support: > > - IOMMU_EXEC is now available if at least one IOMMU in the container > > supports it > > - Expose IOMMU_EXEC if available via the capability VFIO_IOMMU_PROT_EXEC > > - Some bug fixes > > Changes since v3: > > - Use Kim Phillips' driver_probe_device() > > Changes since v2: > > - Fixed Read/Write and MMAP on device regions > > - Removed dependency on Device Tree > > - Interrupts support > > - Interrupt masking/unmasking > > - Automask level sensitive interrupts > > - Introduced VFIO_DMA_MAP_FLAG_EXEC > > - Code clean ups > > > > Antonios Motakis (20): > > vfio/platform: initial skeleton of VFIO support for platform devices > > vfio: platform: probe to devices on the platform bus > > vfio: platform: add the VFIO PLATFORM module to Kconfig > > vfio: amba: VFIO support for AMBA devices > > vfio: amba: add the VFIO for AMBA devices module to Kconfig > > vfio/platform: return info for bound device > > vfio/platform: return info for device memory mapped IO regions > > vfio/platform: read and write support for the device fd > > vfio/platform: support MMAP of MMIO regions > > vfio/platform: return IRQ info > > vfio/platform: initial interrupts support code > > vfio/platform: trigger an interrupt via eventfd > > vfio/platform: support for level sensitive interrupts > > vfio: add a vfio_ prefix to virqfd_enable and virqfd_disable and > > export > > vfio: virqfd: rename vfio_pci_virqfd_init and vfio_pci_virqfd_exit > > vfio: add local lock for virqfd instead of depending on VFIO PCI > > vfio: pass an opaque pointer on virqfd initialization > > vfio: move eventfd support code for VFIO_PCI to a separate file > > vfio: initialize the virqfd workqueue in VFIO generic code > > vfio/platform: implement IRQ masking/unmasking via an eventfd > > > > drivers/vfio/Kconfig | 1 + > > drivers/vfio/Makefile | 5 +- > > drivers/vfio/pci/vfio_pci.c | 8 - > > drivers/vfio/pci/vfio_pci_intrs.c | 238 +----------- > > drivers/vfio/pci/vfio_pci_private.h | 3 - > > drivers/vfio/platform/Kconfig | 19 + > > drivers/vfio/platform/Makefile | 8 + > > drivers/vfio/platform/vfio_amba.c | 110 ++++++ > > drivers/vfio/platform/vfio_platform.c | 103 +++++ > > drivers/vfio/platform/vfio_platform_common.c | 520 ++++++++++++++++++++++++++ > > drivers/vfio/platform/vfio_platform_irq.c | 331 ++++++++++++++++ > > drivers/vfio/platform/vfio_platform_private.h | 82 ++++ > > drivers/vfio/vfio.c | 8 + > > drivers/vfio/virqfd.c | 213 +++++++++++ > > include/linux/vfio.h | 27 ++ > > include/uapi/linux/vfio.h | 2 + > > 16 files changed, 1442 insertions(+), 236 deletions(-) > > create mode 100644 drivers/vfio/platform/Kconfig > > create mode 100644 drivers/vfio/platform/Makefile > > create mode 100644 drivers/vfio/platform/vfio_amba.c > > create mode 100644 drivers/vfio/platform/vfio_platform.c > > create mode 100644 drivers/vfio/platform/vfio_platform_common.c > > create mode 100644 drivers/vfio/platform/vfio_platform_irq.c > > create mode 100644 drivers/vfio/platform/vfio_platform_private.h > > create mode 100644 drivers/vfio/virqfd.c > > > > > _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm