
On Fri, Mar 31, 2023 at 09:39:53AM +0100, Peter Robinson wrote:
Hi Simon,
> I took a look at Simon's v3 series to fix the rk3399 bootstd migration, > and it changed too much for everything else. I took about half of that > series and then reworked a few things. Now only rk3399 platforms change > at all and aside from bootcmd changes, the only thing is they now > disable true/test/sysboot/showvar/false/exit commands as those were > being pulled in from distro and now we don't set that flag. I think the > way I changed how we enable BOOTSTD_DEFAULTS should make it easier to > perform more SoC migrations.
Thanks for digging into this. I haven't seen any comments on the rpi conversion, so perhaps people could test that?
I was planning on looking at that once 2023.04 was out but TBH I have wasted so much time over the last few cycles dealing with regressions through a bunch of these series that I now have so little time for enhancements I now shy away. I know a lot of these series should improve things in the future but they don't feel like when there's unnecessary changes for things that are clearly untested.
I too am unhappy with how some of these have gone. The _intent_ here is that getting the current "boot generic distro" framework is complex / error prone, and we can do better. Unfortunately the first set of platforms to switch to this are Rockchip and I think there was overlap there with platforms that got broken at the end of the v2023.01 cycle to fix other platforms, and then those sets of platforms flipped early in v2023.04 and took until -rc2? to get resolved. Which was less than ideal.
There's also a lot of change for changes sake, for example the rockchips ATF binaries needed is called bl31.elf by the default output of the ATF build process, for others it's bl31.bin, binman for what ever reason has changed that to be atf-bl31, now I have to change the entire build process to be able to work out what is what on a board by board basis to be able to set the required variable to be able to specify the ATF where previously it "just worked (tm)"..... I suppose there is some perceived goal and improvement here but with both my "U-Boot device maintainer" and "distro maintainer" hats on, both of which I do in my own spare time, I currently fail to see it and I end up.
I wish I knew where to talk to with ATF / TF-A to get some agreed upon naming scheme going as one of the things that is very frustrating is getting the names and combinations of everything else that's required Just Right for every chip. And feedback that things aren't working is appreciated, since we do need to make things easier.
In all of the various make_fit_atf.py the various vendors specified them, this is the case for the rockchip one [1]. This is the case for the Allwinner boards [2] but the rockchip ports have missed this so it also should be fixed for GA.
Can you do a patch to fix this regression please and then specify the correct pieces in the binman section then?
A side point is that binman should not be storing firmware build specifics in the device tree which is a means of describing the hardware, This really needs to be fixed as it really isn't the right place for that sort of things. I suspect a file in arch/arm/mach-<SOC> is likely a better location, or if it's board specific in the board/ sub directory.
Sorry, I don't agree with that at all. We store configuration information in devicetree in firmware as this seems to be best format for it, particularly with the growing number of firmware components that need to share this information at runtime. The layout of firmware is an important part of the system. We are still figuring out the flows though. Also I have not attempted to upstream the binman binding. I am very open to ideas on how best to do that.
Rob what's your thoughts on the binman firmware build pieces being in device tree and the process on upstreaming the bindings?
One question I have is, with your distribution person hat on, what do you think the right answer here is? It's not that U-Boot requires TF-A (and also other blobs depending on SoC) but rather that modern ARM SoCs are like x86-64 SoCs have been for ages and require multiple parts to get assembled "just so", to result in something that initializes enough of the system to get to loading something that can load the OS, and also provide assorted run time services. You have one set of fixups for amlogic SoCs, another for sunxi, yet another for imx8* and so on. And so long as the software does the job, some of those parts can be swapped for different ones. U-Boot has binman *stuff* because it's really useful for us to be able to take an output and test our part of the world. And since it's gotten more and more complex over the years, we've moved from handfuls of one-off tools to binman with the intention of making it easier, not harder, for the case of "I care about multiple vastly different SoCs".