arm64: Calculate size for idmap_pg_dir at compile time
Now that we can calculate the number of levels required for mapping a va width, reserve exact number of pages that would be required to cover the idmap. The idmap should be able to handle the maximum physical address size supported. Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Suzuki K. Poulose <suzuki.poulose@arm.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
Родитель
686e783869
Коммит
c265af51c5
|
@ -39,16 +39,19 @@
|
||||||
* map to pte level. The swapper also maps the FDT (see __create_page_tables
|
* map to pte level. The swapper also maps the FDT (see __create_page_tables
|
||||||
* for more information). Note that the number of ID map translation levels
|
* for more information). Note that the number of ID map translation levels
|
||||||
* could be increased on the fly if system RAM is out of reach for the default
|
* could be increased on the fly if system RAM is out of reach for the default
|
||||||
* VA range, so 3 pages are reserved in all cases.
|
* VA range, so pages required to map highest possible PA are reserved in all
|
||||||
|
* cases.
|
||||||
*/
|
*/
|
||||||
#if ARM64_SWAPPER_USES_SECTION_MAPS
|
#if ARM64_SWAPPER_USES_SECTION_MAPS
|
||||||
#define SWAPPER_PGTABLE_LEVELS (CONFIG_PGTABLE_LEVELS - 1)
|
#define SWAPPER_PGTABLE_LEVELS (CONFIG_PGTABLE_LEVELS - 1)
|
||||||
|
#define IDMAP_PGTABLE_LEVELS (ARM64_HW_PGTABLE_LEVELS(PHYS_MASK_SHIFT) - 1)
|
||||||
#else
|
#else
|
||||||
#define SWAPPER_PGTABLE_LEVELS (CONFIG_PGTABLE_LEVELS)
|
#define SWAPPER_PGTABLE_LEVELS (CONFIG_PGTABLE_LEVELS)
|
||||||
|
#define IDMAP_PGTABLE_LEVELS (ARM64_HW_PGTABLE_LEVELS(PHYS_MASK_SHIFT))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SWAPPER_DIR_SIZE (SWAPPER_PGTABLE_LEVELS * PAGE_SIZE)
|
#define SWAPPER_DIR_SIZE (SWAPPER_PGTABLE_LEVELS * PAGE_SIZE)
|
||||||
#define IDMAP_DIR_SIZE (3 * PAGE_SIZE)
|
#define IDMAP_DIR_SIZE (IDMAP_PGTABLE_LEVELS * PAGE_SIZE)
|
||||||
|
|
||||||
/* Initial memory map size */
|
/* Initial memory map size */
|
||||||
#if ARM64_SWAPPER_USES_SECTION_MAPS
|
#if ARM64_SWAPPER_USES_SECTION_MAPS
|
||||||
|
|
Загрузка…
Ссылка в новой задаче