Updated to 2.6.32.27
/arch/x86/kernel/amd_iommu.c
blob:f0fa7a1782d59771207a795a274456653735768b -> blob:7cd33f75a69c4c44360528bc44b00418cb1f29de
--- arch/x86/kernel/amd_iommu.c
+++ arch/x86/kernel/amd_iommu.c
@@ -1688,6 +1688,7 @@ static void __unmap_single(struct amd_io
size_t size,
int dir)
{
+ dma_addr_t flush_addr;
dma_addr_t i, start;
unsigned int pages;
@@ -1695,6 +1696,7 @@ static void __unmap_single(struct amd_io
(dma_addr + size > dma_dom->aperture_size))
return;
+ flush_addr = dma_addr;
pages = iommu_num_pages(dma_addr, size, PAGE_SIZE);
dma_addr &= PAGE_MASK;
start = dma_addr;
@@ -1709,7 +1711,7 @@ static void __unmap_single(struct amd_io
dma_ops_free_addresses(dma_dom, dma_addr, pages);
if (amd_iommu_unmap_flush || dma_dom->need_flush) {
- iommu_flush_pages(iommu, dma_dom->domain.id, dma_addr, size);
+ iommu_flush_pages(iommu, dma_dom->domain.id, flush_addr, size);
dma_dom->need_flush = false;
}
}