Commit 70e535d1 authored by David Woodhouse's avatar David Woodhouse

intel-iommu: Fix off-by-one in RMRR setup

We were mapping an extra byte (and hence usually an extra page):
iommu_prepare_identity_map() expects to be given an 'end' argument which
is the last byte to be mapped; not the first byte *not* to be mapped.
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent 8519dc44
...@@ -2147,7 +2147,7 @@ static inline int iommu_prepare_rmrr_dev(struct dmar_rmrr_unit *rmrr, ...@@ -2147,7 +2147,7 @@ static inline int iommu_prepare_rmrr_dev(struct dmar_rmrr_unit *rmrr,
if (pdev->dev.archdata.iommu == DUMMY_DEVICE_DOMAIN_INFO) if (pdev->dev.archdata.iommu == DUMMY_DEVICE_DOMAIN_INFO)
return 0; return 0;
return iommu_prepare_identity_map(pdev, rmrr->base_address, return iommu_prepare_identity_map(pdev, rmrr->base_address,
rmrr->end_address + 1); rmrr->end_address);
} }
#ifdef CONFIG_DMAR_FLOPPY_WA #ifdef CONFIG_DMAR_FLOPPY_WA
...@@ -2161,7 +2161,7 @@ static inline void iommu_prepare_isa(void) ...@@ -2161,7 +2161,7 @@ static inline void iommu_prepare_isa(void)
return; return;
printk(KERN_INFO "IOMMU: Prepare 0-16MiB unity mapping for LPC\n"); printk(KERN_INFO "IOMMU: Prepare 0-16MiB unity mapping for LPC\n");
ret = iommu_prepare_identity_map(pdev, 0, 16*1024*1024); ret = iommu_prepare_identity_map(pdev, 0, 16*1024*1024 - 1);
if (ret) if (ret)
printk(KERN_ERR "IOMMU: Failed to create 0-16MiB identity map; " printk(KERN_ERR "IOMMU: Failed to create 0-16MiB identity map; "
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment