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

Attachment: signature.asc
Description: PGP signature

Reply via email to