ARM: tegra: reduce DRAM size mapped into MMU on ARM64
authorStephen Warren <swarren@nvidia.com>
Mon, 10 Oct 2016 15:50:55 +0000 (09:50 -0600)
committerTom Warren <twarren@nvidia.com>
Mon, 10 Oct 2016 18:00:03 +0000 (11:00 -0700)
ARM CPUs can architecturally (speculatively) prefetch completely arbitrary
normal memory locations, as defined by the current translation tables. The
current MMU configuration for 64-bit Tegras maps an extremely large range
of addresses as DRAM, well beyond the actual physical maximum DRAM window,
even though U-Boot only needs access to the first 2GB of DRAM; the Tegra
port of U-Boot deliberately limits itself to 2GB of RAM since some HW
modules on at least some 64-bit Tegra SoCs can only access a 32-bit
physical address space. This change reduces the amount of RAM mapped via
the MMU to disallow the CPU from ever speculatively accessing RAM that
U-Boot will definitely not access. This avoids the possibility of the HW
raising SError due to accesses to always-invalid physical addresses.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Tom Warren <twarren@nvidia.com>
arch/arm/mach-tegra/arm64-mmu.c

index 7b1d258ed84f5f6cedb051107a9811d5111d8a42..a79a5192e076910e294d6e07f14fec21b8282c2e 100644 (file)
@@ -23,7 +23,7 @@ static struct mm_region tegra_mem_map[] = {
        }, {
                .virt = 0x80000000UL,
                .phys = 0x80000000UL,
-               .size = 0xff80000000UL,
+               .size = 0x80000000UL,
                .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
                         PTE_BLOCK_INNER_SHARE
        }, {