[PATCH v2 0/1] xilinx: Add option to load environment from outside of

Vasileios Amoiridis vasileios.amoiridis at cern.ch
Wed Jun 12 15:57:12 CEST 2024


On Wed, 2024-06-12 at 15:42 +0200, Michal Simek wrote:
> Hi Vasileios,
> 
> út 4. 6. 2024 v 15:21 odesílatel Vasileios Amoiridis
> <vassilisamir at gmail.com> napsal:
> > 
> > From: Vasileios Amoiridis <vasileios.amoiridis at cern.ch>
> > 
> > Changes in v2:
> >         - Remove duplication of custom hardcoded env_locations[]
> > code.
> >         - Add implementation with general arch_env_get_location(op,
> > prio)
> > 
> > v1:
> > https://lore.kernel.org/u-boot/20240522174738.73522-1-vassilisamir@gmail.com/
> > 
> > Vasileios Amoiridis (1):
> >   xilinx: Add option to load environment from outside of boot media
> > 
> >  board/xilinx/versal-net/board.c | 47 ++++++++++++++--------------
> >  board/xilinx/versal/board.c     | 47 ++++++++++++++--------------
> >  board/xilinx/zynq/board.c       | 49 +++++++++++++++--------------
> >  board/xilinx/zynqmp/zynqmp.c    | 55 +++++++++++++++++------------
> > ----
> >  4 files changed, 101 insertions(+), 97 deletions(-)
> > 
> > --
> > 2.34.1
> > 
> 
> I have to remove this patch from my queue because it is actually
> breaking current behavior.
> CI is reporting an issue with it and I did a closer look and what is
> happening is that if one location has no valid
> data it goes and looks at another location from the list.
> 

But that is the desired behavior, if the environment is not in one
location to check to the others.

> On Zynq it behaves like this.
> 
> MMC:   mmc at e0100000: 0
> prio 0
> Loading Environment from SPIFlash... SF: Detected n25q128a13 with
> page
> size 256 Bytes, erase size 64 KiB, total 16 MiB
> *** Warning - bad CRC, using default environment
> 
> prio 1
> Loading Environment from NAND... *** Error - No Valid Environment
> Area found
> *** Warning - bad env area, using default environment
> 
> prio 2
> Loading Environment from SPIFlash... *** Warning - bad CRC, using
> default environment
> 
> prio 3
> Loading Environment from nowhere... OK
> 
> 

This is the message that we get as well when this patch is not added.

> prio is my print to show where code is. Qemu boots out in QSPI boot
> mode and SPI is tried first and because
> this is xilinx_zynq_virt defconfig drivers/env locations for other
> devices are present too. That's why it goes over the list
> and it always ends in nowhere which never fails.
> 
> If this runs on real HW then the same behavior is visible and I don't
> think it is right.
> I think this solution should be rethought.
> In product current behavior from our code is not the best and current
> U-Boot implementation is not allowing
> flexibility too. We are enabling redundant variables which can be
> only
> on the same device but not that you have
> one copy in QSPI and second in EMMC.
> That's why I think location should be pretty much read from DT.
> There is options/u-boot node where location of variables should be
> described and this should replace
> env_get_location().

You mean that there should be some type of new U-Boot node that
describes where the environment should be located and go and
search in this device?

> It is a lot of work that's why I think second solution is more
> reasonable for you which is simply create new Kconfig symbol
> to disable board env_get_location() implementation.
> 
> Thanks,
> Michal
> 

You mean to basically disable the board env_get_location() that
exists in board/xilinx/zynqmp/zynqmp.c for example?

Cheers,
Vasilis


More information about the U-Boot mailing list