Re: [RFC PATCH v2 0/7] VFIO for device tree based platform devices (work in progress)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 1, 2013 at 5:47 PM, Christoffer Dall
<christoffer.dall@xxxxxxxxxx> wrote:
> On Mon, Sep 30, 2013 at 05:28:36PM +0200, Antonios Motakis wrote:
>> 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.
>
> Which device did you access behind the system MMU?  I seem to recall
> someone telling me that only the GPU is behind the system MMU on
> Arndale.

Hello Christoffer,

Actually, on the Arndale you will find a few devices behind a SMMU,
including the MFC (codec) device, etc. I've tested MMAP and DMA
mapping functions for example, but the implementation is not yet
complete enough to fully use the device.

You can take a look into arch/arm/boot/dts/exynos5250.dtsi for devices
with an iommu entry. Unfortunately, the Arndale is not a very well
documented board with regards to its peripherals...

Ideally, we would have access to a device that is simple and
documented enough, in order to write a trivial user space VFIO driver
to verify functionality. In practice, our options for validation are
limited, until we can finally fully assign a device at least.

Antonios

>
>>
>> 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 kvm" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
> --
> Christoffer
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux