mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-10-06 11:30:47 +09:00
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: Thierry Reding <treding@nvidia.com> Signed-off-by: Tom Warren <twarren@nvidia.com> Signed-off-by: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
parent
5b34436035
commit
00f782a9f8
@ -274,3 +274,19 @@ void pad_init_mmc(struct mmc_host *host)
|
|||||||
#endif /* T30 */
|
#endif /* T30 */
|
||||||
}
|
}
|
||||||
#endif /* MMC */
|
#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
|
||||||
|
Loading…
Reference in New Issue
Block a user