Commit 00f782a9 authored by Thierry Reding's avatar Thierry Reding Committed by Tom Warren
Browse files

ARM: tegra: Restrict usable RAM to 32-bit on 64-bit SoCs



Most peripherals on Tegra can do DMA only to the lower 32-bit
address space, even on 64-bit SoCs. This limitation is
typically overcome by the use of an IOMMU. Since the IOMMU is
not entirely trivial to set up and serves no other purpose
(I/O protection, ...) in U-Boot, restrict 64-bit Tegra SoCs to
the lower 32-bit address space for RAM. This ensures that the
physical addresses of buffers that are programmed into the
various DMA engines are valid and don't alias to lower addresses.
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
Signed-off-by: default avatarTom Warren <twarren@nvidia.com>
Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
parent 5b344360
......@@ -274,3 +274,19 @@ void pad_init_mmc(struct mmc_host *host)
#endif /* T30 */
}
#endif /* MMC */
#ifdef CONFIG_ARM64
/*
* Most hardware on 64-bit Tegra is still restricted to DMA to the lower
* 32-bits of the physical address space. Cap the maximum usable RAM area
* at 4 GiB to avoid DMA buffers from being allocated beyond the 32-bit
* boundary that most devices can address.
*/
ulong board_get_usable_ram_top(ulong total_size)
{
if (gd->ram_top > 0x100000000)
return 0x100000000;
return gd->ram_top;
}
#endif
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