env: enable accessing the environment in an EXT4 partition
PATCH v4 1/1 env: enable accessing the environment in an EXT4 partition
For example to store the environment in a file named "/uboot.env" in MMC "0", where partition "1" contains the EXT4 filesystem, the following configs should be added to the board's default config:
CONFIG_ENV_IS_IN_EXT4=y
CONFIG_ENV_EXT4_DEVICE_AND_PART="0:1"
CONFIG_ENV_EXT4_FILE="/uboot.env"
CONFIG_ENV_EXT4_INTERFACE="mmc"
--- env/Kconfig | 39 +++++++++++++++++++++++++++++++++++++++ env/env.c | 2 ++ env/ext4.c | 20 ++++++++++---------- 3 files changed, 51 insertions(+), 10 deletions(-)
env/Kconfig +39 -0
@@ -81,6 +81,13 @@ config ENV_IS_IN_FAT - CONFIG_FAT_WRITE: This must be enabled. Otherwise it cannot save the environment file. +config ENV_IS_IN_EXT4 + bool "Environment is in a EXT4 filesystem" + depends on !CHAIN_OF_TRUST + select EXT4_WRITE + help + Define this if you want to use the EXT4 file system for the environment. + config ENV_IS_IN_FLASH bool "Environment in flash memory" depends on !CHAIN_OF_TRUST
@@ -396,6 +403,38 @@ config ENV_FAT_FILE It's a string of the FAT file name. This file use to store the environment. +config ENV_EXT4_INTERFACE + string "Name of the block device for the environment" + depends on ENV_IS_IN_EXT4 + help + Define this to a string that is the name of the block device. + +config ENV_EXT4_DEVICE_AND_PART + string "Device and partition for where to store the environemt in EXT4" + depends on ENV_IS_IN_EXT4 + help + Define this to a string to specify the partition of the device. It can + be as following: + + "D:P", "D:0", "D", "D:" or "D:auto" (D, P are integers. And P >= 1) + - "D:P": device D partition P. Error occurs if device D has no + partition table. + - "D:0": device D. + - "D" or "D:": device D partition 1 if device D has partition + table, or the whole device D if has no partition + table. + - "D:auto": first partition in device D with bootable flag set. + If none, first valid partition in device D. If no + partition table then means device D. + +config ENV_EXT4_FILE + string "Name of the EXT4 file to use for the environemnt" + depends on ENV_IS_IN_EXT4 + default "uboot.env" + help + It's a string of the EXT4 file name. This file use to store the + environment (explicit path to the file) + if ARCH_SUNXI config ENV_OFFSET
env/env.c +2 -0
@@ -32,6 +32,8 @@ static enum env_location env_get_default_location(void)return ENVL_EEPROM ; else if IS_ENABLED(CONFIG_ENV_IS_IN_FAT) return ENVL_FAT; + else if IS_ENABLED(CONFIG_ENV_IS_IN_EXT4) + return ENVL_EXT4; else if IS_ENABLED(CONFIG_ENV_IS_IN_FLASH) return ENVL_FLASH; else if IS_ENABLED(CONFIG_ENV_IS_IN_MMC)
env/ext4.c +10 -10
@@ -46,8 +46,8 @@ static int env_ext4_save(void)if (err)return err; - part =blk_get_device_part_str (EXT4_ENV_INTERFACE , -EXT4_ENV_DEVICE_AND_PART , + part =blk_get_device_part_str (CONFIG_ENV_EXT4_INTERFACE , +CONFIG_ENV_EXT4_DEVICE_AND_PART , &dev_desc, &info,1 );if (part <0 )return 1 ;
@@ -57,16 +57,16 @@ static int env_ext4_save(void)if (!ext4fs_mount (info.size)) {printf ("\n** Unable to use %s %s for saveenv **\n" , -EXT4_ENV_INTERFACE ,EXT4_ENV_DEVICE_AND_PART ); +CONFIG_ENV_EXT4_INTERFACE ,CONFIG_ENV_EXT4_DEVICE_AND_PART );return 1 ; } - err =ext4fs_write (EXT4_ENV_FILE , (void *)&env_new,sizeof (env_t)); + err =ext4fs_write (CONFIG_ENV_EXT4_FILE , (void *)&env_new,sizeof (env_t));ext4fs_close ();if (err ==-1 ) {printf ("\n** Unable to write \"%s\" from %s%d:%d **\n" , -EXT4_ENV_FILE ,EXT4_ENV_INTERFACE , dev, part); +CONFIG_ENV_EXT4_FILE ,CONFIG_ENV_EXT4_INTERFACE , dev, part);return 1 ; }
@@ -84,8 +84,8 @@ static int env_ext4_load(void)int err;loff_t off; - part =blk_get_device_part_str (EXT4_ENV_INTERFACE , -EXT4_ENV_DEVICE_AND_PART , + part =blk_get_device_part_str (CONFIG_ENV_EXT4_INTERFACE , +CONFIG_ENV_EXT4_DEVICE_AND_PART , &dev_desc, &info,1 );if (part <0 ) goto err_env_relocate;
@@ -95,16 +95,16 @@ static int env_ext4_load(void)if (!ext4fs_mount (info.size)) {printf ("\n** Unable to use %s %s for loading the env **\n" , -EXT4_ENV_INTERFACE ,EXT4_ENV_DEVICE_AND_PART ); +CONFIG_ENV_EXT4_INTERFACE ,CONFIG_ENV_EXT4_DEVICE_AND_PART ); goto err_env_relocate; } - err =ext4_read_file (EXT4_ENV_FILE , buf,0 ,CONFIG_ENV_SIZE , &off); + err =ext4_read_file (CONFIG_ENV_EXT4_FILE , buf,0 ,CONFIG_ENV_SIZE , &off);ext4fs_close ();if (err ==-1 ) {printf ("\n** Unable to read \"%s\" from %s%d:%d **\n" , -EXT4_ENV_FILE ,EXT4_ENV_INTERFACE , dev, part); +CONFIG_ENV_EXT4_FILE ,CONFIG_ENV_EXT4_INTERFACE , dev, part); goto err_env_relocate; }
Signature · 1 line
2.7.4
PATCH v4 1/1 env: enable accessing the environment in an EXT4 partition
Quoted 8 lines · Jorge Ramirez-Ortiz
For example to store the environment in a file named "/uboot.env" in MMC "0", where partition "1" contains the EXT4 filesystem, the following configs should be added to the board's default config:
CONFIG_ENV_IS_IN_EXT4=y
CONFIG_ENV_EXT4_DEVICE_AND_PART="0:1"
CONFIG_ENV_EXT4_FILE="/uboot.env"
CONFIG_ENV_EXT4_INTERFACE="mmc"
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171127/b7173f0f/attachment.sig>
PATCH v4 1/1 env: enable accessing the environment in an EXT4 partition
Quoted 6 lines · Tom Rini
Quoted 4 lines · Jorge Ramirez-Ortiz
For example to store the environment in a file named "/uboot.env" in MMC "0", where partition "1" contains the EXT4 filesystem, the following configs should be added to the board's default config:
Quoted 6 lines
Quoted 4 lines
CONFIG_ENV_IS_IN_EXT4=y CONFIG_ENV_EXT4_DEVICE_AND_PART="0:1" CONFIG_ENV_EXT4_FILE="/uboot.env" CONFIG_ENV_EXT4_INTERFACE="mmc"Reviewed-by Tom Rini <[email protected]>
thanks. I am using this feature for the Dragonboard 820c (will post the patches for review this week I think)
PATCH v4 1/1 env: enable accessing the environment in an EXT4 partition
In reply to Jorge Ramirez-OrtizQuoted 9 lines · Jorge Ramirez-Ortiz
For example to store the environment in a file named "/uboot.env" in MMC "0", where partition "1" contains the EXT4 filesystem, the following configs should be added to the board's default config:
CONFIG_ENV_IS_IN_EXT4=y
CONFIG_ENV_EXT4_DEVICE_AND_PART="0:1"
CONFIG_ENV_EXT4_FILE="/uboot.env"
CONFIG_ENV_EXT4_INTERFACE="mmc"Reviewed-by Tom Rini <[email protected]>
The code is fine, but you forgot a Signed-off-by line, so NAK without one, sorry!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171204/07998703/attachment.sig>
PATCH v4 1/1 env: enable accessing the environment in an EXT4 partition
Quoted 6 lines · Tom Rini
Quoted 4 lines · Jorge Ramirez-Ortiz
For example to store the environment in a file named "/uboot.env" in MMC "0", where partition "1" contains the EXT4 filesystem, the following configs should be added to the board's default config:
Quoted 8 lines
Quoted 5 lines
CONFIG_ENV_IS_IN_EXT4=y CONFIG_ENV_EXT4_DEVICE_AND_PART="0:1" CONFIG_ENV_EXT4_FILE="/uboot.env" CONFIG_ENV_EXT4_INTERFACE="mmc"Reviewed-by Tom Rini <[email protected]>The code is fine, but you forgot a Signed-off-by line, so NAK without one, sorry!
ok my fault. will post a new one as part of the patchset for the dragonboard820 support