|
|
@@ -59,8 +59,8 @@ static int __init early_initrd(char *p)
|
|
|
if (*endp == ',') {
|
|
|
size = memparse(endp + 1, NULL);
|
|
|
|
|
|
- initrd_start = (unsigned long)__va(start);
|
|
|
- initrd_end = (unsigned long)__va(start + size);
|
|
|
+ initrd_start = start;
|
|
|
+ initrd_end = start + size;
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
@@ -168,8 +168,13 @@ void __init arm64_memblock_init(void)
|
|
|
*/
|
|
|
memblock_reserve(__pa(_text), _end - _text);
|
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|
|
|
- if (initrd_start)
|
|
|
- memblock_reserve(__virt_to_phys(initrd_start), initrd_end - initrd_start);
|
|
|
+ if (initrd_start) {
|
|
|
+ memblock_reserve(initrd_start, initrd_end - initrd_start);
|
|
|
+
|
|
|
+ /* the generic initrd code expects virtual addresses */
|
|
|
+ initrd_start = __phys_to_virt(initrd_start);
|
|
|
+ initrd_end = __phys_to_virt(initrd_end);
|
|
|
+ }
|
|
|
#endif
|
|
|
|
|
|
early_init_fdt_scan_reserved_mem();
|