With several new Qualcomm platforms appearing on the mailing list, all of which build U-Boot as an ELF, sign it, and then flash it to some partition on the board, we're getting a lot of defconfigs which just contain a debug UART and a TEXT_BASE address. This leads to needless rebuilds in CI of effectively the same image, and needless duplication of build instructions.
To address this, let's introduce a new tool "mkmbn.py", this is based on the existing qtestsign[1] tool but is (currently) hardcoded to only handle the Dragonwing and IPQ boards which use MBN header v6. Additionally, the tool contains a lookup table that maps from a boards DT compatible property to the load address it needs. Since it's highly unusual for different boards using the same SoC to have different load addresses, generic platform matching is also done (e.g. "qcom,qcm6490"). With this tool in place, we teach binman to use it and introduce a qcom-binman.dts file to describe the image. The tool will emit a u-boot.mbn file for supported platforms, for unsupported platforms the u-boot MBN etype in binman will print a notice explaining that no mbn file is built and to look at tools/qcom/mkmbn/mkmbn.py Finally, the defconfigs are cleaned up by moving the debug UART definitions to config fragments (since it doesn't make sense to have them enabled by default anyway) and remove CONFIG_REMAKE_ELF. Notably, the qcs9100_defconfig is removed entirely since the same binary can be created with just make arguments. This platform entirely lacked documentation to begin with, which should be addressed by future patches. The Qualcomm documentation is also cleaned up, a new "signing" page is added to briefly cover the what and why of MBN signing, and board specific pages are updated to explain the new build process. These patches have been tested on the RB3 Gen 2, but additional testing for other platforms would be super useful. [1]: https://github.com/msm8916-mainline/qtestsign To: Tom Rini <tr...@konsulko.com> To: Neil Armstrong <neil.armstr...@linaro.org> To: Sumit Garg <sumit.g...@kernel.org> Cc: u-boot@lists.denx.de Cc: u-boot-q...@groups.io Cc: Varadarajan Narayanan <quic_var...@quicinc.com> Cc: Balaji Selvanathan <balaji.selvanat...@oss.qualcomm.com> Cc: Aswin Murugan <aswin.muru...@oss.qualcomm.com> Signed-off-by: Casey Connolly <casey.conno...@linaro.org> --- Changes in v3: - Fixup Makefiles and add missing qcom-binman.dts - Adjust wording to reflect changes to build process - Link to v2: https://lore.kernel.org/r/20250602-b4-qcom-tooling-improvements-v2-0-c7d19c0d4...@linaro.org Changes in v2: - Reworked to use binman with a plugin to build the u-boot.mbn file - Added some fixes for binman to work with OF_UPSTREAM and with tools in the srctree toolpath rather than objtree for out of tree builds. - Link to v1: https://lore.kernel.org/r/20250522-b4-qcom-tooling-improvements-v1-0-8141b8955...@linaro.org --- Casey Connolly (7): binman: add $(srctree)/tools to toolpath binman: support building binman dtb when OF_UPSTREAM is enabled tools: add mkmbn tool for Qualcomm binman: add support for building Qualcomm signed MBN ELF images configs: qualcomm: use fragments for debug UART qualcomm: use mkmbn via binman and stop creating ELF files doc: board/qualcomm: update docs for new u-boot.mbn target Makefile | 5 + arch/arm/Kconfig | 1 + arch/arm/dts/qcom-binman.dts | 16 ++ board/qualcomm/debug-qcm6490.config | 5 + board/qualcomm/debug-qcs9100.config | 5 + configs/qcm6490_defconfig | 10 -- configs/qcom_defconfig | 2 + configs/qcom_ipq9574_mmc_defconfig | 1 - configs/qcs9100_defconfig | 10 -- doc/board/qualcomm/index.rst | 1 + doc/board/qualcomm/rb3gen2.rst | 27 ++-- doc/board/qualcomm/rdp.rst | 5 +- doc/board/qualcomm/signing.rst | 29 ++++ dts/Makefile | 19 ++- tools/binman/btool/mkmbn.py | 29 ++++ tools/binman/etype/u_boot_mbn.py | 51 ++++++ tools/mkmbn | 1 + tools/qcom/mkmbn/cert.py | 158 ++++++++++++++++++ tools/qcom/mkmbn/elf.py | 243 ++++++++++++++++++++++++++++ tools/qcom/mkmbn/hashseg.py | 308 ++++++++++++++++++++++++++++++++++++ tools/qcom/mkmbn/mkmbn.py | 154 ++++++++++++++++++ 21 files changed, 1042 insertions(+), 38 deletions(-) --- base-commit: a1a56a09c3460341d9017373263742eefa63ecfd change-id: 20250522-b4-qcom-tooling-improvements-ab40585b11a1 Casey Connolly <casey.conno...@linaro.org>