Re: [PATCH v2 2/2] memblock: do not start bottom-up allocations with kernel_end

From: Florian Fainelli
Date: Sun Feb 28 2021 - 13:20:47 EST


Hi Mike,

On 2/28/2021 1:00 AM, Mike Rapoport wrote:
> Hi Florian,
>
> On Sat, Feb 27, 2021 at 08:18:47PM -0800, Florian Fainelli wrote:
>>
>> On 12/17/2020 12:12 PM, Roman Gushchin wrote:
>>> With kaslr the kernel image is placed at a random place, so starting
>>> the bottom-up allocation with the kernel_end can result in an
>>> allocation failure and a warning like this one:
>>>
>>> [ 0.002920] hugetlb_cma: reserve 2048 MiB, up to 2048 MiB per node
>>> [ 0.002921] ------------[ cut here ]------------
>>> [ 0.002922] memblock: bottom-up allocation failed, memory hotremove may be affected
>>> [ 0.002937] WARNING: CPU: 0 PID: 0 at mm/memblock.c:332 memblock_find_in_range_node+0x178/0x25a
>>> [ 0.002937] Modules linked in:
>>> [ 0.002939] CPU: 0 PID: 0 Comm: swapper Not tainted 5.10.0+ #1169
>>> [ 0.002940] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-1.fc33 04/01/2014
>>> [ 0.002942] RIP: 0010:memblock_find_in_range_node+0x178/0x25a
>>> [ 0.002944] Code: e9 6d ff ff ff 48 85 c0 0f 85 da 00 00 00 80 3d 9b 35 df 00 00 75 15 48 c7 c7 c0 75 59 88 c6 05 8b 35 df 00 01 e8 25 8a fa ff <0f> 0b 48 c7 44 24 20 ff ff ff ff 44 89 e6 44 89 ea 48 c7 c1 70 5c
>>> [ 0.002945] RSP: 0000:ffffffff88803d18 EFLAGS: 00010086 ORIG_RAX: 0000000000000000
>>> [ 0.002947] RAX: 0000000000000000 RBX: 0000000240000000 RCX: 00000000ffffdfff
>>> [ 0.002948] RDX: 00000000ffffdfff RSI: 00000000ffffffea RDI: 0000000000000046
>>> [ 0.002948] RBP: 0000000100000000 R08: ffffffff88922788 R09: 0000000000009ffb
>>> [ 0.002949] R10: 00000000ffffe000 R11: 3fffffffffffffff R12: 0000000000000000
>>> [ 0.002950] R13: 0000000000000000 R14: 0000000080000000 R15: 00000001fb42c000
>>> [ 0.002952] FS: 0000000000000000(0000) GS:ffffffff88f71000(0000) knlGS:0000000000000000
>>> [ 0.002953] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>> [ 0.002954] CR2: ffffa080fb401000 CR3: 00000001fa80a000 CR4: 00000000000406b0
>>> [ 0.002956] Call Trace:
>>> [ 0.002961] ? memblock_alloc_range_nid+0x8d/0x11e
>>> [ 0.002963] ? cma_declare_contiguous_nid+0x2c4/0x38c
>>> [ 0.002964] ? hugetlb_cma_reserve+0xdc/0x128
>>> [ 0.002968] ? flush_tlb_one_kernel+0xc/0x20
>>> [ 0.002969] ? native_set_fixmap+0x82/0xd0
>>> [ 0.002971] ? flat_get_apic_id+0x5/0x10
>>> [ 0.002973] ? register_lapic_address+0x8e/0x97
>>> [ 0.002975] ? setup_arch+0x8a5/0xc3f
>>> [ 0.002978] ? start_kernel+0x66/0x547
>>> [ 0.002980] ? load_ucode_bsp+0x4c/0xcd
>>> [ 0.002982] ? secondary_startup_64_no_verify+0xb0/0xbb
>>> [ 0.002986] random: get_random_bytes called from __warn+0xab/0x110 with crng_init=0
>>> [ 0.002988] ---[ end trace f151227d0b39be70 ]---
>>>
>>> At the same time, the kernel image is protected with memblock_reserve(),
>>> so we can just start searching at PAGE_SIZE. In this case the
>>> bottom-up allocation has the same chances to success as a top-down
>>> allocation, so there is no reason to fallback in the case of a
>>> failure. All together it simplifies the logic.
>>>
>>> Signed-off-by: Roman Gushchin <guro@xxxxxx>
>>
>> Hi Roman, Thomas and other linux-mips folks,
>>
>> Kamal and myself have been unable to boot v5.11 on MIPS since this
>> commit, reverting it makes our MIPS platforms boot successfully. We do
>> not see a warning like this one in the commit message, instead what
>> happens appear to be a corrupted Device Tree which prevents the parsing
>> of the "rdb" node and leading to the interrupt controllers not being
>> registered, and the system eventually not booting.
>>
>> The Device Tree is built-into the kernel image and resides at
>> arch/mips/boot/dts/brcm/bcm97435svmb.dts.
>>
>> Do you have any idea what could be wrong with MIPS specifically here?
>
> Apparently there is a memblock allocation in one of the functions called
> from arch_mem_init() between plat_mem_setup() and
> early_init_fdt_reserve_self().
>
> If you have serial available that early we can try to track it down with
> forcing memblock_debug in mm/memblock.c to 1:
>
> diff --git a/mm/memblock.c b/mm/memblock.c
> index afaefa8fc6ab..83034245f8d5 100644
> --- a/mm/memblock.c
> +++ b/mm/memblock.c
> @@ -151,7 +151,7 @@ static __refdata struct memblock_type *memblock_memory = &memblock.memory;
> pr_info(fmt, ##__VA_ARGS__); \
> } while (0)
>
> -static int memblock_debug __initdata_memblock;
> +static int memblock_debug __initdata_memblock = 1;
> static bool system_has_some_mirror __initdata_memblock = false;
> static int memblock_can_resize __initdata_memblock;
> static int memblock_memory_in_slab __initdata_memblock = 0;
>
>
> Regardless, I think that moving DT self reservation just after
> plat_mem_setup() is safe and it'll make things more robust.
>
> diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
> index 279be0153f8b..f476b99a7bcd 100644
> --- a/arch/mips/kernel/setup.c
> +++ b/arch/mips/kernel/setup.c
> @@ -623,6 +623,8 @@ static void __init arch_mem_init(char **cmdline_p)
> {
> /* call board setup routine */
> plat_mem_setup();
> + early_init_fdt_reserve_self();
> + early_init_fdt_scan_reserved_mem();
> memblock_set_bottom_up(true);
>
> bootcmdline_init();
> @@ -636,9 +638,6 @@ static void __init arch_mem_init(char **cmdline_p)
>
> check_kernel_sections_mem();
>
> - early_init_fdt_reserve_self();
> - early_init_fdt_scan_reserved_mem();
> -
> #ifndef CONFIG_NUMA
> memblock_set_node(0, PHYS_ADDR_MAX, &memblock.memory, 0);
> #endif

Thanks a lot for taking a look! The current/broken memblock=debug output
looks like this:

[ 0.000000] Linux version 5.11.0-g5695e5161974 (florian@localhost)
(mipsel-linux-gcc (GCC) 8.3.0, GNU ld (GNU Binutils) 2.32) #84 SMP Sun
Feb 28 10:01:50 PST 2021
[ 0.000000] CPU0 revision is: 00025b00 (Broadcom BMIPS5200)
[ 0.000000] FPU revision is: 00130001
[ 0.000000] memblock_add: [0x00000000-0x0fffffff]
early_init_dt_scan_memory+0x160/0x1e0
[ 0.000000] memblock_add: [0x20000000-0x4fffffff]
early_init_dt_scan_memory+0x160/0x1e0
[ 0.000000] memblock_add: [0x90000000-0xcfffffff]
early_init_dt_scan_memory+0x160/0x1e0
[ 0.000000] MIPS: machine is Broadcom BCM97435SVMB
[ 0.000000] earlycon: ns16550a0 at MMIO32 0x10406b00 (options '')
[ 0.000000] printk: bootconsole [ns16550a0] enabled
[ 0.000000] memblock_reserve: [0x00aa7600-0x00aaa0a0]
setup_arch+0x128/0x69c
[ 0.000000] memblock_reserve: [0x00010000-0x018313cf]
setup_arch+0x1f8/0x69c
[ 0.000000] Initrd not found or empty - disabling initrd
[ 0.000000] memblock_alloc_try_nid: 10913 bytes align=0x40 nid=-1
from=0x00000000 max_addr=0x00000000
early_init_dt_alloc_memory_arch+0x40/0x84
[ 0.000000] memblock_reserve: [0x00001000-0x00003aa0]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32680 bytes align=0x4 nid=-1
from=0x00000000 max_addr=0x00000000
early_init_dt_alloc_memory_arch+0x40/0x84
[ 0.000000] memblock_reserve: [0x00003aa4-0x0000ba4b]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 25 bytes align=0x4 nid=-1
from=0x00000000 max_addr=0x00000000
early_init_dt_alloc_memory_arch+0x40/0x84
[ 0.000000] memblock_reserve: [0x0000ba4c-0x0000ba64]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_reserve: [0x0096a000-0x00969fff]
setup_arch+0x3fc/0x69c
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 setup_arch+0x4e0/0x69c
[ 0.000000] memblock_reserve: [0x0000ba80-0x0000ba9f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 setup_arch+0x4e0/0x69c
[ 0.000000] memblock_reserve: [0x0000bb00-0x0000bb1f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 setup_arch+0x4e0/0x69c
[ 0.000000] memblock_reserve: [0x0000bb80-0x0000bb9f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 64
bytes.
[ 0.000000] Primary data cache 32kB, 4-way, VIPT, no aliases,
linesize 32 bytes
[ 0.000000] MIPS secondary cache 512kB, 8-way, linesize 128 bytes.
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0xffffffff fixrange_init+0x90/0xf4
[ 0.000000] memblock_reserve: [0x0000c000-0x0000cfff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0xffffffff fixrange_init+0x90/0xf4
[ 0.000000] memblock_reserve: [0x0000d000-0x0000dfff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0xffffffff fixrange_init+0x90/0xf4
[ 0.000000] memblock_reserve: [0x0000e000-0x0000efff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] HighMem [mem 0x0000000010000000-0x00000000cfffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] node 0: [mem 0x0000000020000000-0x000000004fffffff]
[ 0.000000] node 0: [mem 0x0000000090000000-0x00000000cfffffff]
[ 0.000000] Initmem setup node 0 [mem
0x0000000000000000-0x00000000cfffffff]
[ 0.000000] memblock_alloc_try_nid: 27262976 bytes align=0x80 nid=0
from=0x00000000 max_addr=0x00000000
alloc_node_mem_map.constprop.135+0x6c/0xc8
[ 0.000000] memblock_reserve: [0x01831400-0x032313ff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=0
from=0x00000000 max_addr=0x00000000 setup_usemap+0x64/0x98
[ 0.000000] memblock_reserve: [0x0000bc00-0x0000bc1f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 384 bytes align=0x80 nid=0
from=0x00000000 max_addr=0x00000000 setup_usemap+0x64/0x98
[ 0.000000] memblock_reserve: [0x0000bc80-0x0000bdff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] MEMBLOCK configuration:
[ 0.000000] memory size = 0x80000000 reserved size = 0x0322f032
[ 0.000000] memory.cnt = 0x3
[ 0.000000] memory[0x0] [0x00000000-0x0fffffff], 0x10000000
bytes flags: 0x0
[ 0.000000] memory[0x1] [0x20000000-0x4fffffff], 0x30000000
bytes flags: 0x0
[ 0.000000] memory[0x2] [0x90000000-0xcfffffff], 0x40000000
bytes flags: 0x0
[ 0.000000] reserved.cnt = 0xa
[ 0.000000] reserved[0x0] [0x00001000-0x00003aa0], 0x00002aa1
bytes flags: 0x0
[ 0.000000] reserved[0x1] [0x00003aa4-0x0000ba64], 0x00007fc1
bytes flags: 0x0
[ 0.000000] reserved[0x2] [0x0000ba80-0x0000ba9f], 0x00000020
bytes flags: 0x0
[ 0.000000] reserved[0x3] [0x0000bb00-0x0000bb1f], 0x00000020
bytes flags: 0x0
[ 0.000000] reserved[0x4] [0x0000bb80-0x0000bb9f], 0x00000020
bytes flags: 0x0
[ 0.000000] reserved[0x5] [0x0000bc00-0x0000bc1f], 0x00000020
bytes flags: 0x0
[ 0.000000] reserved[0x6] [0x0000bc80-0x0000bdff], 0x00000180
bytes flags: 0x0
[ 0.000000] reserved[0x7] [0x0000c000-0x0000efff], 0x00003000
bytes flags: 0x0
[ 0.000000] reserved[0x8] [0x00010000-0x018313cf], 0x018213d0
bytes flags: 0x0
[ 0.000000] reserved[0x9] [0x01831400-0x032313ff], 0x01a00000
bytes flags: 0x0
[ 0.000000] memblock_alloc_try_nid: 30 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 start_kernel+0x12c/0x654
[ 0.000000] memblock_reserve: [0x0000be00-0x0000be1d]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 30 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 start_kernel+0x150/0x654
[ 0.000000] memblock_reserve: [0x0000be80-0x0000be9d]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_embed_first_chunk+0x3b0/0x884
[ 0.000000] memblock_reserve: [0x0000f000-0x0000ffff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_embed_first_chunk+0x5a4/0x884
[ 0.000000] memblock_reserve: [0x03231400-0x032323ff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 294912 bytes align=0x1000 nid=-1
from=0x01000000 max_addr=0x00000000 pcpu_dfl_fc_alloc+0x24/0x30
[ 0.000000] memblock_reserve: [0x03233000-0x0327afff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_free: [0x03245000-0x03244fff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] memblock_free: [0x03257000-0x03256fff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] memblock_free: [0x03269000-0x03268fff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] memblock_free: [0x0327b000-0x0327afff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] percpu: Embedded 18 pages/cpu s50704 r0 d23024 u73728
[ 0.000000] memblock_alloc_try_nid: 4 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x178/0x6ec
[ 0.000000] memblock_reserve: [0x0000bf00-0x0000bf03]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x1a8/0x6ec
[ 0.000000] memblock_reserve: [0x0000bf80-0x0000bf83]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 16 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x1dc/0x6ec
[ 0.000000] memblock_reserve: [0x03232400-0x0323240f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 16 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x20c/0x6ec
[ 0.000000] memblock_reserve: [0x03232480-0x0323248f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 128 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x558/0x6ec
[ 0.000000] memblock_reserve: [0x03232500-0x0323257f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 92 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0x8c/0x294
[ 0.000000] memblock_reserve: [0x03232580-0x032325db]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 768 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0xe0/0x294
[ 0.000000] memblock_reserve: [0x03232600-0x032328ff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 772 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0x124/0x294
[ 0.000000] memblock_reserve: [0x03232900-0x03232c03]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 192 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0x158/0x294
[ 0.000000] memblock_reserve: [0x03232c80-0x03232d3f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_free: [0x0000f000-0x0000ffff]
pcpu_embed_first_chunk+0x838/0x884
[ 0.000000] memblock_free: [0x03231400-0x032323ff]
pcpu_embed_first_chunk+0x850/0x884
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 523776
[ 0.000000] Kernel command line: console=ttyS0,115200 earlycon
[ 0.000000] memblock_alloc_try_nid: 131072 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 alloc_large_system_hash+0x1f8/0x33c
[ 0.000000] memblock_reserve: [0x0327b000-0x0329afff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072
bytes, linear)
[ 0.000000] memblock_alloc_try_nid: 65536 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 alloc_large_system_hash+0x1f8/0x33c
[ 0.000000] memblock_reserve: [0x0329b000-0x032aafff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536
bytes, linear)
[ 0.000000] memblock_reserve: [0x00000000-0x000003ff]
trap_init+0x70/0x4e8
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 2045268K/2097152K available (8226K kernel code,
1070K rwdata, 1336K rodata, 13808K init, 260K bss, 51884K reserved, 0K
cma-reserved, 1835008K highmem)
[ 0.000000] SLUB: HWalign=128, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay
is 25 jiffies.
[ 0.000000] NR_IRQS: 256
[ 0.000000] OF: Bad cell count for /rdb
[ 0.000000] irq_bcm7038_l1: failed to remap intc L1 registers
[ 0.000000] OF: of_irq_init: children remain, but no parents
[ 0.000000] random: get_random_bytes called from
start_kernel+0x444/0x654 with crng_init=0
[ 0.000000] sched_clock: 32 bits at 250 Hz, resolution 4000000ns,
wraps every 8589934590000000ns

and with your patch applied which unfortunately did not work we have the
following:

[ 0.000000] Linux version 5.11.0-g5695e5161974 (florian@localhost)
(mipsel-linux-gcc (GCC) 8.3.0, GNU ld (GNU Binutils) 2.32) #86 SMP Sun
Feb 28 10:04:54 PST 2021
[ 0.000000] CPU0 revision is: 00025b00 (Broadcom BMIPS5200)
[ 0.000000] FPU revision is: 00130001
[ 0.000000] memblock_add: [0x00000000-0x0fffffff]
early_init_dt_scan_memory+0x160/0x1e0
[ 0.000000] memblock_add: [0x20000000-0x4fffffff]
early_init_dt_scan_memory+0x160/0x1e0
[ 0.000000] memblock_add: [0x90000000-0xcfffffff]
early_init_dt_scan_memory+0x160/0x1e0
[ 0.000000] MIPS: machine is Broadcom BCM97435SVMB
[ 0.000000] memblock_reserve: [0x00aa7600-0x00aaa0a0]
setup_arch+0x60/0x6a4
[ 0.000000] earlycon: ns16550a0 at MMIO32 0x10406b00 (options '')
[ 0.000000] printk: bootconsole [ns16550a0] enabled
[ 0.000000] memblock_reserve: [0x00010000-0x018313cf]
setup_arch+0x200/0x6a4
[ 0.000000] Initrd not found or empty - disabling initrd
[ 0.000000] memblock_alloc_try_nid: 10913 bytes align=0x40 nid=-1
from=0x00000000 max_addr=0x00000000
early_init_dt_alloc_memory_arch+0x40/0x84
[ 0.000000] memblock_reserve: [0x00001000-0x00003aa0]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32680 bytes align=0x4 nid=-1
from=0x00000000 max_addr=0x00000000
early_init_dt_alloc_memory_arch+0x40/0x84
[ 0.000000] memblock_reserve: [0x00003aa4-0x0000ba4b]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 25 bytes align=0x4 nid=-1
from=0x00000000 max_addr=0x00000000
early_init_dt_alloc_memory_arch+0x40/0x84
[ 0.000000] memblock_reserve: [0x0000ba4c-0x0000ba64]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_reserve: [0x0096a000-0x00969fff]
setup_arch+0x404/0x6a4
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 setup_arch+0x4e8/0x6a4
[ 0.000000] memblock_reserve: [0x0000ba80-0x0000ba9f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 setup_arch+0x4e8/0x6a4
[ 0.000000] memblock_reserve: [0x0000bb00-0x0000bb1f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 setup_arch+0x4e8/0x6a4
[ 0.000000] memblock_reserve: [0x0000bb80-0x0000bb9f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 64
bytes.
[ 0.000000] Primary data cache 32kB, 4-way, VIPT, no aliases,
linesize 32 bytes
[ 0.000000] MIPS secondary cache 512kB, 8-way, linesize 128 bytes.
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0xffffffff fixrange_init+0x90/0xf4
[ 0.000000] memblock_reserve: [0x0000c000-0x0000cfff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0xffffffff fixrange_init+0x90/0xf4
[ 0.000000] memblock_reserve: [0x0000d000-0x0000dfff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0xffffffff fixrange_init+0x90/0xf4
[ 0.000000] memblock_reserve: [0x0000e000-0x0000efff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] HighMem [mem 0x0000000010000000-0x00000000cfffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] node 0: [mem 0x0000000020000000-0x000000004fffffff]
[ 0.000000] node 0: [mem 0x0000000090000000-0x00000000cfffffff]
[ 0.000000] Initmem setup node 0 [mem
0x0000000000000000-0x00000000cfffffff]
[ 0.000000] memblock_alloc_try_nid: 27262976 bytes align=0x80 nid=0
from=0x00000000 max_addr=0x00000000
alloc_node_mem_map.constprop.135+0x6c/0xc8
[ 0.000000] memblock_reserve: [0x01831400-0x032313ff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=0
from=0x00000000 max_addr=0x00000000 setup_usemap+0x64/0x98
[ 0.000000] memblock_reserve: [0x0000bc00-0x0000bc1f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 384 bytes align=0x80 nid=0
from=0x00000000 max_addr=0x00000000 setup_usemap+0x64/0x98
[ 0.000000] memblock_reserve: [0x0000bc80-0x0000bdff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] MEMBLOCK configuration:
[ 0.000000] memory size = 0x80000000 reserved size = 0x0322f032
[ 0.000000] memory.cnt = 0x3
[ 0.000000] memory[0x0] [0x00000000-0x0fffffff], 0x10000000
bytes flags: 0x0
[ 0.000000] memory[0x1] [0x20000000-0x4fffffff], 0x30000000
bytes flags: 0x0
[ 0.000000] memory[0x2] [0x90000000-0xcfffffff], 0x40000000
bytes flags: 0x0
[ 0.000000] reserved.cnt = 0xa
[ 0.000000] reserved[0x0] [0x00001000-0x00003aa0], 0x00002aa1
bytes flags: 0x0
[ 0.000000] reserved[0x1] [0x00003aa4-0x0000ba64], 0x00007fc1
bytes flags: 0x0
[ 0.000000] reserved[0x2] [0x0000ba80-0x0000ba9f], 0x00000020
bytes flags: 0x0
[ 0.000000] reserved[0x3] [0x0000bb00-0x0000bb1f], 0x00000020
bytes flags: 0x0
[ 0.000000] reserved[0x4] [0x0000bb80-0x0000bb9f], 0x00000020
bytes flags: 0x0
[ 0.000000] reserved[0x5] [0x0000bc00-0x0000bc1f], 0x00000020
bytes flags: 0x0
[ 0.000000] reserved[0x6] [0x0000bc80-0x0000bdff], 0x00000180
bytes flags: 0x0
[ 0.000000] reserved[0x7] [0x0000c000-0x0000efff], 0x00003000
bytes flags: 0x0
[ 0.000000] reserved[0x8] [0x00010000-0x018313cf], 0x018213d0
bytes flags: 0x0
[ 0.000000] reserved[0x9] [0x01831400-0x032313ff], 0x01a00000
bytes flags: 0x0
[ 0.000000] memblock_alloc_try_nid: 30 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 start_kernel+0x12c/0x654
[ 0.000000] memblock_reserve: [0x0000be00-0x0000be1d]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 30 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 start_kernel+0x150/0x654
[ 0.000000] memblock_reserve: [0x0000be80-0x0000be9d]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_embed_first_chunk+0x3b0/0x884
[ 0.000000] memblock_reserve: [0x0000f000-0x0000ffff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_embed_first_chunk+0x5a4/0x884
[ 0.000000] memblock_reserve: [0x03231400-0x032323ff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 294912 bytes align=0x1000 nid=-1
from=0x01000000 max_addr=0x00000000 pcpu_dfl_fc_alloc+0x24/0x30
[ 0.000000] memblock_reserve: [0x03233000-0x0327afff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_free: [0x03245000-0x03244fff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] memblock_free: [0x03257000-0x03256fff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] memblock_free: [0x03269000-0x03268fff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] memblock_free: [0x0327b000-0x0327afff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] percpu: Embedded 18 pages/cpu s50704 r0 d23024 u73728
[ 0.000000] memblock_alloc_try_nid: 4 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x178/0x6ec
[ 0.000000] memblock_reserve: [0x0000bf00-0x0000bf03]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x1a8/0x6ec
[ 0.000000] memblock_reserve: [0x0000bf80-0x0000bf83]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 16 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x1dc/0x6ec
[ 0.000000] memblock_reserve: [0x03232400-0x0323240f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 16 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x20c/0x6ec
[ 0.000000] memblock_reserve: [0x03232480-0x0323248f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 128 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x558/0x6ec
[ 0.000000] memblock_reserve: [0x03232500-0x0323257f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 92 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0x8c/0x294
[ 0.000000] memblock_reserve: [0x03232580-0x032325db]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 768 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0xe0/0x294
[ 0.000000] memblock_reserve: [0x03232600-0x032328ff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 772 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0x124/0x294
[ 0.000000] memblock_reserve: [0x03232900-0x03232c03]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 192 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0x158/0x294
[ 0.000000] memblock_reserve: [0x03232c80-0x03232d3f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_free: [0x0000f000-0x0000ffff]
pcpu_embed_first_chunk+0x838/0x884
[ 0.000000] memblock_free: [0x03231400-0x032323ff]
pcpu_embed_first_chunk+0x850/0x884
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 523776
[ 0.000000] Kernel command line: console=ttyS0,115200 earlycon
[ 0.000000] memblock_alloc_try_nid: 131072 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 alloc_large_system_hash+0x1f8/0x33c
[ 0.000000] memblock_reserve: [0x0327b000-0x0329afff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072
bytes, linear)
[ 0.000000] memblock_alloc_try_nid: 65536 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 alloc_large_system_hash+0x1f8/0x33c
[ 0.000000] memblock_reserve: [0x0329b000-0x032aafff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536
bytes, linear)
[ 0.000000] memblock_reserve: [0x00000000-0x000003ff]
trap_init+0x70/0x4e8
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 2045268K/2097152K available (8226K kernel code,
1070K rwdata, 1336K rodata, 13808K init, 260K bss, 51884K reserved, 0K
cma-reserved, 1835008K highmem)
[ 0.000000] SLUB: HWalign=128, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay
is 25 jiffies.
[ 0.000000] NR_IRQS: 256
[ 0.000000] OF: Bad cell count for /rdb
[ 0.000000] irq_bcm7038_l1: failed to remap intc L1 registers
[ 0.000000] OF: of_irq_init: children remain, but no parents
[ 0.000000] random: get_random_bytes called from
start_kernel+0x444/0x654 with crng_init=0
[ 0.000000] sched_clock: 32 bits at 250 Hz, resolution 4000000ns,
wraps every 8589934590000000ns

With only the revert of f787b0b4502cde50c3583432d6cb9bd8306fc242
("memblock: do not start bottom-up allocations with kernel_end") and an
unmodified arch/mips/kernel/setup.c, this boots successfully:

[ 0.000000] Linux version 5.11.0-gf787b0b4502c (florian@locahost)
(mipsel-linux-gcc (GCC) 8.3.0, GNU ld (GNU Binutils) 2.32) #88 SMP Sun
Feb 28 10:13:21 PST 2021
[ 0.000000] CPU0 revision is: 00025b00 (Broadcom BMIPS5200)
[ 0.000000] FPU revision is: 00130001
[ 0.000000] memblock_add: [0x00000000-0x0fffffff]
early_init_dt_scan_memory+0x160/0x1e0
[ 0.000000] memblock_add: [0x20000000-0x4fffffff]
early_init_dt_scan_memory+0x160/0x1e0
[ 0.000000] memblock_add: [0x90000000-0xcfffffff]
early_init_dt_scan_memory+0x160/0x1e0
[ 0.000000] MIPS: machine is Broadcom BCM97435SVMB
[ 0.000000] earlycon: ns16550a0 at MMIO32 0x10406b00 (options '')
[ 0.000000] printk: bootconsole [ns16550a0] enabled
[ 0.000000] memblock_reserve: [0x00aa9600-0x00aac0a0]
setup_arch+0x128/0x69c
[ 0.000000] memblock_reserve: [0x00010000-0x018313cf]
setup_arch+0x1f8/0x69c
[ 0.000000] Initrd not found or empty - disabling initrd
[ 0.000000] memblock_alloc_try_nid: 10913 bytes align=0x40 nid=-1
from=0x00000000 max_addr=0x00000000
early_init_dt_alloc_memory_arch+0x40/0x84
[ 0.000000] memblock_reserve: [0x01831400-0x01833ea0]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32680 bytes align=0x4 nid=-1
from=0x00000000 max_addr=0x00000000
early_init_dt_alloc_memory_arch+0x40/0x84
[ 0.000000] memblock_reserve: [0x01833ea4-0x0183be4b]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 25 bytes align=0x4 nid=-1
from=0x00000000 max_addr=0x00000000
early_init_dt_alloc_memory_arch+0x40/0x84
[ 0.000000] memblock_reserve: [0x018313d0-0x018313e8]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_reserve: [0x0096c000-0x0096bfff]
setup_arch+0x3fc/0x69c
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 setup_arch+0x4e0/0x69c
[ 0.000000] memblock_reserve: [0x0183be80-0x0183be9f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 setup_arch+0x4e0/0x69c
[ 0.000000] memblock_reserve: [0x0183bf00-0x0183bf1f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 setup_arch+0x4e0/0x69c
[ 0.000000] memblock_reserve: [0x0183bf80-0x0183bf9f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 64
bytes.
[ 0.000000] Primary data cache 32kB, 4-way, VIPT, no aliases,
linesize 32 bytes
[ 0.000000] MIPS secondary cache 512kB, 8-way, linesize 128 bytes.
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0xffffffff fixrange_init+0x90/0xf4
[ 0.000000] memblock_reserve: [0x0183c000-0x0183cfff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0xffffffff fixrange_init+0x90/0xf4
[ 0.000000] memblock_reserve: [0x0183d000-0x0183dfff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0xffffffff fixrange_init+0x90/0xf4
[ 0.000000] memblock_reserve: [0x0183e000-0x0183efff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] HighMem [mem 0x0000000010000000-0x00000000cfffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x000000000fffffff]
[ 0.000000] node 0: [mem 0x0000000020000000-0x000000004fffffff]
[ 0.000000] node 0: [mem 0x0000000090000000-0x00000000cfffffff]
[ 0.000000] Initmem setup node 0 [mem
0x0000000000000000-0x00000000cfffffff]
[ 0.000000] memblock_alloc_try_nid: 27262976 bytes align=0x80 nid=0
from=0x00000000 max_addr=0x00000000
alloc_node_mem_map.constprop.135+0x6c/0xc8
[ 0.000000] memblock_reserve: [0x0183f000-0x0323efff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 32 bytes align=0x80 nid=0
from=0x00000000 max_addr=0x00000000 setup_usemap+0x64/0x98
[ 0.000000] memblock_reserve: [0x0323f000-0x0323f01f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 384 bytes align=0x80 nid=0
from=0x00000000 max_addr=0x00000000 setup_usemap+0x64/0x98
[ 0.000000] memblock_reserve: [0x0323f080-0x0323f1ff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] MEMBLOCK configuration:
[ 0.000000] memory size = 0x80000000 reserved size = 0x0322f032
[ 0.000000] memory.cnt = 0x3
[ 0.000000] memory[0x0] [0x00000000-0x0fffffff], 0x10000000
bytes flags: 0x0
[ 0.000000] memory[0x1] [0x20000000-0x4fffffff], 0x30000000
bytes flags: 0x0
[ 0.000000] memory[0x2] [0x90000000-0xcfffffff], 0x40000000
bytes flags: 0x0
[ 0.000000] reserved.cnt = 0x8
[ 0.000000] reserved[0x0] [0x00010000-0x018313e8], 0x018213e9
bytes flags: 0x0
[ 0.000000] reserved[0x1] [0x01831400-0x01833ea0], 0x00002aa1
bytes flags: 0x0
[ 0.000000] reserved[0x2] [0x01833ea4-0x0183be4b], 0x00007fa8
bytes flags: 0x0
[ 0.000000] reserved[0x3] [0x0183be80-0x0183be9f], 0x00000020
bytes flags: 0x0
[ 0.000000] reserved[0x4] [0x0183bf00-0x0183bf1f], 0x00000020
bytes flags: 0x0
[ 0.000000] reserved[0x5] [0x0183bf80-0x0183bf9f], 0x00000020
bytes flags: 0x0
[ 0.000000] reserved[0x6] [0x0183c000-0x0323f01f], 0x01a03020
bytes flags: 0x0
[ 0.000000] reserved[0x7] [0x0323f080-0x0323f1ff], 0x00000180
bytes flags: 0x0
[ 0.000000] memblock_alloc_try_nid: 30 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 start_kernel+0x12c/0x654
[ 0.000000] memblock_reserve: [0x0323f200-0x0323f21d]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 30 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 start_kernel+0x150/0x654
[ 0.000000] memblock_reserve: [0x0323f280-0x0323f29d]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x1000 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_embed_first_chunk+0x3b0/0x884
[ 0.000000] memblock_reserve: [0x03240000-0x03240fff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4096 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_embed_first_chunk+0x5a4/0x884
[ 0.000000] memblock_reserve: [0x03241000-0x03241fff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 294912 bytes align=0x1000 nid=-1
from=0x01000000 max_addr=0x00000000 pcpu_dfl_fc_alloc+0x24/0x30
[ 0.000000] memblock_reserve: [0x03242000-0x03289fff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_free: [0x03254000-0x03253fff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] memblock_free: [0x03266000-0x03265fff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] memblock_free: [0x03278000-0x03277fff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] memblock_free: [0x0328a000-0x03289fff]
pcpu_embed_first_chunk+0x7a0/0x884
[ 0.000000] percpu: Embedded 18 pages/cpu s50704 r0 d23024 u73728
[ 0.000000] memblock_alloc_try_nid: 4 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x178/0x6ec
[ 0.000000] memblock_reserve: [0x0323f300-0x0323f303]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 4 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x1a8/0x6ec
[ 0.000000] memblock_reserve: [0x0323f380-0x0323f383]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 16 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x1dc/0x6ec
[ 0.000000] memblock_reserve: [0x0323f400-0x0323f40f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 16 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x20c/0x6ec
[ 0.000000] memblock_reserve: [0x0323f480-0x0323f48f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 128 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_setup_first_chunk+0x558/0x6ec
[ 0.000000] memblock_reserve: [0x0323f500-0x0323f57f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 92 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0x8c/0x294
[ 0.000000] memblock_reserve: [0x0323f580-0x0323f5db]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 768 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0xe0/0x294
[ 0.000000] memblock_reserve: [0x0323f600-0x0323f8ff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 772 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0x124/0x294
[ 0.000000] memblock_reserve: [0x0323f900-0x0323fc03]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_alloc_try_nid: 192 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 pcpu_alloc_first_chunk+0x158/0x294
[ 0.000000] memblock_reserve: [0x0323fc80-0x0323fd3f]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] memblock_free: [0x03240000-0x03240fff]
pcpu_embed_first_chunk+0x838/0x884
[ 0.000000] memblock_free: [0x03241000-0x03241fff]
pcpu_embed_first_chunk+0x850/0x884
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 523776
[ 0.000000] Kernel command line: console=ttyS0,115200 earlycon
[ 0.000000] memblock_alloc_try_nid: 131072 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 alloc_large_system_hash+0x1f8/0x33c
[ 0.000000] memblock_reserve: [0x0328a000-0x032a9fff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072
bytes, linear)
[ 0.000000] memblock_alloc_try_nid: 65536 bytes align=0x80 nid=-1
from=0x00000000 max_addr=0x00000000 alloc_large_system_hash+0x1f8/0x33c
[ 0.000000] memblock_reserve: [0x032aa000-0x032b9fff]
memblock_alloc_range_nid+0xf8/0x198
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536
bytes, linear)
[ 0.000000] memblock_reserve: [0x00000000-0x000003ff]
trap_init+0x70/0x4e8
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 2045272K/2097152K available (8226K kernel code,
1078K rwdata, 1336K rodata, 13800K init, 260K bss, 51880K reserved, 0K
cma-reserved, 1835008K highmem)
[ 0.000000] SLUB: HWalign=128, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay
is 25 jiffies.
[ 0.000000] NR_IRQS: 256
[ 0.000000] irq_bcm7038_l1: registered BCM7038 L1 intc
(/rdb/interrupt-controller@41b500, IRQs: 128)
[ 0.000000] irq_brcmstb_l2: registered L2 intc
(/rdb/interrupt-controller@403000, parent irq: 52)
[ 0.000000] irq_bcm7120_l2: registered BCM7120 L2 intc
(/rdb/interrupt-controller@406780, parent IRQ(s): 2)
[ 0.000000] irq_bcm7120_l2: registered BCM7120 L2 intc
(/rdb/interrupt-controller@409480, parent IRQ(s): 3)
[ 0.000000] irq_brcmstb_l2: registered L2 intc
(/rdb/interrupt-controller@408440, parent irq: 54)
[ 0.000000] irq_brcmstb_l2: registered L2 intc
(/rdb/interrupt-controller@41b000, parent irq: 24)
[ 0.000000] irq_brcmstb_l2: registered L2 intc
(/rdb/interrupt-controller@41bd00, parent irq: 25)
[ 0.000000] random: get_random_bytes called from
start_kernel+0x444/0x654 with crng_init=0
[ 0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles:
0xffffffff, max_idle_ns: 10882621761 ns
[ 0.000000] sched_clock: 32 bits at 250 Hz, resolution 4000000ns,
wraps every 8589934590000000ns

The DTB is located at this offset within vmlinux:

37084: 80aac0a1 0 OBJECT GLOBAL DEFAULT 10
__dtb_bcm97435svmb_end
48909: 80aa9600 0 OBJECT GLOBAL DEFAULT 10
__dtb_bcm97435svmb_begin

0x8000_0000 maps to physical address 0x0 on these MIPS platforms.
--
Florian