summaryrefslogtreecommitdiffstats
path: root/arch/arm64/mm
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-12-28 23:08:34 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2018-12-28 23:08:34 -0500
commit030672aea826adf3dee9100ee8ac303b62c8fe7f (patch)
treec9815fcd276e4c61b864790e81e5cbca16b80142 /arch/arm64/mm
parent24dc83635ffe3c93d8122099a83ee228c9b7e4f7 (diff)
parent5801169a2ed20003f771acecf3ac00574cf10a38 (diff)
Merge tag 'devicetree-for-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
Pull Devicetree updates from Rob Herring: "The biggest highlight here is the start of using json-schema for DT bindings. Being able to validate bindings has been discussed for years with little progress. - Initial support for DT bindings using json-schema language. This is the start of converting DT bindings from free-form text to a structured format. - Reworking of initrd address initialization. This moves to using the phys address instead of virt addr in the DT parsing code. This rework was motivated by CONFIG_DEV_BLK_INITRD causing unnecessary rebuilding of lots of files. - Fix stale phandle entries in phandle cache - DT overlay validation improvements. This exposed several memory leak bugs which have been fixed. - Use node name and device_type helper functions in DT code - Last remaining conversions to using %pOFn printk specifier instead of device_node.name directly - Create new common RTC binding doc and move all trivial RTC devices out of trivial-devices.txt. - New bindings for Freescale MAG3110 magnetometer, Cadence Sierra PHY, and Xen shared memory - Update dtc to upstream version v1.4.7-57-gf267e674d145" * tag 'devicetree-for-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (68 commits) of: __of_detach_node() - remove node from phandle cache of: of_node_get()/of_node_put() nodes held in phandle cache gpio-omap.txt: add reg and interrupts properties dt-bindings: mrvl,intc: fix a trivial typo dt-bindings: iio: magnetometer: add dt-bindings for freescale mag3110 dt-bindings: Convert trivial-devices.txt to json-schema dt-bindings: arm: mrvl: amend Browstone compatible string dt-bindings: arm: Convert Tegra board/soc bindings to json-schema dt-bindings: arm: Convert ZTE board/soc bindings to json-schema dt-bindings: arm: Add missing Xilinx boards dt-bindings: arm: Convert Xilinx board/soc bindings to json-schema dt-bindings: arm: Convert VIA board/soc bindings to json-schema dt-bindings: arm: Convert ST STi board/soc bindings to json-schema dt-bindings: arm: Convert SPEAr board/soc bindings to json-schema dt-bindings: arm: Convert CSR SiRF board/soc bindings to json-schema dt-bindings: arm: Convert QCom board/soc bindings to json-schema dt-bindings: arm: Convert TI nspire board/soc bindings to json-schema dt-bindings: arm: Convert TI davinci board/soc bindings to json-schema dt-bindings: arm: Convert Calxeda board/soc bindings to json-schema dt-bindings: arm: Convert Altera board/soc bindings to json-schema ...
Diffstat (limited to 'arch/arm64/mm')
-rw-r--r--arch/arm64/mm/init.c34
1 files changed, 6 insertions, 28 deletions
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index cbba537ba3d2..a8f2e4792ef9 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -63,24 +63,6 @@ EXPORT_SYMBOL(memstart_addr);
63 63
64phys_addr_t arm64_dma_phys_limit __ro_after_init; 64phys_addr_t arm64_dma_phys_limit __ro_after_init;
65 65
66#ifdef CONFIG_BLK_DEV_INITRD
67static int __init early_initrd(char *p)
68{
69 unsigned long start, size;
70 char *endp;
71
72 start = memparse(p, &endp);
73 if (*endp == ',') {
74 size = memparse(endp + 1, NULL);
75
76 initrd_start = start;
77 initrd_end = start + size;
78 }
79 return 0;
80}
81early_param("initrd", early_initrd);
82#endif
83
84#ifdef CONFIG_KEXEC_CORE 66#ifdef CONFIG_KEXEC_CORE
85/* 67/*
86 * reserve_crashkernel() - reserves memory for crash kernel 68 * reserve_crashkernel() - reserves memory for crash kernel
@@ -417,14 +399,14 @@ void __init arm64_memblock_init(void)
417 memblock_add(__pa_symbol(_text), (u64)(_end - _text)); 399 memblock_add(__pa_symbol(_text), (u64)(_end - _text));
418 } 400 }
419 401
420 if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && initrd_start) { 402 if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && phys_initrd_size) {
421 /* 403 /*
422 * Add back the memory we just removed if it results in the 404 * Add back the memory we just removed if it results in the
423 * initrd to become inaccessible via the linear mapping. 405 * initrd to become inaccessible via the linear mapping.
424 * Otherwise, this is a no-op 406 * Otherwise, this is a no-op
425 */ 407 */
426 u64 base = initrd_start & PAGE_MASK; 408 u64 base = phys_initrd_start & PAGE_MASK;
427 u64 size = PAGE_ALIGN(initrd_end) - base; 409 u64 size = PAGE_ALIGN(phys_initrd_size);
428 410
429 /* 411 /*
430 * We can only add back the initrd memory if we don't end up 412 * We can only add back the initrd memory if we don't end up
@@ -468,15 +450,11 @@ void __init arm64_memblock_init(void)
468 * pagetables with memblock. 450 * pagetables with memblock.
469 */ 451 */
470 memblock_reserve(__pa_symbol(_text), _end - _text); 452 memblock_reserve(__pa_symbol(_text), _end - _text);
471#ifdef CONFIG_BLK_DEV_INITRD 453 if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && phys_initrd_size) {
472 if (initrd_start) {
473 memblock_reserve(initrd_start, initrd_end - initrd_start);
474
475 /* the generic initrd code expects virtual addresses */ 454 /* the generic initrd code expects virtual addresses */
476 initrd_start = __phys_to_virt(initrd_start); 455 initrd_start = __phys_to_virt(phys_initrd_start);
477 initrd_end = __phys_to_virt(initrd_end); 456 initrd_end = initrd_start + phys_initrd_size;
478 } 457 }
479#endif
480 458
481 early_init_fdt_scan_reserved_mem(); 459 early_init_fdt_scan_reserved_mem();
482 460