Commit c756c592 authored by Florian Fainelli's avatar Florian Fainelli Committed by Rob Herring

arm64: Utilize phys_initrd_start/phys_initrd_size

ARM64 is the only architecture that re-defines
__early_init_dt_declare_initrd() in order for that function to populate
initrd_start/initrd_end with physical addresses instead of virtual
addresses. Instead of having an override we can leverage
drivers/of/fdt.c populating phys_initrd_start/phys_initrd_size to
populate those variables for us.
Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Reviewed-by: default avatarMike Rapoport <rppt@linux.ibm.com>
Acked-by: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent fe7db757
...@@ -71,8 +71,8 @@ static int __init early_initrd(char *p) ...@@ -71,8 +71,8 @@ static int __init early_initrd(char *p)
if (*endp == ',') { if (*endp == ',') {
size = memparse(endp + 1, NULL); size = memparse(endp + 1, NULL);
initrd_start = start; phys_initrd_start = start;
initrd_end = start + size; phys_initrd_size = size;
} }
return 0; return 0;
} }
...@@ -407,14 +407,14 @@ void __init arm64_memblock_init(void) ...@@ -407,14 +407,14 @@ void __init arm64_memblock_init(void)
memblock_add(__pa_symbol(_text), (u64)(_end - _text)); memblock_add(__pa_symbol(_text), (u64)(_end - _text));
} }
if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && initrd_start) { if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && phys_initrd_size) {
/* /*
* Add back the memory we just removed if it results in the * Add back the memory we just removed if it results in the
* initrd to become inaccessible via the linear mapping. * initrd to become inaccessible via the linear mapping.
* Otherwise, this is a no-op * Otherwise, this is a no-op
*/ */
u64 base = initrd_start & PAGE_MASK; u64 base = phys_initrd_start & PAGE_MASK;
u64 size = PAGE_ALIGN(initrd_end) - base; u64 size = PAGE_ALIGN(phys_initrd_size);
/* /*
* We can only add back the initrd memory if we don't end up * We can only add back the initrd memory if we don't end up
...@@ -458,15 +458,11 @@ void __init arm64_memblock_init(void) ...@@ -458,15 +458,11 @@ void __init arm64_memblock_init(void)
* pagetables with memblock. * pagetables with memblock.
*/ */
memblock_reserve(__pa_symbol(_text), _end - _text); memblock_reserve(__pa_symbol(_text), _end - _text);
#ifdef CONFIG_BLK_DEV_INITRD if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && phys_initrd_size) {
if (initrd_start) {
memblock_reserve(initrd_start, initrd_end - initrd_start);
/* the generic initrd code expects virtual addresses */ /* the generic initrd code expects virtual addresses */
initrd_start = __phys_to_virt(initrd_start); initrd_start = __phys_to_virt(phys_initrd_start);
initrd_end = __phys_to_virt(initrd_end); initrd_end = initrd_start + phys_initrd_size;
} }
#endif
early_init_fdt_scan_reserved_mem(); early_init_fdt_scan_reserved_mem();
......
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