From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 30BDBC432BE for ; Thu, 26 Aug 2021 19:55:12 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5FF4660F35 for ; Thu, 26 Aug 2021 19:55:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5FF4660F35 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D396B82EA5; Thu, 26 Aug 2021 21:55:08 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="F2yixsXu"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id C0EFE8319C; Thu, 26 Aug 2021 21:55:06 +0200 (CEST) Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id D678082DBA for ; Thu, 26 Aug 2021 21:55:01 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@google.com Received: by mail-wr1-x42e.google.com with SMTP id t15so616646wrg.7 for ; Thu, 26 Aug 2021 12:55:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=rz2R8dSo0qR8mBa+idcUWmbMl6FDCIaPCVof2oNaH94=; b=F2yixsXu/m/AuvTU+wbDX9t4W/pawEPeKirIqTfrAOT65eIXwVuXtgXAh7lVNtIdjJ 4UX+3UkTJQsumI2Qyb6rztXH/+PlYK9j7GiAPeyFe6Oa/J+f4/rV2EH+azSf4W3cB5Al 6Ff8rNSP3e+tfkKcLiPEUh4MVnmf3QxFQiKHA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=rz2R8dSo0qR8mBa+idcUWmbMl6FDCIaPCVof2oNaH94=; b=l0m/jaklOc3fpsT7FwbMFUuW7uy85GksxtRPFZdpSg6A/QGMPzeOGz7pXAmFcYWkQ0 Vw+nQmpmd1xTreVOs9qthYp0F1ZCH+4qXZB82mnxxHxq3jYKi4KR2cxgo1rWF+rLW4xw 0FRwcbVaTVVPymS/6A6/a5wB5LCgZzOpvjxACcLN8c3fFCJAqoqUu77ApfUg+7xV1MhU eaexI9x7/3DlgNhsqSN/RoEpigDUlOhTdLHS5/d+8CfBr+aHFWf7pkgzuonT6je1nrGv Yr794aBaeVsHORL1unyE/5uol9Z3RJjtxfGVKltSVzS/9qiqvC8HuBy0pdXjhCy36cwV nrEw== X-Gm-Message-State: AOAM531H3JmCq7OQ27oR1zFffF7S6fcPRVo/AT0Do/8uCI6PfmXaS4FM XvvC3cWicjGSdik8urWD0xvnGquqVqf+wTyRO0J+Xg== X-Google-Smtp-Source: ABdhPJxD+hzkJGe/3egfRn2hbrs6bM0zBYgXz/qzUiG1JxNjE02OQCVCpWl6kYaoNCd0mzGlsm4nYy5HDzA0iEJL0tg= X-Received: by 2002:adf:feca:: with SMTP id q10mr5968125wrs.420.1630007701114; Thu, 26 Aug 2021 12:55:01 -0700 (PDT) MIME-Version: 1.0 References: <344db9d3-38fc-2ef4-beaf-cc3b40f613fa@gmx.de> In-Reply-To: <344db9d3-38fc-2ef4-beaf-cc3b40f613fa@gmx.de> From: Simon Glass Date: Thu, 26 Aug 2021 13:54:49 -0600 Message-ID: Subject: Re: Usage of device-tree for blobs To: Heinrich Schuchardt Cc: Ilias Apalodimas , U-Boot Mailing List Content-Type: text/plain; charset="UTF-8" X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean Hi Heinrich, On Thu, 26 Aug 2021 at 01:10, Heinrich Schuchardt wrote: > > On 8/26/21 5:15 AM, Simon Glass wrote: > > Hi Heinrich, > > > > On Wed, 25 Aug 2021 at 02:05, Heinrich Schuchardt wrote: > >> > >> Hello Simon, > >> > >> some boards like qemu-riscv64_defconfig do not use any device-tree at > >> build time. A device-tree is only supplied at runtime by the prior boot > >> stage (CONFIG_OF_PRIOR_STAGE=y). > >> > >> In doc/develop/devicetree/intro.rst you suggest to put binary blobs into > >> the device-tree. > >> > >> Could you, please, update the documentation to explain how adding blobs > >> to the device-tree works in the different scenarios depending on the > >> values of: > >> > >> CONFIG_OF_EMBED > >> CONFIG_OF_SEPARATE > >> CONFIG_OF_BOARD > >> CONFIG_OF_HOSTFILE > >> CONFIG_OF_PRIOR_STAGE > >> > >> It would be especially important to understand how one can develop a > >> board independent feature which works for all of these settings. > > > > OK I will take a crack at this tomorrow. > > > > But I think there is a disconnect here, since the only options that > > matter within U-Boot are OF_SEPARATE and OF_HOSTFILE, which both use a > > u-boot.dtb file. There is nothing tricky here. > > The following boards use OF_PRIO_STAGE: > > * QEMU > * bcm7260_defconfig > * bcm7445_defconfig > * ae350_rv32_defconfig > * ae350_rv32_spl_defconfig > * ae350_rv64_defconfig > * ae350_rv64_spl_defconfig Most of these seem OK as they have an in-tree DT. But the arm and riscv qemus and the bcm builds do not: bcm7260_defconfig bcm7445_defconfig configs/qemu_arm64_defconfig configs/qemu_arm_defconfig configs/qemu-ppce500_defconfig configs/qemu-riscv32_defconfig configs/qemu-riscv32_smode_defconfig configs/qemu-riscv64_defconfig configs/qemu-riscv64_smode_defconfig I think we are going to have to ban this. We are not really testing the build at all, and it presumably depends on the version of qemu that is used. It's OK to provide the DT to U-Boot as one flow, but not to completely drop it from the tree. Where is the qemu source code that creates these DTs? > > > > > The OF_BOARD business is for when the board does special things. > > Presumably signing will do special things too. We cannot really know > > what those things are because the board as 'opted out' of the standard > > options. > > > >> > >> Please, describe CONFIG_OF_PRIOR_STAGE in > >> doc/develop/devicetree/control.rst. > > > > So I'm not allowed to delete that option? :-) > > No. > > > It seems to me to be > > extremely sparse on documentation. We need an explanation of what it > > means and what effect it has on the build system, U-Boot and some > > discussion of how qemu works. It seems to have been added as part of > > an unrelated broadcom commit. The tags were incorrect so I doubt > > anyone noticed it. Since then it has apparently proved useful > > elsewhere, but no one has added more docs. > > > > So perhaps you can help me with my doc by explaining how > > OF_PRIOR_STAGE works in qmeu, why the DT in U-Boot cannot be used, and > > which project actually hosts the DT that qemu provides? Armed with > > that information, I might be able to make sense of it all. > > The DT provided by QEMU is not hosted anywhere. It is generated on the > fly by QEMU in dependence of the command line arguments that are used > for calling QEMU. The project is hosted at > > https://github.com/qemu/qemu. 404 on that. Do you have a link to the code that actually generates the DT? > > On RISC-V the address of the device-tree of the prior bootstage is > provided in register t0. > > On ARM platforms QEMU places the device-tree at 0x40000000. > > QEMU is not the only platform where the prior boot stage supplies the > device-tree which is to be used for booting the operating system. Any > platform using TF-A or OpenSBI can be setup in this way. > > Generally it would be preferable that the prior boot stage provides the > device-tree. But unfortunately Linux is not always backwards compatible. > > Don't expect the device-tree of the prior stage to contain any U-Boot > specific quirks. This is my concern. I think every board in U-Boot needs at least a basic DT, even if only a skeleton, so we have places to put things. Any packaging at all needs a binman node, for example. U-Boot also has its own options for certain things. Also, where does the environment come from on these boards? Having the env in one tree and the DT in another must make things very interesting. Regards, Simon