mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
VT-d: No need to emulate WBINVD when force snooping feature available
There is no cache coherency issue if VT-d engine's force snooping feature available. Signed-off-by: Sheng Yang <sheng@linux.intel.com>
This commit is contained in:
1 parent
093e295b3c
commit
34b9ec5289
2 files changed
+6
-1
No files matched your search
@@ -1064,8 +1064,10 @@ void vmx_do_resume(struct vcpu *v)
|
||||
* 1: flushing cache (wbinvd) when the guest is scheduled out if
|
||||
* there is no wbinvd exit, or
|
||||
* 2: execute wbinvd on all dirty pCPUs when guest wbinvd exits.
|
||||
* If VT-d engine can force snooping, we don't need to do these.
|
||||
*/
|
||||
if ( has_arch_pdevs(v->domain) && !cpu_has_wbinvd_exiting )
|
||||
if ( has_arch_pdevs(v->domain) && !iommu_snoop
|
||||
&& !cpu_has_wbinvd_exiting )
|
||||
{
|
||||
int cpu = v->arch.hvm_vmx.active_cpu;
|
||||
if ( cpu != -1 )
|
||||
|
||||
@@ -2089,6 +2089,9 @@ static void vmx_wbinvd_intercept(void)
|
||||
if ( !has_arch_mmios(current->domain) )
|
||||
return;
|
||||
|
||||
if ( iommu_snoop )
|
||||
return;
|
||||
|
||||
if ( cpu_has_wbinvd_exiting )
|
||||
on_each_cpu(wbinvd_ipi, NULL, 1);
|
||||
else
|
||||
|
||||