VT-d: Do CLFLUSH after updating IRTE entries
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 1 Jul 2008 10:40:55 +0000 (11:40 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 1 Jul 2008 10:40:55 +0000 (11:40 +0100)
Like root, context and DMA remap page table, interrupt remap table
also needs CLFLUSH after any update.

Signed-off-by: Weidong Han <weidong.han@intel.com>
xen/drivers/passthrough/vtd/intremap.c

index 5654813b13693cf9d6a9e3b93d839a8483bd1774..42ff5572d6250353bd6af5d8038e3a8d94460a33 100644 (file)
@@ -153,6 +153,7 @@ static void ioapic_rte_to_remap_entry(struct iommu *iommu,
     }
 
     memcpy(iremap_entry, &new_ire, sizeof(struct iremap_entry));
+    iommu_flush_cache_entry(iremap_entry);
     iommu_flush_iec_index(iommu, 0, index);
     invalidate_sync(iommu);
 
@@ -378,6 +379,7 @@ static void msi_msg_to_remap_entry(
     remap_rte->data = 0;
 
     memcpy(iremap_entry, &new_ire, sizeof(struct iremap_entry));
+    iommu_flush_cache_entry(iremap_entry);
     iommu_flush_iec_index(iommu, 0, index);
     invalidate_sync(iommu);