On 2015-11-10 03:18, Andy Lutomirski wrote: > On Mon, Nov 9, 2015 at 6:04 PM, Benjamin Herrenschmidt >> I thus go back to my original statement, it's a LOT easier to handle if >> the device itself is self describing, indicating whether it is set to >> bypass a host iommu or not. For L1->L2, well, that wouldn't be the >> first time qemu/VFIO plays tricks with the passed through device >> configuration space... > > Which leaves the special case of Xen, where even preexisting devices > don't bypass the IOMMU. Can we keep this specific to powerpc and > sparc? On x86, this problem is basically nonexistent, since the IOMMU > is properly self-describing. > > IOW, I think that on x86 we should assume that all virtio devices > honor the IOMMU.
>From the guest driver POV, that is OK because either there is no IOMMU to program (the current situation with qemu), there can be one that doesn't need it (the current situation with qemu and iommu=on) or there is (Xen) or will be (future qemu) one that requires it. > >> >> Note that the above can be solved via some kind of compromise: The >> device self describes the ability to honor the iommu, along with the >> property (or ACPI table entry) that indicates whether or not it does. >> >> IE. We could use the revision or ProgIf field of the config space for >> example. Or something in virtio config. If it's an "old" device, we >> know it always bypass. If it's a new device, we know it only bypasses >> if the corresponding property is in. I still would have to sort out the >> openbios case for mac among others but it's at least a workable >> direction. >> >> BTW. Don't you have a similar problem on x86 that today qemu claims >> that everything honors the iommu in ACPI ? > > Only on a single experimental configuration, and that can apparently > just be fixed going forward without any real problems being caused. BTW, I once tried to describe the current situation on QEMU x86 with IOMMU enabled via ACPI. While you can easily add IOMMU device exceptions to the static tables, the fun starts when considering device hotplug for virtio. Unless I missed some trick, ACPI doesn't seem like being designed for that level of flexibility. You would have to reserve a complete PCI bus, declare that one as not being IOMMU-governed, and then only add new virtio devices to that bus. Possible, but a lot of restrictions that existing management software would have to be aware of as well. Jan -- Siemens AG, Corporate Technology, CT RTC ITP SES-DE Corporate Competence Center Embedded Linux -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html