KVM: VMX: Execute WBINVD to keep data consistency with assigned devices
authorSheng Yang <sheng@linux.intel.com>
Wed, 30 Jun 2010 04:25:15 +0000 (12:25 +0800)
committerAvi Kivity <avi@redhat.com>
Sun, 1 Aug 2010 07:47:21 +0000 (10:47 +0300)
commitf5f48ee15c2ee3e44cf429e34b16c6fa9b900246
tree75496197219d9aeedd3317fa007cc3b2e414c5da
parentcf3e3d3e19868ca01da163200bbfc687523df0fc
KVM: VMX: Execute WBINVD to keep data consistency with assigned devices

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.

Signed-off-by: Yaozu (Eddie) Dong <eddie.dong@intel.com>
Signed-off-by: Sheng Yang <sheng@linux.intel.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/emulate.c
arch/x86/kvm/svm.c
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.c