On Thu, May 24, 2018 at 08:27:04AM +1000, Benjamin Herrenschmidt wrote: > - First qemu doesn't know that the guest will switch to "secure mode" > in advance. There is no difference between a normal and a secure > partition until the partition does the magic UV call to "enter secure > mode" and qemu doesn't see any of it. So who can set the flag here ? > > - Second, when using VIRTIO_F_IOMMU_PLATFORM, we also make qemu (or > vhost) go through the emulated MMIO for every access to the guest, > which adds additional overhead.
Also this whole scheme is simply the wrong way around. No driver should opt out of the DMA API in general. For legacy reasons we might have to opt out of the dma API for some virtio cases due to qemu bugs, but this should never have been the default, but a quirk for the affected versions. We need to fix this now and make the dma ops bypass the quirk instead of the default, which will also solve the power issue.