We had a call with those interested and/or working on vfio for platform devices.
Participants: Scott Wood, Varun Sethi, Bharat Bhushan, Peter Maydell, Santosh Shukla, Alex Williamson, Alexander Graf, Antonios Motakis, Christoffer Dall, Kim Phillips, Stuart Yoder Several aspects to vfio for platform devices: 1. IOMMU groups -iommu driver needs to register a bus notifier for the platform bus and create groups for relevant platform devices -Antonios is looking at this for several ARM IOMMUs -PAMU (Freescale) driver already does this 2. unbinding device from host PCI: echo 0000:06:0d.0 > /sys/bus/pci/devices/0000:06:0d.0/driver/unbind Platform: echo ffe101300.dma > /sys/bus/platform/devices/ffe101300.dma/driver/unbind -don't believe there are issues or work to do here 3. binding device to vfio-platform driver PCI: echo 1102 0002 > /sys/bus/pci/drivers/vfio-pci/new_id -this is probably the least understood issue-- platform drivers register themselves with the bus for a specific "name" string. That is matched with device tree "compatible" strings later to bind a device to a driver -we want is to have the vfio-platform driver to dynamically bind to a variety of platform devices previously unknown to vfio-platform -ideally unbinding and binding could be an atomic operation -Alex W pointed out that x86 could leverage this work so keep that in mind in what we design -Kim Phillips (Linaro) will start working on this 4. vfio kernel interface -exposes regions and interrupts to user space via FDs -there are 'info' ioctls that allow getting info about regions/interrupts such as size and type of interrupt -there is a proposed extension to the 'info' ioctls that provides device tree paths, allowing user space to coorelate resources with the device tree (https://lists.cs.columbia.edu/pipermail/kvmarm/2013-July/006237.html) 5. QEMU -some key tasks -interacts with vfio kernel interface -registers memslots -needs to dynamically get device hooked up to VM's platform bus, including IRQs -needs to generate device tree node -a key point: we don't believe that platform device passthru in QEMU can be solved in a completely generic way. There will need to be device specific code for each device type being passed through...to do things like generate device tree nodes -in general we expect a relatively small number of device types to be passed through to VMs -Alex Graf is working on dynamic creation of platform devices for the PPC e500 paravirt machine -see: http://lists.nongnu.org/archive/html/qemu-devel/2013-07/msg03614.html -first step is dynamically generating a virtual UART -that sets the stage to create and create vfio devices backed by real hardware There is a session at Linux Plumbers in a couple of weeks and further discussions will happen there. Regards, Stuart -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html