On Fri, Dec 29, 2023 at 12:23 AM Tom Rini <tr...@konsulko.com> wrote: > > On Thu, Dec 28, 2023 at 07:48:08PM +0000, Simon Glass wrote: > > Hi Tom, > > > > On Thu, Dec 28, 2023 at 3:40 PM Tom Rini <tr...@konsulko.com> wrote: > > > > > > On Thu, Dec 28, 2023 at 03:09:40PM +0000, Simon Glass wrote: > > > > Hi Tom, > > > > > > > > On Thu, Dec 28, 2023 at 2:23 PM Tom Rini <tr...@konsulko.com> wrote: > > > > > > > > > > On Thu, Dec 28, 2023 at 01:37:07PM +0000, Simon Glass wrote: > > > > > > Hi Tom, > > > > > > > > > > > > On Wed, Dec 27, 2023 at 1:21 PM Tom Rini <tr...@konsulko.com> wrote: > > > > > > > > > > > > > > On Wed, Dec 27, 2023 at 08:23:56AM +0000, Simon Glass wrote: > > > > > > > > > > > > > > > U-Boot builds devicetree binaries from its source tree. As part > > > > > > > > of the > > > > > > > > Kconfig conversion, the Makefiles were updated to align with > > > > > > > > how this > > > > > > > > is done in Linux: a single target for each SoC is used to build > > > > > > > > all the > > > > > > > > .dtb files for that SoC. > > > > > > > > > > > > > > > > Since then, the Makefiles have devolved in some cases, > > > > > > > > resulting in > > > > > > > > lots of target-specific build rules. Also Linux has moved to > > > > > > > > using > > > > > > > > subdirectories for each vendor. > > > > > > > > > > > > > > > > Recent work aims to allow U-Boot to directly use devicetree > > > > > > > > files from > > > > > > > > Linux. This would be easier if the directory structure were the > > > > > > > > same. > > > > > > > > Another recent discussion involved dropping the build rules > > > > > > > > altogether. > > > > > > > > > > > > > > > > This series makes a start at cleaning up some of the build > > > > > > > > rules, to > > > > > > > > reduce the amount of code and make it easier to add new boards > > > > > > > > for the > > > > > > > > same SoC. > > > > > > > > > > > > > > > > One issue is that the ARCH_xxx Kconfig options between U-Boot > > > > > > > > and Linux > > > > > > > > are not always the same. Given the large number of SoCs and > > > > > > > > boards > > > > > > > > supported by U-Boot, it would be useful to align these where > > > > > > > > possible. > > > > > > > > > > > > > > I don't know why we should start with this now, and further not > > > > > > > being on > > > > > > > top of Sumit's series to remove our duplicate dts files. And > > > > > > > that's > > > > > > > where we can have the conversation about for which cases it even > > > > > > > makes > > > > > > > sense to build all of the dts files for a given SoC. > > > > > > > > > > > > This is a completely different series - there are no conflicts with > > > > > > Sumit's series so it can be applied before or after it. > > > > > > > > > > > > My goal here is to clean up our build rules, rather than just > > > > > > throwing > > > > > > them all away, for reasons we have discussed previously. I filed [1] > > > > > > to track that. > > > > > > > > > > Yes, I'm saying we shouldn't be doing anything this series does until > > > > > after Sumit's series has landed. Along with the fact that I don't like > > > > > what's going on in this series. > > > > > > > > This seems to again be the disagreement over whether a single DT > > > > should be build for each board, or all the DTs for an SoC? > > > > > > It's about the disagreement on what we should be building, and what that > > > infrastructure looks like. I do not like adding extra rules for > > > "clarity" because they don't make things clearer, they lead to the > > > unclear mess we have today getting worse. Most instructions are _not_ > > > "now take this dtb and this binary and .." but just "take this binary", > > > because we already have the rules and logic to ensure we build the > > > required dtbs. I also don't like the parts of this series that amount > > > to deck shuffling when we should just be taking the chairs away. There's > > > just not nor will there be a case for omap3/4/5 platforms of "change the > > > dtb", so building more is pointless. For other SoCs, there may be some > > > cases of "this could have been just a DT change", like > > > rock5b-rk3588_defconfig / rock5a-rk3588s_defconfig could share a board > > > dir, but the configs are different and the dts are different, so I don't > > > know that you could really just swap the dtbs. > > > > It is true that we have a different defconfig for each board, but IMO > > that is not good. It is an artifact of the way the build system works. > > IMO Kconfig should be used to define sensible defaults so that the > > defconfigs are nearly empty. Perhaps config fragments can be part of > > the mix, if we can agree on [1]. > > > > But if we let this genie out of the bottle, it will be impossible to > > put back in. The devicetree should control the hardware in U-Boot and > > it should be possible to use the same U-Boot proper on all boards > > which use the same SoC. > > We've never been past the point where a few examples of closely related > boards can re-use the same U-Boot build and just change the device tree. > > It's going to be very SoC specific if we can ever do things like that, > and it will also likely in turn become a question of where did the > tricky bits that U-Boot used to do get shoved instead. You're not going > to combine board/beagle/beagle/beagle.c and board/ti/omap3evm/evm.c (and > ignoring all of the other omap3 boards) and get one binary that works on > both, and just uses DT. Let alone that no one wants to do that work. > > You've mentioned Rockchip before as maybe a better example, but > https://patchwork.ozlabs.org/project/uboot/list/?series=383579&state=* was > leading me to think that no, there's too much "this is what THIS > hardware does" that means that no, there's going to be hardware > variation that one must just handle in C. Or get more and new bindings > accepted upstream to try and make that be data driven, and also possibly > have to deal with "that's policy, not hardware" type arguments and so > forth.
Related I've seen issues with nearly identical rockchips devices that use different memory chips that as a result need different U-Boot builds because the early boot part needs to initialise a completely different set of memory and the two different sets of rules aren't detectable at run-time nor are they even small enough to fit into smem. > > [1] https://patchwork.ozlabs.org/user/todo/uboot/?series=380278 > > Note that patchwork is annoying here and that for a series you've > assigned, you need to click on a patch in it, then the series link again > to get: > https://patchwork.ozlabs.org/project/uboot/list/?series=380278 > which works for everyone. And append '&state=*' so that archive links > will still show it later once it's been accepted or superseded or what > have you. > > -- > Tom