On Mon, Aug 12, 2019 at 09:45:27AM +0200, Peter Xu wrote: > This is a RFC series. > > The VT-d code has some defects, one of them is that we cannot detect > the misuse of vIOMMU and vfio-pci early enough. > > For example, logically this is not allowed: > > -device intel-iommu,caching-mode=off \ > -device vfio-pci,host=05:00.0 > > Because the caching mode is required to make vfio-pci devices > functional. > > Previously we did this sanity check in vtd_iommu_notify_flag_changed() > as when the memory regions change their attributes. However that's > too late in most cases! Because the memory region layouts will only > change after IOMMU is enabled, and that's in most cases during the > guest OS boots. So when the configuration is wrong, we will only bail > out during the guest boots rather than simply telling the user before > QEMU starts. > > The same problem happens on device hotplug, say, when we have this: > > -device intel-iommu,caching-mode=off > > Then we do something like: > > (HMP) device_add vfio-pci,host=05:00.0,bus=pcie.1 > > If at that time the vIOMMU is enabled in the guest then the QEMU > process will simply quit directly due to this hotplug event. This is > a bit insane... > > This series tries to solve above two problems by introducing two > sanity checks upon these places separately: > > - machine done > - hotplug device > > This is a bit awkward but I hope this could be better than before. > There is of course other solutions like hard-code the check into > vfio-pci but I feel it even more unpretty. I didn't think out any > better way to do this, if there is please kindly shout out. > > Please have a look to see whether this would be acceptable, thanks.
Any more comment on this? Thanks, -- Peter Xu