Re: [External] Re: [PATCH] firmware: added a firmware information passing method FFI

From: Mark Rutland
Date: Thu Apr 27 2023 - 07:25:06 EST


On Wed, Apr 26, 2023 at 09:04:56PM -0700, ron minnich wrote:
> The device tree is self describing data. Adding new information is easy. If you
> add new information to a node, and older software does not know about it, it is
> no big deal.

It's true that it's easy to add fields to an extensible format, but that wasn't
my point of contention. The *semantic* (e.g. all of the relevant DT bindings)
and *consumption* of that data is the important part, and that's what I was
referring to, though I appreciate my wording did not make that clear.

> So I can't agree with this comment: "We'd have to create entirely new ways to
> pass that information, which is not
> very desirable."
>
> The whole point of the dt is that you can always add new ways to pass
> information, by design.
>
> Adding memory attributes would be quite easy.

I don't disagree that is physically possible, and in isolation adding
properties to a DT is trivial, but the approach proposed is not "easy" unless
you ignore the cost of specifying analogues for all the EFI portions that you
plan to omit, ensuring that those stay functionally equivalent to their EFI
analogues as EFI and ACPI evolve over time, developing and maintaining the code
which must consume that, avoiding the issues that will arise due to novel
interactions (as e.g. DT and ACPI are mutually exclusive today, by design),
etc.

For example, the UEFI memory map is semantically and structurally different
from DT memory nodes. It encodes *different* information, and in practice needs
to encode a larger number of physical extents with properties (e.g.
cacheability, permissions) associated with each extent. The existing DT memory
nodes format isn't really amenable to encoding this, inventing a parallel
structure for this opens up all the usual problems of the two becoming
out-of-sync, and inventing a new mechanism to describe all of this in a
consistent way duplicates all the work done for EFI.

I appreciate that at a high level of abstractions this seems conceptually
simple, but in practice this is a complex area where components have subtle and
often implicit dependencies, and so there is inherent fractal complexity.

Thanks,
Mark.

> On Wed, Apr 26, 2023 at 8:38 PM 运辉崔 <cuiyunhui@xxxxxxxxxxxxx> wrote:
>
> Hi Mark,
>
> On Wed, Apr 26, 2023 at 6:07 PM Mark Rutland <mark.rutland@xxxxxxx> wrote:
> >
> > Ard's point is that the device tree doesn't have all the same information
> (e.g.
> > nothing in DT describes the memory type attributes), and so this isn't
> > sufficient.
>
> The device tree only needs to complete the parse of the memory type
> attributes,
> it should not be very complicated.
>
> >
> > We'd have to create entirely new ways to pass that information, which is
> not
> > very desirable.
> >
>
> >
> > Can you extend coreboot to provide EFI services, or to chain-load an EFI
> > payload?
>
> Currently, coreboot does not support UEFI, and it may not support it
> in the future.
> Hi rminnich, what do you think?
>
> Thanks,
> Yunhui
>