On Mon, Jan 29, 2024 at 04:45:00PM -0800, Stephen Boyd wrote: > Call this function unconditionally so that we can populate an empty DTB > on platforms that don't boot with a firmware provided or builtin DTB. > Override 'initial_boot_params' to NULL when ACPI is in use but the > bootloader has loaded a DTB so that we don't allow both ACPI and DT to > be used during boot. If there isn't a valid initial_boot_params dtb then > unflatten_device_tree() returns early so this is fine. > > Cc: Rob Herring <robh+dt@xxxxxxxxxx> > Cc: Frank Rowand <frowand.list@xxxxxxxxx> > Cc: Catalin Marinas <catalin.marinas@xxxxxxx> > Cc: Will Deacon <will@xxxxxxxxxx> > Cc: Mark Rutland <mark.rutland@xxxxxxx> > Cc: <linux-arm-kernel@xxxxxxxxxxxxxxxxxxx> > Signed-off-by: Stephen Boyd <sboyd@xxxxxxxxxx> > --- > arch/arm64/kernel/setup.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c > index 417a8a86b2db..ffb1942724ae 100644 > --- a/arch/arm64/kernel/setup.c > +++ b/arch/arm64/kernel/setup.c > @@ -351,8 +351,11 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p) > /* Parse the ACPI tables for possible boot-time configuration */ > acpi_boot_table_init(); > > - if (acpi_disabled) > - unflatten_device_tree(); > + /* Don't use the FDT from boot if ACPI is in use */ > + if (!acpi_disabled) > + initial_boot_params = NULL; I still think this is a problem for kexec. See of_kexec_alloc_and_setup_fdt(). You see it uses initial_boot_params. At first glance it looks like it would just write out everything we need. But for UEFI boot, I think we need all the chosen properties like linux,uefi-mmap-start preserved from the current boot for the next kernel we kexec. I think you'll have to check acpi_disabled in unflatten_device_tree() and unflatten the empty tree leaving initial_boot_params alone. That means our FDT and unflattened tree will be different DTs, but I think that's fine. Rob