On Tue, Jun 29, 2010 at 06:44:25AM -0400, Avi Kivity wrote: > On 06/29/2010 01:14 PM, Roedel, Joerg wrote: > > On Mon, Jun 28, 2010 at 11:16:59PM -0400, Sheng Yang wrote: > > > >> Some guest device driver may leverage the "Non-Snoop" I/O, and explicitly > >> WBINVD or CLFLUSH to a RAM space. Since migration may occur before WBINVD or > >> CLFLUSH, we need to maintain data consistency either by: > >> 1: flushing cache (wbinvd) when the guest is scheduled out if there is no > >> wbinvd exit, or > >> 2: execute wbinvd on all dirty physical CPUs when guest wbinvd exits. > >> > > Sorry for jumping in late. This code is not required on AMD platforms > > because the io-page-tables for the AMD IOMMU have a FC bit (force > > coherent) that must just be set. The current code does not set this bit > > but I will prepare a patch for that. This wbinvd emulation code should > > be avoided where possible. > > > > Do you mean, KVM_IOMMU_CACHE_COHERENCY should be set for the AMD IOMMU? No, as far as I understand it the KVM_IOMMU_CACHE_COHERENCY flag is only there because there are VT-d IOMMUs that does not support the snoop force bit. In the AMD IOMMU case all hardware has this feature, the IOMMU driver just has to use it for IOMMU-API page-tables too. This is currently not the case. So this is only an IOMMU driver change. Joerg -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html