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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 18B18C433EF for ; Fri, 22 Oct 2021 16:08:08 +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 11C756112F for ; Fri, 22 Oct 2021 16:08:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 11C756112F 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 4868B833AE; Fri, 22 Oct 2021 18:08:05 +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="A4ksmkFd"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 6F524831CA; Fri, 22 Oct 2021 18:08:03 +0200 (CEST) Received: from mail-ua1-x935.google.com (mail-ua1-x935.google.com [IPv6:2607:f8b0:4864:20::935]) (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 F3983833AE for ; Fri, 22 Oct 2021 18:07:58 +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-ua1-x935.google.com with SMTP id h4so8690871uaw.1 for ; Fri, 22 Oct 2021 09:07:58 -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=k2ls+vulf9Eu7JVZMsbjNaisaDxEgMul0Z4RS7z/2eE=; b=A4ksmkFd4Z6gO6epjXjyVskQEjGGx5iAD/oMtrdwlqjgxDDVSqJJkZ0rhT329HAj6S xtS6u77mkCspw4lrg81/LA1wui3O9cZF/7I0+KsNq1BT7raKWGfY+HcG7ZbpDLhPGzAK brG825E8t+sKseCKJdobded/+sbOeQ+9ehQ8M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=k2ls+vulf9Eu7JVZMsbjNaisaDxEgMul0Z4RS7z/2eE=; b=LeiBGfxaYmFBtlK31kbHo21dGjsVbs9+eBkNbwm/02iJ2ApWKHaudyRQntk22YDmBM rnXcyfcTn3otMmm1jOaUAluWjeI6z/wbI0CR/5tRdMI7D9cW8yHPpS+kQvoQehcBid95 msNRnwXy9BisuJPMR3lc/5ztLeUC2KbvaURvoItTGraBt8ORXnNEwZnGjViWx5tqLrPz Aws58wsFNik7aYZ89CR303UIIQiQjy/09noDkyaEPz8cD+EW0a5WvFJSBQnwWhYR4dA3 SlPgoNa1R/jGCYDmiKzAPmNThtpzodls0RIvmMu23sUxAuSIAhF1jXHqOUf9zoTtcY/i 9Y5Q== X-Gm-Message-State: AOAM531aPMy9uVwdMIFzrFQPOTAqLu5PZ5TaAXx7YrRU2YC6UdDFdvxv 7yWa01t3zQ3dJEACWwgjwbi4WS7wpfvLjQfC0/LoXw== X-Google-Smtp-Source: ABdhPJyAYnIlR9GYuSgAgXrm1RoBrUPmjUmVL7Y+7yFzwWGNK5C+t5SrDc3NzG41DouKvWFtWLr7t2F7vN3d/VPZxro= X-Received: by 2002:ab0:14a7:: with SMTP id d36mr800469uae.96.1634918877336; Fri, 22 Oct 2021 09:07:57 -0700 (PDT) MIME-Version: 1.0 References: <20211014180824.10681-1-heiko.thiery@gmail.com> <20211014180824.10681-2-heiko.thiery@gmail.com> In-Reply-To: From: Simon Glass Date: Fri, 22 Oct 2021 10:07:46 -0600 Message-ID: Subject: Re: [PATCH v6 2/2] board: kontron: pitx-imx8m: Add Kontron pitx-imx8m board support To: Heiko Thiery Cc: Stefano Babic , U-Boot Mailing List , Fabio Estevam , "NXP i . MX U-Boot Team" , Peng Fan , Ye Li , Patrick Wildt , Michael Walle , =?UTF-8?Q?Thomas_Sch=C3=A4fer?= 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 Heiko, On Fri, 22 Oct 2021 at 07:24, Heiko Thiery wrote: > > Hi, > > Am Fr., 22. Okt. 2021 um 14:37 Uhr schrieb Stefano Babic : > > > > Hi Heiko, > > > > On 22.10.21 10:19, Heiko Thiery wrote: > > > Hi Stefano, Hi Simon, > > > > > > Am Do., 21. Okt. 2021 um 15:57 Uhr schrieb Heiko Thiery > > > : > > >> > > >> Hi Stefano, Hi Simon, > > >> > > >> > > >> Am Do., 21. Okt. 2021 um 15:29 Uhr schrieb Stefano Babic : > > >>> > > >>> On 21.10.21 15:17, Heiko Thiery wrote: > > >>>> Hi Stefano, > > >>>> > > >>>> > > >>>> Am Do., 21. Okt. 2021 um 13:31 Uhr schrieb Stefano Babic : > > >>>>> > > >>>>> Hi Heiko, > > >>>>> > > >>>>> On 14.10.21 20:08, Heiko Thiery wrote: > > >>>>>> The Kontron pitx-imx8m is an NXP i.MX8MQ based board in the pITX > > >>>>>> form factor. > > >>>>>> > > >>>>> > > >>>>> There is still something using binman that does not work with CI. > > >>>>> Without CI, we load all firmware including signed_hdmi_imx8m.bin. > > >>>>> > > >>>>> But on CI, file is not loaded, but instead of warnings, build for this > > >>>>> board fails with : > > >>>>> > > >>>>> +Image 'main-section' is missing external blobs and is non-functional: > > >>>>> blob-ext@1 blob-ext@2 blob-ext@3 blob-ext@4 > > >>>>> +binman: Error 1 running 'mkimage -d ./mkimage.spl.mkimage -n > > >>>>> spl/u-boot-spl.cfgout -T imx8mimage -e 0x7e1000 > > >>>>> ./mkimage-out.spl.mkimage': signed_hdmi_imx8m.bin: Can't open: No such > > >>>>> file or directory > > >>>>> + > > >>>>> > > >>>>> Could you take a look ? > > >>>> > > >>>> Sure. Could you point me to the right CI configuration? > > >>>> > > >>> > > >>> Configuration is in .gitlab-ci.yml. For thsi board, buildman is called > > >>> as part of aarch64 target, that is > > >>> > > >>> buildman -o /tmp -P -E -W arm -x aarch64 > > >>> > > >>>> I need to understand how the required imx-firmware files are copied to > > >>>> the u-boot dir. This seems to work already for e. g. the imx8mm > > >>>> boards. These require the lpdd* train fw files. > > >> > > >> Here we seem to hit an issue with the CI. blobs (lpddr*) are required > > >> for the imx8mm boards. Binman reports the missing files only as a > > >> warning and buildman does not care about that: > > >> ---- > > >> +WARNING 'mkimage.flash.mkimage' not found, resulting binary is not-functional > > >> ---- > > >> > > >> With the imx8mq boards switching to binman we also need an additional > > >> fw part (signed_hdmi_imx8m.bin). But other than the lpddr firmware as > > >> blob the signed_hmdi'_imx8m.bin is passed to mkimage and mkimage exits > > >> with an error. Thats leads to the error: > > >> ---- > > >> binman: Error 1 running 'mkimage -d ./mkimage.spl.mkimage -n > > >> spl/u-boot-spl.cfgout -T imx8mimage -e 0x7e1000 > > >> ./mkimage-out.spl.mkimage': signed_hdmi_imx8m.bin: Can't open: No such > > >> file or directory > > >> ---- > > >> > > >> Currently I do not have an idea how to handle that. Anyone else? If I understand correctly: 1.You don't have these blobs in the tree so don't want to fail a build in CI, which is why binman's blob-ext is used 2. You sometimes need to ensure that they do exist Should we add a cmdline flag to binman to require all external blobs? Could we drop the blobs and add code to generate them, or put the date in a C struct? > > > > > > I thought about it a little and did a quick hack. What do you think > > > about dummy files being generated for buildman? > > > > I had quite the same idea... > > > > > I had buildman > > > generate the blobs needed by binman. So at least the build runs > > > through successfully. > > > > But it should be checked if files are present - I guess there are people > > relying on buildman to produce the functional bootloader, and a dummy > > file cannot overwrite the right one if present. > > Sure. As said ,this was only a quick hack to see if it could work. > Another thing is if there should be a config for each board that says > what files have to be created. > > > > I don't know yet how to integrate this sensibly > > > into buildman or if this is useful for the maintainers at all. But > > > this would get rid of the warnings and errors that come from binman. > > > > > > > > > diff --git a/tools/buildman/board.py b/tools/buildman/board.py > > > index 447aaabea8..cf270c8b72 100644 > > > --- a/tools/buildman/board.py > > > +++ b/tools/buildman/board.py > > > @@ -96,6 +96,28 @@ class Board: > > > self.vendor, self.soc, self.options] > > > self.build_it = False > > > > > > + def create_dummy_files(self, work_dir): > > > + import configparser > > > + import os > > > + > > > + settings = configparser.SafeConfigParser() > > > + config_fname = '%s/.buildman/' % os.getenv('HOME') > > > + if os.path.exists(config_fname): > > > + settings.read(config_fname) > > > + > > > + if self.target == "kontron_pitx_imx8m": > > > + > > > + dummy_files = ['bl31.bin', > > > + 'signed_hdmi_imx8m.bin', > > > + 'lpddr4_pmu_train_1d_imem.bin', > > > + 'lpddr4_pmu_train_1d_dmem.bin', > > > + 'lpddr4_pmu_train_2d_imem.bin', > > > + 'lpddr4_pmu_train_2d_dmem.bin' > > > + ] > > > + for dummy_file in dummy_files: > > > + dummy = os.path.join(work_dir, 'build', dummy_file) > > > + with open(dummy, "wb") as out: > > > + out.truncate(1024) > > > > > > class Boards: > > > """Manage a list of boards.""" > > > diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py > > > index 48128cf673..dee7d9b0fe 100644 > > > --- a/tools/buildman/builderthread.py > > > +++ b/tools/buildman/builderthread.py > > > @@ -475,6 +475,7 @@ class BuilderThread(threading.Thread): > > > """ > > > brd = job.board > > > work_dir = self.builder.GetThreadDir(self.thread_num) > > > + brd.create_dummy_files(work_dir) > > > self.toolchain = None > > > if job.commits: > > > # Run 'make board_defconfig' on the first commit > > > > > > -- > Heiko Regards, Simon