AMD IOMMU: remove iommu tlb flush for non-present entries
authorWei Wang <wei.wang2@amd.com>
Mon, 22 Aug 2011 09:10:04 +0000 (10:10 +0100)
committerWei Wang <wei.wang2@amd.com>
Mon, 22 Aug 2011 09:10:04 +0000 (10:10 +0100)
Fixes dom0 boot on some systems.

Signed-off-by: Wei Wang <wei.wang2@amd.com>
xen/drivers/passthrough/amd/iommu_map.c

index ea07aaed637e1a16129aac8e23f2e659822ebbad..9effc61c8fa2324d8ae3777520fa6ef3dea54d91 100644 (file)
@@ -796,7 +796,10 @@ int amd_iommu_map_page(struct domain *d, unsigned long gfn, unsigned long mfn,
     if ( !need_flush )
         goto out;
 
-    amd_iommu_flush_pages(d, gfn, 0);
+    /* 4K mapping for PV guests never changes, 
+     * no need to flush if we trust non-present bits */
+    if ( is_hvm_domain(d) )
+        amd_iommu_flush_pages(d, gfn, 0);
 
     for ( merge_level = IOMMU_PAGING_MODE_LEVEL_2;
           merge_level <= hd->paging_mode; merge_level++ )