Hi Heinrich, On Tue, 15 Apr 2025 at 23:33, Heinrich Schuchardt <xypron.g...@gmx.de> wrote: > > On 4/5/25 21:07, Simon Glass wrote: > > At present it is impossible to change the qemu_arm64 defconfig to > > obtain a devicetree from the U-Boot build. > > > > This is necessary for FIT validation, for example, where the signature > > node must be compiled into U-Boot. > > This description looks wrong: > > Signatures are in FIT images. > > Only public keys to validate the signatures should be compiled into U-Boot. > > > > > A proposed change to QEMU to allow device tree additions has been > > blocked for several years. The only known workaround is to use QEMU's > > dumpdtb option, merge in the signature node manually, disable > > OF_HAS_PRIOR_STAGE and then start QEMU with special arguments. This is > > complicated enough that it is documented in U-Boot[1]. > > This seems to relate to > [PATCH] hw/arm/virt: Allow additions to the generated device tree > https://lore.kernel.org/qemu-devel/20210926183410.256484-1-...@chromium.org/ > > As your describe in [1] QEMU already provides a -dtb parameter if you > want a crafted device-tree. Your proposed change is confounding boot > stages and and would not provide value to the QEMU project. It was > therefore rejected for good. > > It remains unclear why you would disable OF_HAS_PRIOR_STAGE if you were > using QEMU's -dtb parameter. > > What would be the benefit of compiling the DT into U-Boot instead of > providing it via the -dtb parameter?
It is helpful when testing things in U-Boot, e.g. FIT validation. > > > > > Unfortunately the only way to disable OF_HAS_PRIOR_STAGE at present is > > to hack the Kconfig. > > > > Add a new QEMU_MANUAL_DTB Kconfig option which makes OF_HAS_PRIOR_STAGE > > optional, thus avoiding needing to patch U-Boot to get this working. > > > > This seems a clearer solution than just making OF_HAS_PRIOR_STAGE > > visible, since that symbol is intended to be set automatically by each > > platform. > > To me the new parameter is harder to use than simply making > CONFIG_OF_HAS_PRIOR_STAGE always editable. > > > > > [1] https://docs.u-boot.org/en/latest/develop/devicetree/dt_qemu.html > > The instructions that you provide in [1] are incorrect. > > "qemu-system-arm -machine virt -machine dumpdtb=qemu.dtb" > > The second machine statement overrides the first one. And the second one > will use the default machine which for instance on riscv64 is not virt. > > The correct invocation to download the device-tree would be: > > qemu-system-arm -M virt,dumpdtb=qemudtb I didn't actually send that code in this patch, but please do a patch if you have time. > > > > Link: > > https://patchwork.kernel.org/project/qemu-devel/patch/20210926183410.256484-1-...@chromium.org/#24481799 > > > > Signed-off-by: Simon Glass <s...@chromium.org> > > Suggested-by: Tom Rini <tr...@konsulko.com> > > --- > > > > Changes in v2: > > - Add a new QEMU-specific Kconfig instead > > > > arch/arm/Kconfig | 2 +- > > board/emulation/common/Kconfig | 12 ++++++++++++ > > doc/develop/devicetree/dt_qemu.rst | 5 +++++ > > dts/Kconfig | 9 +++++++-- > > This patch lacks proper documentation in doc/ OK I'll add something. > > > 4 files changed, 25 insertions(+), 3 deletions(-) > > > > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig > > index db8758e6dfe..b55ed61894a 100644 > > --- a/arch/arm/Kconfig > > +++ b/arch/arm/Kconfig > > @@ -1055,7 +1055,7 @@ config ARCH_QEMU > > imply DM_RNG > > imply DM_RTC > > imply RTC_PL031 > > - imply OF_HAS_PRIOR_STAGE if !TARGET_QEMU_ARM_SBSA > > + imply OF_HAS_PRIOR_STAGE if !TARGET_QEMU_ARM_SBSA && !QEMU_MANUAL_DTB > > imply VIDEO > > imply VIDEO_BOCHS > > imply SYS_WHITE_ON_BLACK > > diff --git a/board/emulation/common/Kconfig b/board/emulation/common/Kconfig > > index 4c15c8bcb89..3f9a6ea578f 100644 > > --- a/board/emulation/common/Kconfig > > +++ b/board/emulation/common/Kconfig > > @@ -13,3 +13,15 @@ config MTDPARTS_NOR1 > > help > > This define the partition of nor1 used to build mtparts dynamically > > for the u-boot env stored on nor1. > > + > > +config QEMU_MANUAL_DTB > > + bool "Manually provide a device tree to QEMU" > > + help > > + For some use cases, such as FIT validation where a public key must > > be > > + placed in U-Boot's device tree, we need to override the device tree > > + that QEMU would normally provide to us. > > + > > + Note: this work-around is necessary since Linaro has blocked > > + addition of a feature to support additions to the QEMU devicetree: > > + > > + Link: > > https://patchwork.kernel.org/project/qemu-devel/patch/20210926183410.256484-1-...@chromium.org/#24481799 > > diff --git a/doc/develop/devicetree/dt_qemu.rst > > b/doc/develop/devicetree/dt_qemu.rst > > index 8ba2b225590..c693b49d3d4 100644 > > --- a/doc/develop/devicetree/dt_qemu.rst > > +++ b/doc/develop/devicetree/dt_qemu.rst > > @@ -46,3 +46,8 @@ You can then run qemu with the merged devicetree, e.g.:: > > > > Note that there seems to be a bug in some versions of qemu where the > > output of > > dumpdtb does not quite match what is provided to U-Boot. > > + > > +See also the > > +`rejected QEMU patch > > <https://patchwork.kernel.org/project/qemu-devel/patch/20231117021840.117874-1-...@chromium.org>`_ > > +and > > +`discussion > > <https://patchwork.kernel.org/project/qemu-devel/patch/20210926183410.256484-1-...@chromium.org>`_. > > diff --git a/dts/Kconfig b/dts/Kconfig > > index 2e88d210bb8..53f7e246a80 100644 > > --- a/dts/Kconfig > > +++ b/dts/Kconfig > > @@ -205,8 +205,13 @@ config OF_HAS_PRIOR_STAGE > > development purposes, but it is not recommended, and likely will not > > even work, for production systems. > > > > - Note: This option must be set in Kconfig and cannot be enabled or > > - disabled in the board's defconfig file. > > + Note: This option can be disabled for QEMU usiing QEMU_MANUAL_DTB > > thus > > %s/usiing/using/ Will fix. > > Best regards > > Heinrich > > > + allowing QEMU to support FIT validation, where the devicetree must > > + include a public key. > > + > > + See also this for context: > > + > > + > > https://patchwork.kernel.org/project/qemu-devel/patch/20210926183410.256484-1-...@chromium.org/#24481799 > > > > config OF_OMIT_DTB > > bool "Omit the device tree output when building" >