> 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