On Sat, Nov 12, 2016 at 02:02:26PM +0100, Ard Biesheuvel wrote:
> 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 <[email protected]>

Reviewed-by: Leif Lindholm <[email protected]>

> ---
>  ArmPkg/Library/ArmDmaLib/ArmDmaLib.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c 
> b/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c
> index 03fd9f3278e6..c2a44398d25a 100644
> --- a/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c
> +++ b/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c
> @@ -127,7 +127,7 @@ DmaMap (
>          CopyMem (Buffer, HostAddress, *NumberOfBytes);
>        }
>  
> -      *DeviceAddress = (PHYSICAL_ADDRESS)(UINTN)Buffer;
> +      *DeviceAddress = ConvertToPhysicalAddress ((UINTN)Buffer);
>      } else {
>        Map->DoubleBuffer  = FALSE;
>      }
> -- 
> 2.7.4
> 
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to