On Fri, Jul 09, 2021 at 01:56:46PM +0100, Robin Murphy wrote: > On 2021-07-09 12:43, Wei Liu wrote: > > Microsoft Hypervisor provides a set of hypercalls to manage device > > domains. The root kernel should parse the DMAR so that it can program > > the IOMMU (with hypercalls) correctly. > > > > The DMAR code was designed to work with Intel IOMMU only. Add two more > > parameters to make it useful to Microsoft Hypervisor. Microsoft > > Hypervisor does not need the DMAR parsing code to allocate an Intel > > IOMMU structure; it also wishes to always reparse the DMAR table even > > after it has been parsed before. > > We've recently defined the VIOT table for describing paravirtualised IOMMUs > - would it make more sense to extend that to support the Microsoft > implementation than to abuse a hardware-specific table? Am I right in I searched for VIOT and believed I found the correct link https://lwn.net/Articles/859291/. My understanding is based on the reading of that series. VIOT is useful. I think it solves the problem for guests. It does not solve the problem we have though. The DMAR tables are not conjured up by some backend software running on the host side. They are the real tables provided by the firmware. The kernel here is part of the host setup, dealing with physical hardware. No matter how much I wish all vendors unified their tables, I don't see how that's going to happen for readily available servers. :-( > assuming said hypervisor isn't intended to only ever run on Intel hardware? Yes, that's correct. We also plan to add support AMD and ARM64. Wei.