Skip to content

Commit

Permalink
iommu/amd: Initialize device table after dma_ops
Browse files Browse the repository at this point in the history
When dma_ops are initialized the unity mappings are
created. The init_device_table_dma() function makes sure DMA
from all devices is blocked by default. This opens a short
window in time where DMA to unity mapped regions is blocked
by the IOMMU. Make sure this does not happen by initializing
the device table after dma_ops.

Cc: stable@vger.kernel.org
Signed-off-by: Joerg Roedel <joro@8bytes.org>
  • Loading branch information
Joerg Roedel committed Feb 7, 2013
1 parent 88b62b9 commit f528d98
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions drivers/iommu/amd_iommu_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -1876,11 +1876,6 @@ static int amd_iommu_init_dma(void)
struct amd_iommu *iommu;
int ret;

init_device_table_dma();

for_each_iommu(iommu)
iommu_flush_all_caches(iommu);

if (iommu_pass_through)
ret = amd_iommu_init_passthrough();
else
Expand All @@ -1889,6 +1884,11 @@ static int amd_iommu_init_dma(void)
if (ret)
return ret;

init_device_table_dma();

for_each_iommu(iommu)
iommu_flush_all_caches(iommu);

amd_iommu_init_api();

amd_iommu_init_notifier();
Expand Down

0 comments on commit f528d98

Please sign in to comment.