aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base
diff options
context:
space:
mode:
authorZhao, Yu <yu.zhao@intel.com>2009-02-13 17:55:49 +0800
committerDavid Woodhouse <David.Woodhouse@intel.com>2009-03-25 16:03:49 +0000
commitafeeb7cebbd223ffee303fd8de4ba97458b13581 (patch)
tree834419e2fffecbba9f1d5cf6acb3a8765206e438 /drivers/base
parentintel-iommu: Enable DMAR on 32-bit kernel. (diff)
downloadlinux-dev-afeeb7cebbd223ffee303fd8de4ba97458b13581.tar.xz
linux-dev-afeeb7cebbd223ffee303fd8de4ba97458b13581.zip
intel-iommu: Fix address wrap on 32-bit kernel.
The problem is in dma_pte_clear_range and dma_pte_free_pagetable. When intel_unmap_single and intel_unmap_sg call them, the end address may be zero if the 'start_addr + size' rounds up. So no PTE gets cleared. The uncleared PTE fires the BUG_ON when it's used again to create new mappings. After I modified dma_pte_clear_range a bit, the BUG_ON is gone. Tested both 32 and 32 PAE modes on Intel X58 and Q35 platforms. Signed-off-by: Yu Zhao <yu.zhao@intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/base')
0 files changed, 0 insertions, 0 deletions