RE: Virtualizing MSI-X on IMS via VFIO

From: Tian, Kevin
Date: Wed Jun 23 2021 - 19:41:15 EST


> From: Jason Gunthorpe <jgg@xxxxxxxxxx>
> Sent: Thursday, June 24, 2021 12:41 AM
>
> On Wed, Jun 23, 2021 at 06:31:34PM +0200, Thomas Gleixner wrote:
>
> > So IMO creating a proper paravirt interface is the right approach. It
> > avoids _all_ of the trouble and will be necessary anyway once you want
> > to support devices which store the message/pasid in system memory and
> > not in on-device memory.
>
> I think this is basically where we got to in the other earlier
> discussion with using IMS natively in VMs - it can't be done
> generically without a new paravirt interface.
>
> The guest needs a paravirt interface to program the IOMMU to route MSI
> vectors to the guest's vAPIC and then the guest itself can deliver an
> addr/data pair directly to the HW.
>
> In this mode qemu would not emulate MSI at all so will avoid all the
> problems you identified.

No emulation for PF/VF.

But emulation might be required for mdev for two reasons:

1) the ims entries for mdevs are collapsed together;
2) there are other fields in ims entry which cannot allow guest to
control, e.g. PASID;

>
> How to build that and provide backwards compat is an open
> question. Instead that thread went into blocking IMS on VM situations..
>
> Jason