* [PATCH 1/3] configs: sandbox: Enable environment in SPI NOR support
@ 2025-12-17 20:12 Marek Vasut
2025-12-17 20:12 ` [PATCH 2/3] test: env: Add test for environment storage in SPI NOR Marek Vasut
2025-12-17 20:12 ` [PATCH 3/3] env: Add single to redundant environment upgrade path Marek Vasut
0 siblings, 2 replies; 9+ messages in thread
From: Marek Vasut @ 2025-12-17 20:12 UTC (permalink / raw)
To: u-boot
Cc: Marek Vasut, Heinrich Schuchardt, Jerome Forissier, Simon Glass,
Tom Rini
Make environment support in SPI NOR available in sandbox,
so the environment storage in SPI NOR can be tested in CI.
Enable redundant environment support as well to cover this
in CI tests too.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
---
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: Jerome Forissier <jerome.forissier@linaro.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: u-boot@lists.denx.de
---
board/sandbox/sandbox.c | 1 +
configs/sandbox64_defconfig | 6 ++++++
configs/sandbox_defconfig | 6 ++++++
3 files changed, 13 insertions(+)
diff --git a/board/sandbox/sandbox.c b/board/sandbox/sandbox.c
index d0bb3e3bb48..13006a0ffc2 100644
--- a/board/sandbox/sandbox.c
+++ b/board/sandbox/sandbox.c
@@ -89,6 +89,7 @@ static enum env_location env_locations[] = {
ENVL_NOWHERE,
ENVL_EXT4,
ENVL_FAT,
+ ENVL_SPI_FLASH,
};
enum env_location env_get_location(enum env_operation op, int prio)
diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig
index 70c757640c0..764bc5f9336 100644
--- a/configs/sandbox64_defconfig
+++ b/configs/sandbox64_defconfig
@@ -2,10 +2,13 @@ CONFIG_TEXT_BASE=0
CONFIG_SYS_MALLOC_LEN=0x6000000
CONFIG_NR_DRAM_BANKS=1
CONFIG_ENV_SIZE=0x2000
+CONFIG_ENV_OFFSET=0x0
+CONFIG_ENV_SECT_SIZE=0x1000
CONFIG_DEFAULT_DEVICE_TREE="sandbox64"
CONFIG_DM_RESET=y
CONFIG_SYS_LOAD_ADDR=0x0
CONFIG_PRE_CON_BUF_ADDR=0x100000
+CONFIG_ENV_OFFSET_REDUND=0x10000
CONFIG_PCI=y
CONFIG_SANDBOX64=y
CONFIG_DEBUG_UART=y
@@ -106,6 +109,9 @@ CONFIG_OF_LIVE=y
CONFIG_ENV_IS_NOWHERE=y
CONFIG_ENV_IS_IN_EXT4=y
CONFIG_ENV_IS_IN_FAT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_ENV_SECT_SIZE_AUTO=y
+CONFIG_ENV_REDUNDANT=y
CONFIG_ENV_EXT4_INTERFACE="host"
CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0"
CONFIG_ENV_IMPORT_FDT=y
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index dfdaaff1eff..c7e69fdb3a4 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -2,9 +2,12 @@ CONFIG_TEXT_BASE=0
CONFIG_SYS_MALLOC_LEN=0x6000000
CONFIG_NR_DRAM_BANKS=1
CONFIG_ENV_SIZE=0x2000
+CONFIG_ENV_OFFSET=0x0
+CONFIG_ENV_SECT_SIZE=0x1000
CONFIG_DM_RESET=y
CONFIG_SYS_LOAD_ADDR=0x0
CONFIG_PRE_CON_BUF_ADDR=0xf0000
+CONFIG_ENV_OFFSET_REDUND=0x10000
CONFIG_PCI=y
CONFIG_DEBUG_UART=y
CONFIG_SYS_MEMTEST_START=0x00100000
@@ -154,6 +157,9 @@ CONFIG_OF_LIVE=y
CONFIG_ENV_IS_NOWHERE=y
CONFIG_ENV_IS_IN_EXT4=y
CONFIG_ENV_IS_IN_FAT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_ENV_SECT_SIZE_AUTO=y
+CONFIG_ENV_REDUNDANT=y
CONFIG_ENV_EXT4_INTERFACE="host"
CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0"
CONFIG_ENV_IMPORT_FDT=y
--
2.51.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] test: env: Add test for environment storage in SPI NOR
2025-12-17 20:12 [PATCH 1/3] configs: sandbox: Enable environment in SPI NOR support Marek Vasut
@ 2025-12-17 20:12 ` Marek Vasut
2025-12-17 20:12 ` [PATCH 3/3] env: Add single to redundant environment upgrade path Marek Vasut
1 sibling, 0 replies; 9+ messages in thread
From: Marek Vasut @ 2025-12-17 20:12 UTC (permalink / raw)
To: u-boot
Cc: Marek Vasut, Heinrich Schuchardt, Jerome Forissier, Simon Glass,
Tom Rini
Add test for environment stored in SPI NOR. The test works in a very
similar way to the current test for environment stored in ext4 FS,
except it generates spi.bin file backing the SPI NOR.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
---
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: Jerome Forissier <jerome.forissier@linaro.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: u-boot@lists.denx.de
---
test/py/tests/test_env.py | 99 +++++++++++++++++++++++++++++++++++++++
1 file changed, 99 insertions(+)
diff --git a/test/py/tests/test_env.py b/test/py/tests/test_env.py
index 383e26c03b0..48e31f19b3c 100644
--- a/test/py/tests/test_env.py
+++ b/test/py/tests/test_env.py
@@ -457,6 +457,26 @@ def mk_env_ext4(state_test_env):
utils.run_and_log(c, ['cp', '-f', persistent, fs_img])
return fs_img
+def mk_env_spi_flash(state_test_env):
+
+ """Create an empty SPI NOR image."""
+ c = state_test_env.ubman
+ filename = 'spi.bin'
+ persistent = c.config.persistent_data_dir + '/' + filename
+ spi_flash_img = c.config.source_dir + '/' + filename
+
+ if os.path.exists(persistent):
+ c.log.action('SPI NOR image file ' + persistent + ' already exists')
+ else:
+ try:
+ utils.run_and_log(c, 'dd if=/dev/zero of=%s bs=1M count=2' % persistent)
+ except CalledProcessError:
+ call('rm -f %s' % persistent, shell=True)
+ raise
+
+ utils.run_and_log(c, ['cp', '-f', persistent, spi_flash_img])
+ return spi_flash_img
+
@pytest.mark.boardspec('sandbox')
@pytest.mark.buildconfigspec('cmd_echo')
@pytest.mark.buildconfigspec('cmd_nvedit_info')
@@ -544,6 +564,85 @@ def test_env_ext4(state_test_env):
if fs_img:
call('rm -f %s' % fs_img, shell=True)
+@pytest.mark.boardspec('sandbox')
+@pytest.mark.buildconfigspec('cmd_echo')
+@pytest.mark.buildconfigspec('cmd_nvedit_info')
+@pytest.mark.buildconfigspec('cmd_nvedit_load')
+@pytest.mark.buildconfigspec('cmd_nvedit_select')
+@pytest.mark.buildconfigspec('env_is_in_spi_flash')
+def test_env_spi_flash(state_test_env):
+
+ """Test ENV in SPI NOR on sandbox."""
+ c = state_test_env.ubman
+ spi_flash_img = ''
+ try:
+ spi_flash_img = mk_env_spi_flash(state_test_env)
+
+ # force env location: SF
+ response = c.run_command('env select SPIFlash')
+ assert 'Select Environment on SPIFlash: OK' in response
+
+ response = c.run_command('env save')
+ assert 'Saving Environment to SPIFlash' in response
+
+ response = c.run_command('env load')
+ assert 'Loading Environment from SPIFlash... OK' in response
+
+ response = c.run_command('env info')
+ assert 'env_valid = valid' in response
+ assert 'env_ready = true' in response
+ assert 'env_use_default = false' in response
+
+ response = c.run_command('env info -p -d')
+ assert 'Environment was loaded from persistent storage' in response
+ assert 'Environment can be persisted' in response
+
+ response = c.run_command('env info -d -q')
+ assert response == ""
+ response = c.run_command('echo $?')
+ assert response == "1"
+
+ response = c.run_command('env info -p -q')
+ assert response == ""
+ response = c.run_command('echo $?')
+ assert response == "0"
+
+ response = c.run_command('env erase')
+ assert 'OK' in response
+
+ response = c.run_command('env load')
+ assert 'Loading Environment from SPIFlash... ' in response
+ assert 'bad CRC, using default environment' in response
+
+ response = c.run_command('env info')
+ assert 'env_valid = invalid' in response
+ assert 'env_ready = true' in response
+ assert 'env_use_default = true' in response
+
+ response = c.run_command('env info -p -d')
+ assert 'Default environment is used' in response
+ assert 'Environment can be persisted' in response
+
+ # restore env location: NOWHERE (prio 0 in sandbox)
+ response = c.run_command('env select nowhere')
+ assert 'Select Environment on nowhere: OK' in response
+
+ response = c.run_command('env load')
+ assert 'Loading Environment from nowhere... OK' in response
+
+ response = c.run_command('env info')
+ assert 'env_valid = invalid' in response
+ assert 'env_ready = true' in response
+ assert 'env_use_default = true' in response
+
+ response = c.run_command('env info -p -d')
+ assert 'Default environment is used' in response
+ assert 'Environment cannot be persisted' in response
+
+ finally:
+ if spi_flash_img:
+ call('rm -f %s' % spi_flash_img, shell=True)
+
def test_env_text(ubman):
"""Test the script that converts the environment to a text file"""
--
2.51.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] env: Add single to redundant environment upgrade path
2025-12-17 20:12 [PATCH 1/3] configs: sandbox: Enable environment in SPI NOR support Marek Vasut
2025-12-17 20:12 ` [PATCH 2/3] test: env: Add test for environment storage in SPI NOR Marek Vasut
@ 2025-12-17 20:12 ` Marek Vasut
2025-12-17 20:56 ` Tom Rini
1 sibling, 1 reply; 9+ messages in thread
From: Marek Vasut @ 2025-12-17 20:12 UTC (permalink / raw)
To: u-boot
Cc: Marek Vasut, Heinrich Schuchardt, Jerome Forissier, Simon Glass,
Tom Rini
Add support for converting single-copy environment to redundant environment.
In case CRC checks on both redundant environment copies fail, try one more
CRC check on the primary environment copy and treat it as single environment.
If that check does pass, rewrite the single-copy environment into redundant
environment format, indicate the environment is valid, and import that as
usual primary copy of redundant environment. Follow up 'env save' will then
store two environment copies and the system will continue to operate as
regular redundant environment system.
Add test which validates this upgrade path. The test starts with spi.bin
which is pre-populated as single-copy environment and then upgrades that
environment to dual-copy environment.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
---
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: Jerome Forissier <jerome.forissier@linaro.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: u-boot@lists.denx.de
---
env/common.c | 31 ++++++++++++++++-
test/py/tests/test_env.py | 73 +++++++++++++++++++++++++++++++++++++++
2 files changed, 103 insertions(+), 1 deletion(-)
diff --git a/env/common.c b/env/common.c
index 05e78d63874..f97536af7f2 100644
--- a/env/common.c
+++ b/env/common.c
@@ -473,14 +473,24 @@ int env_import(const char *buf, int check, int flags)
#ifdef CONFIG_ENV_REDUNDANT
static unsigned char env_flags;
+#define ENV_SINGLE_HEADER_SIZE (sizeof(uint32_t))
+#define ENV_SINGLE_SIZE (CONFIG_ENV_SIZE - ENV_SINGLE_HEADER_SIZE)
+
+typedef struct {
+ uint32_t crc; /* CRC32 over data bytes */
+ unsigned char data[ENV_SINGLE_SIZE]; /* Environment data */
+} env_single_t;
+
int env_check_redund(const char *buf1, int buf1_read_fail,
const char *buf2, int buf2_read_fail)
{
- int crc1_ok = 0, crc2_ok = 0;
+ int crc1_ok = 0, crc2_ok = 0, i;
env_t *tmp_env1, *tmp_env2;
+ env_single_t *tmp_envs;
tmp_env1 = (env_t *)buf1;
tmp_env2 = (env_t *)buf2;
+ tmp_envs = (env_single_t *)buf1;
if (buf1_read_fail && buf2_read_fail) {
puts("*** Error - No Valid Environment Area found\n");
@@ -498,6 +508,25 @@ int env_check_redund(const char *buf1, int buf1_read_fail,
tmp_env2->crc;
if (!crc1_ok && !crc2_ok) {
+ /*
+ * Upgrade single-copy environment to redundant environment.
+ * In case CRC checks on both environment copies fail, try
+ * one more CRC check on the primary environment copy and
+ * treat it as single-copy environment. If that check does
+ * pass, rewrite the single-copy environment into redundant
+ * environment format and indicate the environment is valid.
+ * The follow up calls will import the environment as if it
+ * was a redundant environment. Follow up 'env save' will
+ * then store two environment copies.
+ */
+ if (!buf1_read_fail &&
+ crc32(0, tmp_envs->data, ENV_SINGLE_SIZE) == tmp_envs->crc) {
+ for (i = ENV_SIZE - 1; i >= 0; i--)
+ tmp_env1->data[i] = tmp_envs->data[i];
+ tmp_env1->flags = 0;
+ gd->env_valid = ENV_VALID;
+ return 0;
+ }
gd->env_valid = ENV_INVALID;
return -ENOMSG; /* needed for env_load() */
} else if (crc1_ok && !crc2_ok) {
diff --git a/test/py/tests/test_env.py b/test/py/tests/test_env.py
index 48e31f19b3c..b968321b12a 100644
--- a/test/py/tests/test_env.py
+++ b/test/py/tests/test_env.py
@@ -477,6 +477,21 @@ def mk_env_spi_flash(state_test_env):
utils.run_and_log(c, ['cp', '-f', persistent, spi_flash_img])
return spi_flash_img
+def mk_env_spi_flash_single(state_test_env):
+
+ """Create an single-copy SPI NOR image with foo=bar entry."""
+ c = state_test_env.ubman
+ filename = 'spi.bin'
+ spi_flash_img = c.config.source_dir + '/' + filename
+
+ try:
+ call('( echo foo=bar | mkenvimage -s 8192 -p 0x00 - ; dd if=/dev/zero bs=2088960 count=1 2>/dev/null ) > %s' % spi_flash_img, shell=True)
+ except CalledProcessError:
+ call('rm -f %s' % spi_flash_img, shell=True)
+ raise
+
+ return spi_flash_img
+
@pytest.mark.boardspec('sandbox')
@pytest.mark.buildconfigspec('cmd_echo')
@pytest.mark.buildconfigspec('cmd_nvedit_info')
@@ -574,6 +589,64 @@ def test_env_spi_flash(state_test_env):
"""Test ENV in SPI NOR on sandbox."""
c = state_test_env.ubman
+ spi_flash_img = ''
+ try:
+ spi_flash_img = mk_env_spi_flash_single(state_test_env)
+
+ response = c.run_command('sf probe')
+ assert 'SF: Detected m25p16 with page size 256 Bytes, erase size 64 KiB, total 2 MiB' in response
+
+ # force env location: SF
+ response = c.run_command('env select SPIFlash')
+ assert 'Select Environment on SPIFlash: OK' in response
+
+ response = c.run_command('env load')
+ assert 'Loading Environment from SPIFlash... OK' in response
+
+ response = c.run_command('env print foo')
+ assert 'foo=bar' in response
+
+ response = c.run_command('env save')
+ assert 'Saving Environment to SPIFlash' in response
+
+ response = c.run_command('env load')
+ assert 'Loading Environment from SPIFlash... OK' in response
+
+ response = c.run_command('env print foo')
+ assert 'foo=bar' in response
+
+ response = c.run_command('env save')
+ assert 'Saving Environment to SPIFlash' in response
+
+ response = c.run_command('env save')
+ assert 'Saving Environment to SPIFlash' in response
+
+ response = c.run_command('env load')
+ assert 'Loading Environment from SPIFlash... OK' in response
+
+ response = c.run_command('env print foo')
+ assert 'foo=bar' in response
+
+ # restore env location: NOWHERE (prio 0 in sandbox)
+ response = c.run_command('env select nowhere')
+ assert 'Select Environment on nowhere: OK' in response
+
+ response = c.run_command('env load')
+ assert 'Loading Environment from nowhere... OK' in response
+
+ response = c.run_command('env info')
+ assert 'env_valid = invalid' in response
+ assert 'env_ready = true' in response
+ assert 'env_use_default = true' in response
+
+ response = c.run_command('env info -p -d')
+ assert 'Default environment is used' in response
+ assert 'Environment cannot be persisted' in response
+
+ finally:
+ if spi_flash_img:
+ call('rm -f %s' % spi_flash_img, shell=True)
+
spi_flash_img = ''
try:
spi_flash_img = mk_env_spi_flash(state_test_env)
--
2.51.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] env: Add single to redundant environment upgrade path
2025-12-17 20:12 ` [PATCH 3/3] env: Add single to redundant environment upgrade path Marek Vasut
@ 2025-12-17 20:56 ` Tom Rini
2025-12-17 22:58 ` Marek Vasut
0 siblings, 1 reply; 9+ messages in thread
From: Tom Rini @ 2025-12-17 20:56 UTC (permalink / raw)
To: Marek Vasut; +Cc: u-boot, Heinrich Schuchardt, Jerome Forissier, Simon Glass
[-- Attachment #1: Type: text/plain, Size: 1423 bytes --]
On Wed, Dec 17, 2025 at 09:12:33PM +0100, Marek Vasut wrote:
> Add support for converting single-copy environment to redundant environment.
> In case CRC checks on both redundant environment copies fail, try one more
> CRC check on the primary environment copy and treat it as single environment.
> If that check does pass, rewrite the single-copy environment into redundant
> environment format, indicate the environment is valid, and import that as
> usual primary copy of redundant environment. Follow up 'env save' will then
> store two environment copies and the system will continue to operate as
> regular redundant environment system.
>
> Add test which validates this upgrade path. The test starts with spi.bin
> which is pre-populated as single-copy environment and then upgrades that
> environment to dual-copy environment.
>
> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> ---
> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Cc: Jerome Forissier <jerome.forissier@linaro.org>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: u-boot@lists.denx.de
For merging, a cover letter makes things so much easier, please add one
for v2. And, I think this needs a Kconfig option. I'm sure you added
this because someone has a valid use case but it's going to grow too
many platforms where that feature isn't likely desired. Thanks.
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] env: Add single to redundant environment upgrade path
2025-12-17 20:56 ` Tom Rini
@ 2025-12-17 22:58 ` Marek Vasut
2025-12-18 13:58 ` Tom Rini
0 siblings, 1 reply; 9+ messages in thread
From: Marek Vasut @ 2025-12-17 22:58 UTC (permalink / raw)
To: Tom Rini; +Cc: u-boot, Heinrich Schuchardt, Jerome Forissier, Simon Glass
On 12/17/25 9:56 PM, Tom Rini wrote:
> On Wed, Dec 17, 2025 at 09:12:33PM +0100, Marek Vasut wrote:
>
>> Add support for converting single-copy environment to redundant environment.
>> In case CRC checks on both redundant environment copies fail, try one more
>> CRC check on the primary environment copy and treat it as single environment.
>> If that check does pass, rewrite the single-copy environment into redundant
>> environment format, indicate the environment is valid, and import that as
>> usual primary copy of redundant environment. Follow up 'env save' will then
>> store two environment copies and the system will continue to operate as
>> regular redundant environment system.
>>
>> Add test which validates this upgrade path. The test starts with spi.bin
>> which is pre-populated as single-copy environment and then upgrades that
>> environment to dual-copy environment.
>>
>> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
>> ---
>> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
>> Cc: Jerome Forissier <jerome.forissier@linaro.org>
>> Cc: Simon Glass <sjg@chromium.org>
>> Cc: Tom Rini <trini@konsulko.com>
>> Cc: u-boot@lists.denx.de
>
> For merging, a cover letter makes things so much easier, please add one
> for v2. And, I think this needs a Kconfig option. I'm sure you added
> this because someone has a valid use case but it's going to grow too
> many platforms where that feature isn't likely desired. Thanks.
Do you actually observe growth ? Because this is calling existing
functions, so the growth has to be in units of bytes tops.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] env: Add single to redundant environment upgrade path
2025-12-17 22:58 ` Marek Vasut
@ 2025-12-18 13:58 ` Tom Rini
2025-12-18 23:09 ` Marek Vasut
0 siblings, 1 reply; 9+ messages in thread
From: Tom Rini @ 2025-12-18 13:58 UTC (permalink / raw)
To: Marek Vasut; +Cc: u-boot, Heinrich Schuchardt, Jerome Forissier, Simon Glass
[-- Attachment #1: Type: text/plain, Size: 2361 bytes --]
On Wed, Dec 17, 2025 at 11:58:15PM +0100, Marek Vasut wrote:
> On 12/17/25 9:56 PM, Tom Rini wrote:
> > On Wed, Dec 17, 2025 at 09:12:33PM +0100, Marek Vasut wrote:
> >
> > > Add support for converting single-copy environment to redundant environment.
> > > In case CRC checks on both redundant environment copies fail, try one more
> > > CRC check on the primary environment copy and treat it as single environment.
> > > If that check does pass, rewrite the single-copy environment into redundant
> > > environment format, indicate the environment is valid, and import that as
> > > usual primary copy of redundant environment. Follow up 'env save' will then
> > > store two environment copies and the system will continue to operate as
> > > regular redundant environment system.
> > >
> > > Add test which validates this upgrade path. The test starts with spi.bin
> > > which is pre-populated as single-copy environment and then upgrades that
> > > environment to dual-copy environment.
> > >
> > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> > > ---
> > > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > > Cc: Jerome Forissier <jerome.forissier@linaro.org>
> > > Cc: Simon Glass <sjg@chromium.org>
> > > Cc: Tom Rini <trini@konsulko.com>
> > > Cc: u-boot@lists.denx.de
> >
> > For merging, a cover letter makes things so much easier, please add one
> > for v2. And, I think this needs a Kconfig option. I'm sure you added
> > this because someone has a valid use case but it's going to grow too
> > many platforms where that feature isn't likely desired. Thanks.
> Do you actually observe growth ? Because this is calling existing functions,
> so the growth has to be in units of bytes tops.
A good question, I was assuming so but checking xilinx_versal_virt (a
platform with redundant env) shows yes, it does:
01: Merge patch series "fit: print conf node compatibles + use property string constants"
05: env: Add single to redundant environment upgrade path
aarch64: (for 1/1 boards) all +96.0 text +96.0
xilinx_versal_virt: all +96 text +96
u-boot: add: 0/0, grow: 1/0 bytes: 84/0 (84)
function old new delta
env_check_redund 316 400 +84
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] env: Add single to redundant environment upgrade path
2025-12-18 13:58 ` Tom Rini
@ 2025-12-18 23:09 ` Marek Vasut
2025-12-18 23:22 ` Tom Rini
0 siblings, 1 reply; 9+ messages in thread
From: Marek Vasut @ 2025-12-18 23:09 UTC (permalink / raw)
To: Tom Rini; +Cc: u-boot, Heinrich Schuchardt, Jerome Forissier, Simon Glass
On 12/18/25 2:58 PM, Tom Rini wrote:
> On Wed, Dec 17, 2025 at 11:58:15PM +0100, Marek Vasut wrote:
>> On 12/17/25 9:56 PM, Tom Rini wrote:
>>> On Wed, Dec 17, 2025 at 09:12:33PM +0100, Marek Vasut wrote:
>>>
>>>> Add support for converting single-copy environment to redundant environment.
>>>> In case CRC checks on both redundant environment copies fail, try one more
>>>> CRC check on the primary environment copy and treat it as single environment.
>>>> If that check does pass, rewrite the single-copy environment into redundant
>>>> environment format, indicate the environment is valid, and import that as
>>>> usual primary copy of redundant environment. Follow up 'env save' will then
>>>> store two environment copies and the system will continue to operate as
>>>> regular redundant environment system.
>>>>
>>>> Add test which validates this upgrade path. The test starts with spi.bin
>>>> which is pre-populated as single-copy environment and then upgrades that
>>>> environment to dual-copy environment.
>>>>
>>>> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
>>>> ---
>>>> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
>>>> Cc: Jerome Forissier <jerome.forissier@linaro.org>
>>>> Cc: Simon Glass <sjg@chromium.org>
>>>> Cc: Tom Rini <trini@konsulko.com>
>>>> Cc: u-boot@lists.denx.de
>>>
>>> For merging, a cover letter makes things so much easier, please add one
>>> for v2. And, I think this needs a Kconfig option. I'm sure you added
>>> this because someone has a valid use case but it's going to grow too
>>> many platforms where that feature isn't likely desired. Thanks.
>> Do you actually observe growth ? Because this is calling existing functions,
>> so the growth has to be in units of bytes tops.
>
> A good question, I was assuming so but checking xilinx_versal_virt (a
> platform with redundant env) shows yes, it does:
> 01: Merge patch series "fit: print conf node compatibles + use property string constants"
> 05: env: Add single to redundant environment upgrade path
> aarch64: (for 1/1 boards) all +96.0 text +96.0
> xilinx_versal_virt: all +96 text +96
> u-boot: add: 0/0, grow: 1/0 bytes: 84/0 (84)
> function old new delta
> env_check_redund 316 400 +84
Correct, and the growth is minimal and gated by ENV_REDUND already.
I think it would still be good not to confuse users with too many
additional Kconfig symbols, but if you insist, I will add one ?
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] env: Add single to redundant environment upgrade path
2025-12-18 23:09 ` Marek Vasut
@ 2025-12-18 23:22 ` Tom Rini
2025-12-31 15:17 ` Marek Vasut
0 siblings, 1 reply; 9+ messages in thread
From: Tom Rini @ 2025-12-18 23:22 UTC (permalink / raw)
To: Marek Vasut; +Cc: u-boot, Heinrich Schuchardt, Jerome Forissier, Simon Glass
[-- Attachment #1: Type: text/plain, Size: 2983 bytes --]
On Fri, Dec 19, 2025 at 12:09:28AM +0100, Marek Vasut wrote:
> On 12/18/25 2:58 PM, Tom Rini wrote:
> > On Wed, Dec 17, 2025 at 11:58:15PM +0100, Marek Vasut wrote:
> > > On 12/17/25 9:56 PM, Tom Rini wrote:
> > > > On Wed, Dec 17, 2025 at 09:12:33PM +0100, Marek Vasut wrote:
> > > >
> > > > > Add support for converting single-copy environment to redundant environment.
> > > > > In case CRC checks on both redundant environment copies fail, try one more
> > > > > CRC check on the primary environment copy and treat it as single environment.
> > > > > If that check does pass, rewrite the single-copy environment into redundant
> > > > > environment format, indicate the environment is valid, and import that as
> > > > > usual primary copy of redundant environment. Follow up 'env save' will then
> > > > > store two environment copies and the system will continue to operate as
> > > > > regular redundant environment system.
> > > > >
> > > > > Add test which validates this upgrade path. The test starts with spi.bin
> > > > > which is pre-populated as single-copy environment and then upgrades that
> > > > > environment to dual-copy environment.
> > > > >
> > > > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> > > > > ---
> > > > > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > > > > Cc: Jerome Forissier <jerome.forissier@linaro.org>
> > > > > Cc: Simon Glass <sjg@chromium.org>
> > > > > Cc: Tom Rini <trini@konsulko.com>
> > > > > Cc: u-boot@lists.denx.de
> > > >
> > > > For merging, a cover letter makes things so much easier, please add one
> > > > for v2. And, I think this needs a Kconfig option. I'm sure you added
> > > > this because someone has a valid use case but it's going to grow too
> > > > many platforms where that feature isn't likely desired. Thanks.
> > > Do you actually observe growth ? Because this is calling existing functions,
> > > so the growth has to be in units of bytes tops.
> >
> > A good question, I was assuming so but checking xilinx_versal_virt (a
> > platform with redundant env) shows yes, it does:
> > 01: Merge patch series "fit: print conf node compatibles + use property string constants"
> > 05: env: Add single to redundant environment upgrade path
> > aarch64: (for 1/1 boards) all +96.0 text +96.0
> > xilinx_versal_virt: all +96 text +96
> > u-boot: add: 0/0, grow: 1/0 bytes: 84/0 (84)
> > function old new delta
> > env_check_redund 316 400 +84
> Correct, and the growth is minimal and gated by ENV_REDUND already.
>
> I think it would still be good not to confuse users with too many additional
> Kconfig symbols, but if you insist, I will add one ?
Yes, please add one, it's 188 platforms that'll grow and I do think
migration from single to redundant env is a niche use case. Thanks.
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] env: Add single to redundant environment upgrade path
2025-12-18 23:22 ` Tom Rini
@ 2025-12-31 15:17 ` Marek Vasut
0 siblings, 0 replies; 9+ messages in thread
From: Marek Vasut @ 2025-12-31 15:17 UTC (permalink / raw)
To: Tom Rini; +Cc: u-boot, Heinrich Schuchardt, Jerome Forissier, Simon Glass
On 12/19/25 12:22 AM, Tom Rini wrote:
> On Fri, Dec 19, 2025 at 12:09:28AM +0100, Marek Vasut wrote:
>> On 12/18/25 2:58 PM, Tom Rini wrote:
>>> On Wed, Dec 17, 2025 at 11:58:15PM +0100, Marek Vasut wrote:
>>>> On 12/17/25 9:56 PM, Tom Rini wrote:
>>>>> On Wed, Dec 17, 2025 at 09:12:33PM +0100, Marek Vasut wrote:
>>>>>
>>>>>> Add support for converting single-copy environment to redundant environment.
>>>>>> In case CRC checks on both redundant environment copies fail, try one more
>>>>>> CRC check on the primary environment copy and treat it as single environment.
>>>>>> If that check does pass, rewrite the single-copy environment into redundant
>>>>>> environment format, indicate the environment is valid, and import that as
>>>>>> usual primary copy of redundant environment. Follow up 'env save' will then
>>>>>> store two environment copies and the system will continue to operate as
>>>>>> regular redundant environment system.
>>>>>>
>>>>>> Add test which validates this upgrade path. The test starts with spi.bin
>>>>>> which is pre-populated as single-copy environment and then upgrades that
>>>>>> environment to dual-copy environment.
>>>>>>
>>>>>> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
>>>>>> ---
>>>>>> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
>>>>>> Cc: Jerome Forissier <jerome.forissier@linaro.org>
>>>>>> Cc: Simon Glass <sjg@chromium.org>
>>>>>> Cc: Tom Rini <trini@konsulko.com>
>>>>>> Cc: u-boot@lists.denx.de
>>>>>
>>>>> For merging, a cover letter makes things so much easier, please add one
>>>>> for v2. And, I think this needs a Kconfig option. I'm sure you added
>>>>> this because someone has a valid use case but it's going to grow too
>>>>> many platforms where that feature isn't likely desired. Thanks.
>>>> Do you actually observe growth ? Because this is calling existing functions,
>>>> so the growth has to be in units of bytes tops.
>>>
>>> A good question, I was assuming so but checking xilinx_versal_virt (a
>>> platform with redundant env) shows yes, it does:
>>> 01: Merge patch series "fit: print conf node compatibles + use property string constants"
>>> 05: env: Add single to redundant environment upgrade path
>>> aarch64: (for 1/1 boards) all +96.0 text +96.0
>>> xilinx_versal_virt: all +96 text +96
>>> u-boot: add: 0/0, grow: 1/0 bytes: 84/0 (84)
>>> function old new delta
>>> env_check_redund 316 400 +84
>> Correct, and the growth is minimal and gated by ENV_REDUND already.
>>
>> I think it would still be good not to confuse users with too many additional
>> Kconfig symbols, but if you insist, I will add one ?
>
> Yes, please add one, it's 188 platforms that'll grow and I do think
> migration from single to redundant env is a niche use case. Thanks.
Just for completeness, added in V2.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-12-31 15:17 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-17 20:12 [PATCH 1/3] configs: sandbox: Enable environment in SPI NOR support Marek Vasut
2025-12-17 20:12 ` [PATCH 2/3] test: env: Add test for environment storage in SPI NOR Marek Vasut
2025-12-17 20:12 ` [PATCH 3/3] env: Add single to redundant environment upgrade path Marek Vasut
2025-12-17 20:56 ` Tom Rini
2025-12-17 22:58 ` Marek Vasut
2025-12-18 13:58 ` Tom Rini
2025-12-18 23:09 ` Marek Vasut
2025-12-18 23:22 ` Tom Rini
2025-12-31 15:17 ` Marek Vasut
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox