On 11/20/25 4:54 PM, Tom Rini wrote:
Hello Tom,
, and then
every follow-up location doesn't need to perform that (or possibly many
other as well) validation checks. My impression from when I looked at
the code last, a few year ago, was that it was designed with "validate
with most? every? function" and we would be happy enough with "validate
once".
If you can make that assumption -- that whatever we feed into libfdt is
valid -- then we can simply patch out can_assume() .
Maybe the question I have then is, why isn't can_assume being optimized
out at compile time, if we set the mask right. Makes me wonder if
there's not something to fix upstream too. Or maybe we need to change
the default to higher than 0?
Maybe because the mask is set differently for U-Boot and SPL , see:
CONFIG_SPL_OF_LIBFDT_ASSUME_MASK=0xff
CONFIG_OF_LIBFDT_ASSUME_MASK=0x0
Right. We might want a different default for full U-Boot at this point
(not assume perfect, but also not assume nothing).
For SPL, we assume perfect. For U-Boot, we assume not valid at all.
I think this configuration is actually what we want, keep SPL size
small, perform validation of DT in U-Boot because it might come from a
command line.
But still, I would
have hoped SPL growth was smaller, but perhaps I just need to
re-evaluate things. Let me know when you have a next iteration of
everything branch somewhere and I'll run the size growth build before
you post if you like and we can iterate on it.
The latest is always in u-boot-sh / test-dtc branch.