lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20250731-banana-doormat-bd7d3a484dfc@thorsis.com>
Date: Thu, 31 Jul 2025 10:33:55 +0200
From: Alexander Dahl <ada@...rsis.com>
To: Rob Herring <robh@...nel.org>
Cc: Shiji Yang <yangshiji66@...look.com>, devicetree@...r.kernel.org,
	linux-kernel@...r.kernel.org,
	Rafał Miłecki <rafal@...ecki.pl>,
	Srinivas Kandagatla <srini@...nel.org>,
	Krzysztof Kozlowski <krzk+dt@...nel.org>,
	Conor Dooley <conor+dt@...nel.org>
Subject: Re: [PATCH 2/2] dt-bindings: nvmem: add env-size property for u-boot
 env layout

Hei hei,

just hooking in, because it relates to a U-Boot feature I'm using, too.

Am Wed, Jul 30, 2025 at 06:52:14PM -0500 schrieb Rob Herring:
> On Wed, Jul 30, 2025 at 09:17:47PM +0800, Shiji Yang wrote:
> > This newly introduced property allows users to declare the size of
> > the environment storage area.
> 
> Why do you need it to be less than the partition size? They commit msg 
> needs to explain that.

+1

> The partition size for fixed partitions in particular are purely a DT 
> construct. No reason the partition size can't always be the env size.

You can set CONFIG_ENV_RANGE and CONFIG_ENV_SIZE to different values
in U-Boot to allow bad block handling.  I have a board here where the
U-Boot env is stored directly in NAND flash.  The mtd partition size
is 2 times the nand block size (ENV_RANGE=0x40000) while the env size
is exactly one nand block size (ENV_SIZE=0x20000).  So the partition
is 2 blocks, but the env size is only 1 block.  This way the first
block can become bad and U-Boot will skip it and use the second block.
This would not be possible if the env would always use the whole
partition.  The usable size of the partition would be too small to
keep the env then.

The help text for this is present in U-Boot since 2010, so I guess the
feature is there even longer:

  - CONFIG_ENV_RANGE (optional):
  
    Specifies the length of the region in which the environment
    can be written.  This should be a multiple of the NAND device's
    block size.  Specifying a range with more erase blocks than
    are needed to hold CONFIG_ENV_SIZE allows bad blocks within
    the range to be avoided.

HTH & Greets
Alex

> 
> > Signed-off-by: Shiji Yang <yangshiji66@...look.com>
> > ---
> >  .../devicetree/bindings/nvmem/layouts/u-boot,env.yaml      | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/nvmem/layouts/u-boot,env.yaml b/Documentation/devicetree/bindings/nvmem/layouts/u-boot,env.yaml
> > index 56a8f55d4..e0b65a53e 100644
> > --- a/Documentation/devicetree/bindings/nvmem/layouts/u-boot,env.yaml
> > +++ b/Documentation/devicetree/bindings/nvmem/layouts/u-boot,env.yaml
> > @@ -46,6 +46,12 @@ properties:
> >      type: object
> >      description: Command to use for automatic booting
> >  
> > +  env-size:
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> > +    description:
> > +      Size of the environment storage area in bytes. If this property
> > +      is not defined, the default size is the partition size.
> > +
> >    ethaddr:
> >      type: object
> >      description: Ethernet interfaces base MAC address.
> > @@ -85,6 +91,7 @@ examples:
> >          env: partition@...00 {
> >              compatible = "u-boot,env";
> >              reg = <0x40000 0x10000>;
> > +            env-size = <0x1000>;
> >  
> >              mac: ethaddr {
> >                  #nvmem-cell-cells = <1>;
> > -- 
> > 2.50.0
> > 
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ