VT-d: don't needlessly suppress page table sharing
authorJan Beulich <jbeulich@suse.com>
Fri, 26 Sep 2014 09:56:45 +0000 (11:56 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 26 Sep 2014 09:56:45 +0000 (11:56 +0200)
Despite the mid term goal being to do away with the sharing there's no
point in suppressing it in cases where it can be used now.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
xen/drivers/passthrough/vtd/iommu.c

index 042b882a71798f663dfcd097773b16b5b352f297..63038d9394493b776642e609f2abc4393e6597f0 100644 (file)
@@ -1805,7 +1805,7 @@ void iommu_pte_flush(struct domain *d, u64 gfn, u64 *pte,
     }
 }
 
-static int vtd_ept_page_compatible(struct iommu *iommu)
+static int __init vtd_ept_page_compatible(struct iommu *iommu)
 {
     u64 ept_cap, vtd_cap = iommu->cap;
 
@@ -1814,8 +1814,8 @@ static int vtd_ept_page_compatible(struct iommu *iommu)
     if ( rdmsr_safe(MSR_IA32_VMX_EPT_VPID_CAP, ept_cap) != 0 ) 
         return 0;
 
-    return ( ept_has_2mb(ept_cap) == cap_sps_2mb(vtd_cap) 
-             && ept_has_1gb(ept_cap) == cap_sps_1gb(vtd_cap) );
+    return (ept_has_2mb(ept_cap) && opt_hap_2mb) == cap_sps_2mb(vtd_cap) &&
+           (ept_has_1gb(ept_cap) && opt_hap_1gb) == cap_sps_1gb(vtd_cap);
 }
 
 /*