On Fri, Oct 02, 2026 at 04:44:49AM +0800, Qing Li wrote: > boot_fdt_add_mem_rsv_regions() removes the ranges described by > gd->fdt_blob (the U-Boot control device tree) before adding those of > the new blob. It runs both in the BOOTM_STATE_FDT step and again from > image_setup_linux() during BOOTM_STATE_OS_PREP. > > In a stepped boot (bootm fdt followed by bootm prep) the second call > still sees gd->fdt_blob pointing at the control device tree, so it > frees the control tree's ranges a second time. LMB tracks plain ranges, > not their owner, so this also drops parts of the OS device tree's > reservations before re-adding them; the re-add then fails with -EEXIST > for the LMB_NOMAP regions. On Xiaomi crux this lost 128 KiB of the > XBL/AOP reservation at 0x85f20000-0x85f3ffff. > > Only add the reservations when the separate FDT step has not run.
Isn't this a more general bug? In other words when you just "bootm" we should be hitting this problem too, why aren't we? -- Tom
signature.asc
Description: PGP signature
