[PATCH] Makefile: binman: Search board directory before srctree
Simon Glass
sjg at chromium.org
Sat May 23 11:18:23 CEST 2026
Hi Tom,
On Mon, 18 May 2026 at 11:30, Tom Rini <trini at konsulko.com> wrote:
>
> On Sun, May 17, 2026 at 04:52:10PM -0600, Simon Glass wrote:
> > Hi Tom,
> >
> > On Fri, 15 May 2026 at 12:44, Tom Rini <trini at konsulko.com> wrote:
> > >
> > > On Fri, May 15, 2026 at 12:32:30PM -0600, Simon Glass wrote:
> > > > Hi Tom,
> > > >
> > > > On Fri, 15 May 2026 at 12:24, Tom Rini <trini at konsulko.com> wrote:
> > > > >
> > > > > On Fri, May 15, 2026 at 12:13:50PM -0600, Simon Glass wrote:
> > > > > > Hi Tom,
> > > > > >
> > > > > > On Fri, 15 May 2026 at 10:03, Tom Rini <trini at konsulko.com> wrote:
> > > > > > >
> > > > > > > On Fri, May 15, 2026 at 09:35:10AM -0600, Simon Glass wrote:
> > > > > > > > Hi Tom,
> > > > > > > >
> > > > > > > > On Fri, 15 May 2026 at 08:54, Tom Rini <trini at konsulko.com> wrote:
> > > > > > > > >
> > > > > > > > > On Fri, May 15, 2026 at 07:43:27AM +0200, Wadim Egorov wrote:
> > > > > > > > >
> > > > > > > > > > A file like rm-cfg.yaml accidentally left in the source tree root
> > > > > > > > > > shadows the board-specific copy. binman builds the wrong YAML, the
> > > > > > > > > > resulting rm-cfg.bin may match a different SoC, and we end up with
> > > > > > > > > > the following error:
> > > > > > > > > >
> > > > > > > > > > k3_system_controller sysctrler: k3_sysctrler_start:
> > > > > > > > > > Boot Notification response failed. ret = -110
> > > > > > > > > >
> > > > > > > > > > Move the board directory ahead of the srctree root so that the
> > > > > > > > > > most-specific match wins.
> > > > > > > > > >
> > > > > > > > > > Signed-off-by: Wadim Egorov <w.egorov at phytec.de>
> > > > > > > > > > ---
> > > > > > > > > > Makefile | 2 +-
> > > > > > > > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > > > > > >
> > > > > > > > > > diff --git a/Makefile b/Makefile
> > > > > > > > > > index 552328f9f2c..1ec29dfe0be 100644
> > > > > > > > > > --- a/Makefile
> > > > > > > > > > +++ b/Makefile
> > > > > > > > > > @@ -1682,7 +1682,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \
> > > > > > > > > > build -u -d $(binman_dtb) -O . -m \
> > > > > > > > > > --allow-missing --fake-ext-blobs \
> > > > > > > > > > $(if $(BINMAN_ALLOW_MISSING),--ignore-missing) \
> > > > > > > > > > - -I . -I $(srctree) -I $(srctree)/board/$(BOARDDIR) \
> > > > > > > > > > + -I . -I $(srctree)/board/$(BOARDDIR) -I $(srctree) \
> > > > > > > > > > $(foreach f,$(of_list_dirs),-I $(f)) -a of-list=$(of_list) \
> > > > > > > > > > $(foreach f,$(BINMAN_INDIRS),-I $(f)) \
> > > > > > > > > > -a atf-bl1-path=${BL1} \
> > > > > > > > >
> > > > > > > > > Why do we need to look in $(srctree) itself?
> > > > > > > >
> > > > > > > > See for example:
> > > > > > > >
> > > > > > > > arch/arm/dts/k3-j721e-binman.dtsi:308: private-key =
> > > > > > > > "arch/arm/mach-k3/keys/custMpk.pem";
> > > > > > >
> > > > > > > That's not great, I'm sorry I missed it at the time. I wonder how easy
> > > > > > > replacing that key is with a non-dummy key. Hopefully it's done in a way
> > > > > > > that doesn't encourage checking private keys in to repositories..
> > > > > >
> > > > > > Typically we would use an environment var passed in from the Makefile,
> > > > > > as we do with BL31, TEE, TI_DM, etc.
> > > > > >
> > > > > > >
> > > > > > > > Also, people sometimes put files in the source tree, e.g. BL31 images,
> > > > > > > > in the hope that they will be found.
> > > > > > >
> > > > > > > That's also a bad practice and what BINMAN_INDIRS is for.
> > > > > >
> > > > > > Yes, but that came quite a bit later with the bintool stuff (2021).
> > > > > >
> > > > > > Anyway, with a bit of work I believe we could drop the source dir.
> > > > > > Would you like to look at it, or should I?
> > > > >
> > > > > Well, the first step would be getting some more feedback on how people
> > > > > override some of these files for example. Even more environment files
> > > > > seems like a bad idea and I'm not sure what BINMAN_INDIRS can't cover
> > > > > today.
> > > >
> > > > Assuming you mean 'environment variables', we do need the actual
> > > > filename, not just the directory. We could have default filenames for
> > > > each entry type, I suppose. Some do already.
> > >
> > > Yes, I think moving that way is the right direction. I was going to use
> > > -scp-path=$(SCP) as an example of something to move away from, but it
> > > looks like that's already being done in a way BINMAN_INDIRS should
> > > handle.
> >
> > Yes, the idea is that '-a scp-path=$(SCP)' tells the scp entry-type
> > the filename to use. I'm pretty sure we could update the tests to set
> > that entry-arg, so we don't need the source dir in the path.
>
> But we shouldn't need anything at all if BINMAN_INDIRS is set to include
> that path. We currently just have "scp.bin" in the dts file. Adding
> -scp-path was a solution that made sense at the time, but as we've
> needed to deal with more blobs, we added a generic solution, and now
> just need to deprecate and remove the original per-blob solution.
We still need the SCP option in Makefile though, right? For BL31 we
often have different filenames - see the Rockchip rkbin directory, for
example. So we cannot always use the same filename.
But if you are just saying that we should define GetDefaultFilename()
in scp.py (to return 'scp.bin'), so as to avoid needing 'scp.bin' in
the DT node, then yes that should work.
>
> > But in any case this patch is correct for now.
>
> Agreed.
Regards,
Simon
More information about the U-Boot
mailing list