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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 2A1F2C43334 for ; Fri, 10 Jun 2022 14:51:27 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8FFBF84280; Fri, 10 Jun 2022 16:51:24 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=baylibre-com.20210112.gappssmtp.com header.i=@baylibre-com.20210112.gappssmtp.com header.b="RJiSEqn+"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 858FB843F9; Fri, 10 Jun 2022 16:51:22 +0200 (CEST) Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) (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 4613B83F39 for ; Fri, 10 Jun 2022 16:51:19 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=clabbe@baylibre.com Received: by mail-wr1-x431.google.com with SMTP id m24so2014297wrb.10 for ; Fri, 10 Jun 2022 07:51:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=cP0deZrIxsFvtY5XbONgEI7WunA3fiStzrVYuobAo3I=; b=RJiSEqn+gEyEJ9wf/hTh9i9fwIr6CluYgHrO/2Rpl9VEYmnsxnJCdUXwMJGk3Ga4U8 QjDq85FMWGOXrcCQRXLnv1+N/3BEAJW6utdZYnPn1+Kn+QyzNrS0+gRCsKtqH3hybz6f 9rfxRAHykqBOYRX2S5i+WqVsqVt3ODNB85AAh3Ce2W4DX0aeQ3YCfdt4HtxJ/c8iNFfw deu4cupsu/62UVKIK5O/BA0mtcJCbY94cemkugh9Cp54YaTWCBFWMh16cT/Y+LsbHRNo KTBy8adoWts3FgmhKwSkgeSpu3f8qXfoKtpvMRSA8DIgPIimM6Y3PVNlkseqEi6cKpCq GuAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=cP0deZrIxsFvtY5XbONgEI7WunA3fiStzrVYuobAo3I=; b=NxW2bFamG/N+bl7AFa2j/cq3gPuMYLe07tRsid9gjVaeKxVn5Ym+wr0XwMFNHKGiB0 FAqP8w4Pz6dr/dk1TB2mJoU+OtyoYwwAH9dFVptTOMq2Ttm3VGxBj1sItw1e8G/8WvAD ETl1C1ipjlTuR4IbKqEaT+bNtUcn29KvOjM0e4ydhtfKtH1YN+z8lT/Sp/zuUG4QZYoK 6oYOQemvZ1fLHd7/CD0XFMT4r2DPZyaYNL8JdMinatTGZyfjN92h5ijs2itDot9gh0Cq DK8DnzrFJUXgvseuqNMtiGEMgXoWFnl1fGuVajfDFi1vXE8eo86gXc/aG1kn6W+eKu0z VZQg== X-Gm-Message-State: AOAM533NGyybciL8VNJZcQbzygYe8elpo/rgDt1YWULmJ0Ihf9LPXMNJ Kox8RIETNi5ULsnQZ45Yy6FKiA== X-Google-Smtp-Source: ABdhPJzmh0ASG33IEeLtKwOhaCaZY91T8CRA2k8eYLOUR3UYNZ9veqTbOmB7n0W7gzJenSX4/gImfQ== X-Received: by 2002:a5d:6651:0:b0:210:3e1c:1343 with SMTP id f17-20020a5d6651000000b002103e1c1343mr44319953wrw.137.1654872678682; Fri, 10 Jun 2022 07:51:18 -0700 (PDT) Received: from Red ([2a01:cb1d:3d5:a100:264b:feff:fe03:2806]) by smtp.googlemail.com with ESMTPSA id l6-20020a7bc446000000b0039c60e33702sm3215936wmi.16.2022.06.10.07.51.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jun 2022 07:51:18 -0700 (PDT) Date: Fri, 10 Jun 2022 16:51:12 +0200 From: LABBE Corentin To: Tom Rini Cc: yogeshs@ti.com, lokeshvutla@ti.com, sjg@chromium.org, u-boot@lists.denx.de Subject: Re: Boot regression on am335x-hs-evm Message-ID: References: <20220610121610.GM2484912@bill-the-cat> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20220610121610.GM2484912@bill-the-cat> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.5 at phobos.denx.de X-Virus-Status: Clean Le Fri, Jun 10, 2022 at 08:16:10AM -0400, Tom Rini a écrit : > On Fri, Jun 10, 2022 at 11:59:23AM +0200, LABBE Corentin wrote: > > Hello > > > > I hit a boot regression on am335x-hs-evm. > > On current uboot, the board does not boot at all. > > This board uses both MLO and u-boot.img and only MLO was the problem. > > > > After a bisect, I found that e41651fffda7 ("dm: Support parent devices with of-platdata") was the problem. > > Reverting this patch lead to a success boot. > > > > I cutdown the revert to a minimal fix: > > --- a/drivers/core/lists.c > > +++ b/drivers/core/lists.c > > @@ -120,6 +120,7 @@ int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only) > > int ret; > > > > ret = bind_drivers_pass(parent, pre_reloc_only); > > + return ret; > > if (!ret) > > break; > > if (ret != -EAGAIN && !result) > > > > I cannot debug further since printf() is not working at this stage. > > > > Since I wanted to know which error was badly handled, I tried to do this: > > --- a/arch/arm/mach-omap2/sec-common.c > > +++ b/arch/arm/mach-omap2/sec-common.c > > @@ -111,6 +111,8 @@ static u32 find_sig_start(char *image, size_t size) > > return 0; > > } > > > > +extern int errorcount; > > + > > int secure_boot_verify_image(void **image, size_t *size) > > { > > int result = 1; > > @@ -178,6 +180,7 @@ auth_exit: > > * via YMODEM. This is done to avoid disturbing the YMODEM serial > > * protocol transactions. > > */ > > + printf("ERRORCOUNT %d\n", errorcount); > > if (!(IS_ENABLED(CONFIG_SPL_BUILD) && > > IS_ENABLED(CONFIG_SPL_YMODEM_SUPPORT) && > > spl_boot_device() == BOOT_DEVICE_UART)) > > --- a/drivers/core/lists.c > > +++ b/drivers/core/lists.c > > @@ -20,6 +20,10 @@ > > #include > > #include > > > > +static int _errorcount; > > +int errorlist[1024]; > > +int errorcount; > > + > > struct driver *lists_driver_lookup_name(const char *name) > > { > > struct driver *drv = > > @@ -120,8 +124,9 @@ int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only) > > int ret; > > > > ret = bind_drivers_pass(parent, pre_reloc_only); > > - if (!ret) > > - break; > > + errorlist[_errorcount] = ret; > > + _errorcount++; > > + errorcount = _errorcount; > > if (ret != -EAGAIN && !result) > > result = ret; > > } > > > > But errorcount is always 0 which is puzzling me since according to my think, lists_bind_drivers() is ran before secure_boot_verify_image(). > > > > Any idea on how to debug further ? > > You should be able to enable DEBUG_UART and get output that way. But > it's likely something related to the space constraints of the HS chip > rather than GP. > Hello Thanks for your suggestion, I successfully got futher with: diff --git a/drivers/core/lists.c b/drivers/core/lists.c index b23ee3030e..415ba814f1 100644 --- a/drivers/core/lists.c +++ b/drivers/core/lists.c @@ -111,6 +111,8 @@ int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only) int result = 0; int pass; + debug_uart_init(); + /* * 10 passes is 10 levels deep in the devicetree, which is plenty. If * OF_PLATDATA_PARENT is not enabled, then bind_drivers_pass() will diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index b4805a2e4e..7ab059b4ea 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -158,6 +158,7 @@ config TPL_DM_SERIAL config DEBUG_UART bool "Enable an early debug UART for debugging" + default y help The debug UART is intended for use very early in U-Boot to debug problems when an ICE or other debug mechanism is not available. @@ -185,7 +186,7 @@ config DEBUG_UART choice prompt "Select which UART will provide the debug UART" depends on DEBUG_UART - default DEBUG_UART_NS16550 + default DEBUG_UART_OMAP config DEBUG_UART_ALTERA_JTAGUART bool "Altera JTAG UART" @@ -406,7 +407,7 @@ endchoice config DEBUG_UART_BASE hex "Base address of UART" depends on DEBUG_UART - default 0 if DEBUG_UART_SANDBOX + default 0x44e09000 help This is the base address of your UART for memory-mapped UARTs. @@ -416,7 +417,7 @@ config DEBUG_UART_BASE config DEBUG_UART_CLOCK int "UART input clock" depends on DEBUG_UART - default 0 if DEBUG_UART_SANDBOX + default 48000000 help The UART input clock determines the speed of the internal UART circuitry. The baud rate is derived from this by dividing the input @@ -428,7 +429,7 @@ config DEBUG_UART_CLOCK config DEBUG_UART_SHIFT int "UART register shift" depends on DEBUG_UART - default 0 if DEBUG_UART + default 2 help Some UARTs (notably ns16550) support different register layouts where the registers are spaced either as bytes, words or some other @@ -449,6 +450,7 @@ config DEBUG_UART_BOARD_INIT config DEBUG_UART_ANNOUNCE bool "Show a message when the debug UART starts up" depends on DEBUG_UART + default y help Enable this option to show a message when the debug UART is ready for use. You will see a message like " " as soon as I got: - alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted alloc space exhausted ti_i2c_eeprom_init failed Bad EEPROM or unknown board, cannot configure pinmux.alloc space exhausted Thanks