On 14/08/17 09:27, Tian, Kevin wrote:
>> * First, since the IOMMU is paravirtualized, the device can expose some
>> properties of the physical topology to the guest, and let it allocate
>> resources more efficiently. For example, when the virtio-iommu manages
>> both physical and emulated endpoints, with different underlying IOMMUs,
>> we now have a way to describe multiple page and block granularities,
>> instead of forcing the guest to use the most restricted one for all
>> endpoints. This will most likely be in v0.5.
>
> emulated IOMMU has similar requirement, e.g. available PASID bits,
> address widths, etc. which may break guest usage if not aligned to
> physical limitation. Suppose we can introduce a general interface
> through VFIO for all vIOMMU incarnations.
A nice location for this kind of info would be sysfs, as discussed in the
SVM virtualization thread [1]. Properties of an IOMMU could be described
in /sys/class/iommu/<dev>. Properties of a PCI device are available in its
PASID/PRI capabilities. For platform devices we'll have to look at DT and
ACPI properties in /sys/firmware.
>> * Then on top of that, a major improvement will describe hardware
>> acceleration features available to the guest. There is what I call "Page
>> Table Handover" (or simply, from the host POV, "Nested"), the ability
>> for the guest to manipulate its own page tables instead of sending
>> MAP/UNMAP requests to the host. This, along with IO Page Fault
>> reporting, will also permit SVM virtualization on different platforms.
>
> what's your planned cadence for future versions? :-)
Hard to say, it depends on a number of things. I have various other tasks
eating up my bandwidth at the moment and I may have to considerably rework
this version depending on the feedback it gets. Ideally, I would like to
get the base driver merged and a proposal for hardware acceleration out by
the end of the year, but I obviously can't make any guarantee.
Thanks,
Jean
[1] https://lists.gnu.org/archive/html/qemu-devel/2017-07/msg05731.html