summaryrefslogtreecommitdiffstats
path: root/ArmPkg
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2016-11-12 14:02:26 +0100
committerLeif Lindholm <leif.lindholm@linaro.org>2016-11-30 16:42:59 +0000
commit0a99a65d2c8a68b72accfa636fe2633900269128 (patch)
tree75c4b33fe5e9ddca2b748fac6aef478689fe8088 /ArmPkg
parentde2ec785e2b11798a3ca7aaf653bc76576d947b0 (diff)
downloadedk2-0a99a65d2c8a68b72accfa636fe2633900269128.tar.gz
edk2-0a99a65d2c8a68b72accfa636fe2633900269128.tar.bz2
edk2-0a99a65d2c8a68b72accfa636fe2633900269128.zip
ArmPkg/ArmDmaLib: fix incorrect device address of double buffer
If double buffering is not required in DmaMap(), the returned device address is passed through ConvertToPhysicalAddress () to convert the host address (which in case of DebugUncachedMemoryAllocationLib is not 1:1 mapped) to a physical address, which is what a device would expect to be able to perform DMA. By the same reasoning, a double buffer allocated using DmaAllocateBuffer () should be converted in the same way, considering that the buffer is allocated using UncachedAllocatePages (), to which the above equally applies. So add the missing ConvertToPhysicalAddress () invocation. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Tested-by: Ryan Harkin <ryan.harkin@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
Diffstat (limited to 'ArmPkg')
-rw-r--r--ArmPkg/Library/ArmDmaLib/ArmDmaLib.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c b/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c
index e836feff1e..6afce87024 100644
--- a/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c
+++ b/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c
@@ -126,7 +126,7 @@ DmaMap (
CopyMem (Buffer, HostAddress, *NumberOfBytes);
}
- *DeviceAddress = (PHYSICAL_ADDRESS)(UINTN)Buffer;
+ *DeviceAddress = ConvertToPhysicalAddress ((UINTN)Buffer);
} else {
Map->DoubleBuffer = FALSE;
}