[U-Boot] [PATCH 4/9] tegra: Replace home grown mmu code with generic table approach
Stephen Warren
swarren at wwwdotorg.org
Mon Feb 22 19:28:02 CET 2016
On 02/21/2016 06:57 PM, Alexander Graf wrote:
> Now that we have nice table driven page table creating code that gives
> us everything we need, move to that.
> diff --git a/include/configs/tegra210-common.h b/include/configs/tegra210-common.h
> +#define CONFIG_SYS_FULL_VA
> +#define CONFIG_SYS_MEM_MAP { \
> + { \
> + .base = 0x0UL, \
> + .size = 0x80000000UL, \
> + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | \
> + PTE_BLOCK_NON_SHARE | \
> + PTE_BLOCK_PXN | PTE_BLOCK_UXN \
> + }, { \
> + .base = 0x80000000UL, \
> + .size = 0xff80000000UL, \
> + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | \
> + PTE_BLOCK_INNER_SHARE \
> + }, \
> + }
I'd prefer a layout that didn't align the closing } for different
nesting levels in the same column. To avoid indenting everything a lot,
it seems simplest to pull the final } back into the first column.
I believe the .size field of the second entry in the array only needs to
be 0x80000000. Testing with a PCIe Ethernet card on p2371-2180 (the
driver for which sets up noncached entries in the page tables, hence
should exercise all this code) confirms that.
While recent Tegra systems do support more than 2GB of RAM, U-Boot will
itself only use the first 2GB, so that PAs over 4GB are not used. See
board_get_usable_ram_top() in arch/arm/mach-tegra/board2.c. That's
because some peripherals can only access 32-bit PAs, and the simplest
way to accommodate that is to ignore any RAM above the 32-bit limit.
More information about the U-Boot
mailing list