Re: [PATCH 0/8][v2] MSI-X mask emulation support for assigned device

Alex Williamson
2010-10-20T15:12:41Z

On Wed, 2010-10-20 at 16:58 +0200, Michael S. Tsirkin wrote:
> On Wed, Oct 20, 2010 at 08:58:38AM -0600, Alex Williamson wrote:
> > On Wed, 2010-10-20 at 15:43 +0200, Michael S. Tsirkin wrote:
> > > On Wed, Oct 20, 2010 at 12:59:42PM +0200, Avi Kivity wrote:
> > > > How far away is vfio? If it's merged soon, we might avoid making
> > > > changes to the old assigned device infrastructure and instead update
> > > > vfio.
> > >
> > > Hard to be sure, hopefully 2.6.38 material.
> > >
> > > Some issues off the top of my head are
> > > - readonly/virtualized table correctness
> > > hopefully will start converging now that
> > > we are switching to standard registers from pci_regs.h
> > > - work out some capability negotiation mechanism so userspace/kernel
> > > can detect bug fixes/missing features and recover or fail gracefully
> > > - with multiple assigned devices in a guest:
> > > I don't think we have figured out how do they share an iommu context
> >
> > A single UIOMMU fd can be used for multiple devices. The code I wrote
> > supports this, but it's really only meant to support a uiommufd passed
> > via the command line for libvirt usage. Since libvirt doesn't yet
> > support vfio, it's never been tested.
>
> I think there was some issue that programming was
> done through vfio fd and got lost if you try to hot unplug
> device which programmed it. Maybe I'm wrong ...

Hasn't been tested, so bugs are probably. Sounds fixable though.
Sharing an IOMMU context is at least part of the design.

> > > - maybe: reset handling (flr support) - need to look a it
> >
> > I'd add that for the qemu vfio driver, we need to work out the KVM
> > interrupt optimizations, otherwise we suffer extra latency vs current
> > code.
>
> You see this in some benchmark?

I haven't done any formal benchmarks on VFIO, but I recall that while
both can achieve line rate on a 1G link, VFIO currently requires more
CPU to do so. Bouncing interrupts through QEMU seems like an obvious
candidate for that. Thanks,

Alex