On Tue, Nov 13, 2018 at 02:12:17PM +0800, Peter Xu wrote: > On Tue, Nov 13, 2018 at 01:45:44PM +0800, Yu Zhang wrote: > > [...] > > > > > Since at it, another thing I thought about is making sure the IOMMU > > > > capabilities will match between host and guest IOMMU, which I think > > > > this series has ignorred so far. E.g., when we're having assigned > > > > devices in the guest and with 5-level IOVA, we should make sure the > > > > host IOMMU supports 5-level as well before the guest starts since > > > > otherwise the shadow page synchronization could potentially fail when > > > > the requested IOVA address goes beyond 4-level. One simple solution > > > > is just to disable device assignment for now when we're with 57bits > > > > vIOMMU but I'm not sure whether that's what you want, especially you > > > > mentioned the DPDK case (who may use assigned devices). > > > > > > Ok I totally forgot that we don't even support any kind of check like > > > this before... So feel free to skip this comment if you want, or it > > > would be even nicer if you want to fix it as a whole. :) > > > > > > > Indeed. We have talked about this before. How about we focus on the 5-level > > extension for now, and solve the check issue in the future? I still do not > > have any clean solutions in mind. BTW, any suggestions on this issue? :) > > I started to remember our discussions, sorry I should remember them > earlier... :) > > The only thing in my mind (I think I also suggested the same thing > during that discussion, but I don't trust my memory any more...) is to > use sysfs. Say: > > 1. Scan /sys/class/iommu/dmarN for all the host IOMMUs, read cap of > each IOMMU from /sys/class/iommu/dmar0/intel-iommu/cap, > > 2. For each host iommu, scan /sys/class/iommu/dmarN/devices for all > the devices under each host IOMMU, then we can know which IOMMU > owns which device, > > 3. For each assigned device to the guest, we lookup the previous > information to know the mgaw for each host device, raise error > and stop QEMU from booting if any of the host device has less > level supported than the guest vIOMMU (possibly some more checks > in vtd_iommu_notify_flag_changed) > > (we still have some issue on vtd_iommu_notify_flag_changed since it's > only run until the first enablement of vIOMMU, so we'll only raise > the error during guest Linux boots with vIOMMU on. But that's another > issue)
Thanks for the explanation, Peter. You do have a better memory than I am.:) > > Regards, > > -- > Peter Xu > B.R. Yu