Am 31.07.25 um 20:47 schrieb João Paulo Gonçalves: > Hello, > > On Mon, Jul 28, 2025 at 11:25:04AM -0300, Fabio Estevam wrote: >> What confuses me about João's patch is that it was not tested against >> the mainline U-Boot. > > In the end, the code is nearly identical between the downstream and > mainline U-Boot. > > On Wed, Jul 30, 2025 at 08:35:40AM +0200, Frieder Schrempf wrote: >> I have the below patch in our downstream fork to fix the issue mentioned >> here for i.MX93. It is derived from Fabio's patch [1]. I'm not sure if >> it's correct, though. > > We are also doing something similar on our branch. > > I have two proposals. My goal is to prevent the board from hanging when > booting from USB if CONFIG_ENV_IS_NOWHERE=n (since the current code > assumes it is always enabled) and/or if the environment is defined > elsewhere: > > 1) Imply CONFIG_ENV_IS_NOWHERE for i.MX9 (as mentioned earlier), to make > it clear that it is required by ARCH. > > or > > 2) Doing something similar to what Frieder showed for USB boot (which is > almost the same on i.MX8MM/i.MX8MP), but preserving the current > behavior: > > diff --git a/arch/arm/mach-imx/imx9/scmi/soc.c > b/arch/arm/mach-imx/imx9/scmi/soc.c > index 13f13ca7d105..f973652d0cbe 100644 > --- a/arch/arm/mach-imx/imx9/scmi/soc.c > +++ b/arch/arm/mach-imx/imx9/scmi/soc.c > @@ -635,7 +635,8 @@ enum env_location env_get_location(enum env_operation op, > int prio) > > switch (dev) { > case QSPI_BOOT: > - env_loc = ENVL_SPI_FLASH; > + if (IS_ENABLED(CONFIG_ENV_IS_IN_SPI_FLASH)) > + env_loc = ENVL_SPI_FLASH; > break; > case SD1_BOOT: > case SD2_BOOT: > @@ -643,10 +644,16 @@ enum env_location env_get_location(enum env_operation > op, int prio) > case MMC1_BOOT: > case MMC2_BOOT: > case MMC3_BOOT: > - env_loc = ENVL_MMC; > + if (IS_ENABLED(CONFIG_ENV_IS_IN_MMC)) > + env_loc = ENVL_MMC; > break; > default: > - env_loc = ENVL_NOWHERE; > + if (IS_ENABLED(CONFIG_ENV_IS_NOWHERE)) > + env_loc = ENVL_NOWHERE; > + else if (IS_ENABLED(CONFIG_ENV_IS_IN_SPI_FLASH)) > + env_loc = ENVL_SPI_FLASH; > + else if (IS_ENABLED(CONFIG_ENV_IS_IN_MMC)) > + env_loc = ENVL_MMC; > break; > } > > With this patch, I believe Peng's concerns are addressed, and it also > works for our use case. > > What do you think?
On first glance, this looks good to me. If possible, can you please also send a patch for i.MX93 (arch/arm/mach-imx/imx9/soc.c) to align the behavior of both platforms? Thanks!