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. How to build that and provide backwards compat is an open question. Instead that thread went into blocking IMS on VM situations.. Jason