Re: [PATCH 1/6] arm64: Unconditionally call unflatten_device_tree()

From: Rob Herring
Date: Wed Jan 17 2024 - 12:55:27 EST


On Tue, Jan 16, 2024 at 05:27:18PM -0800, Stephen Boyd wrote:
> Quoting Mark Rutland (2024-01-16 03:51:14)
> > Hi Stephen,
> >
> > On Fri, Jan 12, 2024 at 12:07:44PM -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.
> > > There's no harm in calling unflatten_device_tree() unconditionally.
> >
> > For better or worse, that's not true: there are systems the provide both a DTB
> > *and* ACPI tables, and we must not consume both at the same time as those can
> > clash and cause all sorts of problems. In addition, we don't want people being
> > "clever" and describing disparate portions of their system in ACPI and DT.
> >
> > It is a very deliberate choice to not unflatten the DTB when ACPI is in use,
> > and I don't think we want to reopen this can of worms.
>
> Hmm ok. I missed this part. Can we knock out the initial_boot_params in
> this case so that we don't unflatten a DTB when ACPI is in use?

You mean so we don't unflatten the boot DTB, but instead unflatten the
empty one, right? That sounds fine.

Another thing to check is kexec because it will still need the original
DTB I think. Though if you are doing ACPI boot and kexec'ing, kexec may
write out everything needed by the next kernel and the empty DTB would
work just fine. Of course those users booting with ACPI and then
kexec'ing to DT boot will be broken. Perhaps that's a feature...

Rob