env: Setup GD_FLG_ENV_DEFAULT flag when default environment are used
PATCH 1/1 env: Setup GD_FLG_ENV_DEFAULT flag when default environment are used
Setup flag when default environment are used to be able to rewrite default distro boot variables based on SoC boot mode.
---
I didn't find any way how to detect that default or saved variables are used. I want to have a flag to be able to rewrite boot_targets variable based on boot mode. Especially when SD boot mode is setup than SD should be primary boot devices, etc.
When variables are saved boot_targets will be restored and SoC boot mode will be ignored.
If you know better way how to do it, please let me know.
--- common/env_common.c | 1 + include/asm-generic/global_data.h | 1 + 2 files changed, 2 insertions(+)
common/env_common.c +1 -0
@@ -123,6 +123,7 @@ void set_default_env(const char *s)error ("Environment import failed: errno = %d\n" , errno); gd->flags |=GD_FLG_ENV_READY ; + gd->flags |=GD_FLG_ENV_DEFAULT ; }
include/asm-generic/global_data.h +1 -0
@@ -141,5 +141,6 @@ typedef struct global_data {#define GD_FLG_SPL_INIT 0x00400/* spl_init() has been called */ #define GD_FLG_SKIP_RELOC 0x00800/* Don't relocate */ #define GD_FLG_RECORD 0x01000/* Record console */ +#define GD_FLG_ENV_DEFAULT 0x02000/* Default variable flag */ #endif /* __ASM_GENERIC_GBL_DATA_H */
Signature · 1 line
1.9.1
PATCH 1/1 env: Setup GD_FLG_ENV_DEFAULT flag when default environment are used
Quoted 6 lines · Michal Simek
Setup flag when default environment are used to be able to rewrite default distro boot variables based on SoC boot mode.
Signed-off-by Michal Simek <[email protected]>---
Quoted 7 lines
I didn't find any way how to detect that default or saved variables are used. I want to have a flag to be able to rewrite
boot_targetsvariable based on boot mode. Especially when SD boot mode is setup than SD should be primary boot devices, etc.
When variables are savedboot_targetswill be restored and SoC boot mode will be ignored.
If you know better way how to do it, please let me know.
You may want to be able to do the same from inside a script, so I guess we should better have this as an environment variable itself again.
There was a way to have environment variable reads return a value directly from code rather than go via environment storage. I guess we could expose the flag through that?
Or add an environment variable that we set in set_default_env() and ignore that variable on saveenv. I'm not sure I like that option better than your current one though.
Alex
Quoted 29 lines
--- common/env_common.c | 1 + include/asm-generic/global_data.h | 1 + 2 files changed, 2 insertions(+)common/env_common.c +1
-0@@ -123,6 +123,7 @@ void set_default_env(const char *s)error ("Environment import failed: errno = %d\n" , errno); gd->flags |=GD_FLG_ENV_READY ; + gd->flags |=GD_FLG_ENV_DEFAULT ; }include/asm-generic/global_data.h +1
-0@@ -141,5 +141,6 @@ typedef struct global_data {#define GD_FLG_SPL_INIT 0x00400/* spl_init() has been called */ #define GD_FLG_SKIP_RELOC 0x00800/* Don't relocate */ #define GD_FLG_RECORD 0x01000/* Record console */ +#define GD_FLG_ENV_DEFAULT 0x02000/* Default variable flag */ #endif /* __ASM_GENERIC_GBL_DATA_H */
PATCH 1/1 env: Setup GD_FLG_ENV_DEFAULT flag when default environment are used
Quoted 17 lines · Alexander Graf
Quoted 6 lines · Michal Simek
Setup flag when default environment are used to be able to rewrite default distro boot variables based on SoC boot mode.
Signed-off-by Michal Simek <[email protected]>---
Quoted 7 lines
I didn't find any way how to detect that default or saved variables are used. I want to have a flag to be able to rewrite
boot_targetsvariable based on boot mode. Especially when SD boot mode is setup than SD should be primary boot devices, etc.
When variables are savedboot_targetswill be restored and SoC boot mode will be ignored.
If you know better way how to do it, please let me know.
Quoted 2 lines
You may want to be able to do the same from inside a script, so I guess we should better have this as an environment variable itself again.
Was there any environment in past?
Quoted 4 lines
There was a way to have environment variable reads return a value directly from code rather than go via environment storage. I guess we could expose the flag through that?
If you expose environment variable and then run saveenv this variable will be saved and restored again and your script behaves the same.
Quoted 4 lines
Or add an environment variable that we set in
set_default_env()and ignore that variable on saveenv. I'm not sure I like that option better than your current one though.
Yes this should work but sounds pretty hacky.
Just and example of usage which I have tested on ZynqMP. Based on bootmode different boot_targets are setup and this setting is blocked for saved environment detected via this flag.
Thanks,
Michal
224 int board_late_init(void)
225 {
226 u32 reg = 0;
227 u8 bootmode;
228
229 if (!(gd->flags & GD_FLG_ENV_DEFAULT)) {
230 debug("Saved variables - Skipping\n");
231 return 0;
232 }
233
234 reg = readl(&crlapb_base->boot_mode);
235 bootmode = reg & BOOT_MODES_MASK;
236
237 puts("Bootmode: ");
238 switch (bootmode) {
239 case JTAG_MODE:
240 puts("JTAG_MODE\n");
241 setenv("boot_targets", "pxe dhcp");
242 break;
243 case QSPI_MODE_24BIT:
244 case QSPI_MODE_32BIT:
245 setenv("boot_targets", "qspi0");
246 puts("QSPI_MODE\n");
247 break;
248 case EMMC_MODE:
249 puts("EMMC_MODE\n");
250 setenv("boot_targets", "mmc0 mmc1");
251 break;
252 case SD_MODE:
253 puts("SD_MODE\n");
254 setenv("boot_targets", "mmc0 mmc1");
255 break;
256 case SD_MODE1:
257 puts("SD_MODE1\n");
258 setenv("boot_targets", "mmc0 mmc1");
259 break;
260 case NAND_MODE:
261 puts("NAND_MODE\n");
262 setenv("boot_targets", "nand0");
263 break; 264 default:
265 printf("Invalid Boot Mode:0x%x\n", bootmode);
266 break;
267 }
268
269 return 0;
270 }
PATCH 1/1 env: Setup GD_FLG_ENV_DEFAULT flag when default environment are used
Quoted 22 lines
Am 31.05.2016 um 07:04 schrieb Michal Simek <[email protected]>:
Quoted 18 lines · Alexander Graf
Quoted 16 lines · Michal Simek
Setup flag when default environment are used to be able to rewrite default distro boot variables based on SoC boot mode.
Signed-off-by Michal Simek <[email protected]>---
I didn't find any way how to detect that default or saved variables are used. I want to have a flag to be able to rewrite
boot_targetsvariable based on boot mode. Especially when SD boot mode is setup than SD should be primary boot devices, etc.
When variables are savedboot_targetswill be restored and SoC boot mode will be ignored.
If you know better way how to do it, please let me know.
Quoted 4 lines
Quoted 2 lines
You may want to be able to do the same from inside a script, so I guess we should better have this as an environment variable itself again.
Was there any environment in past?
With again I meant "from C as well as from script".
Quoted 7 lines
Quoted 4 lines
There was a way to have environment variable reads return a value directly from code rather than go via environment storage. I guess we could expose the flag through that?
If you expose environment variable and then run saveenv this variable will be saved and restored again and your script behaves the same.
Not if we declare the environment variable read as callback ;).
Alex
PATCH 1/1 env: Setup GD_FLG_ENV_DEFAULT flag when default environment are used
Quoted 30 lines · Alexander Graf
Quoted 22 lines
Am 31.05.2016 um 07:04 schrieb Michal Simek <[email protected]>:
Quoted 18 lines · Alexander Graf
Quoted 16 lines · Michal Simek
Setup flag when default environment are used to be able to rewrite default distro boot variables based on SoC boot mode.
Signed-off-by Michal Simek <[email protected]>---
I didn't find any way how to detect that default or saved variables are used. I want to have a flag to be able to rewrite
boot_targetsvariable based on boot mode. Especially when SD boot mode is setup than SD should be primary boot devices, etc.
When variables are savedboot_targetswill be restored and SoC boot mode will be ignored.
If you know better way how to do it, please let me know.Quoted 4 lines
Quoted 2 lines
You may want to be able to do the same from inside a script, so I guess we should better have this as an environment variable itself again.
Was there any environment in past?
With again I meant "from C as well as from script".
Quoted 1 line
Quoted 1 line
Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
There was a way to have environment variable reads return a value directly from code rather than go via environment storage. I guess we could expose the flag through that?
If you expose environment variable and then run saveenv this variable will be saved and restored again and your script behaves the same.
Not if we declare the environment variable read as callback ;).
What do you mean?
It is kind of interesting that this is not done already for others SoCs when you want to use distro config. :-)
Cheers,
Michal
PATCH 1/1 env: Setup GD_FLG_ENV_DEFAULT flag when default environment are used
Quoted 35 lines · Michal Simek
Quoted 34 lines · Alexander Graf
Quoted 22 lines
Am 31.05.2016 um 07:04 schrieb Michal Simek <[email protected]>:
Quoted 18 lines · Alexander Graf
Quoted 16 lines · Michal Simek
Setup flag when default environment are used to be able to rewrite default distro boot variables based on SoC boot mode.
Signed-off-by Michal Simek <[email protected]>---
I didn't find any way how to detect that default or saved variables are used. I want to have a flag to be able to rewrite
boot_targetsvariable based on boot mode. Especially when SD boot mode is setup than SD should be primary boot devices, etc.
When variables are savedboot_targetswill be restored and SoC boot mode will be ignored.
If you know better way how to do it, please let me know.Quoted 4 lines
Quoted 2 lines
You may want to be able to do the same from inside a script, so I guess we should better have this as an environment variable itself again.
Was there any environment in past?
With again I meant "from C as well as from script".
Quoted 5 lines
Quoted 4 lines
There was a way to have environment variable reads return a value directly from code rather than go via environment storage. I guess we could expose the flag through that?
Quoted 6 lines
Quoted 4 lines
Quoted 2 lines
If you expose environment variable and then run saveenv this variable will be saved and restored again and your script behaves the same.
Not if we declare the environment variable read as callback ;).
What do you mean?
Meh, apparently I misremembered.
Quoted 2 lines
It is kind of interesting that this is not done already for others SoCs when you want to use distro config. :-)
Well, there's always a first :).
Either way, I guess your patch is perfectly fine as a first step. It would be nice to also introduce some way for scripts to evaluate whether the environment is the default environment, but we can always add that later.
Alex
PATCH 1/1 env: Setup GD_FLG_ENV_DEFAULT flag when default environment are used
Quoted 50 lines · Alexander Graf
Quoted 35 lines · Michal Simek
Quoted 34 lines · Alexander Graf
Quoted 22 lines
Am 31.05.2016 um 07:04 schrieb Michal Simek <[email protected]>:
Quoted 18 lines · Alexander Graf
Quoted 16 lines · Michal Simek
Setup flag when default environment are used to be able to rewrite default distro boot variables based on SoC boot mode.
Signed-off-by Michal Simek <[email protected]>---
I didn't find any way how to detect that default or saved variables are used. I want to have a flag to be able to rewrite
boot_targetsvariable based on boot mode. Especially when SD boot mode is setup than SD should be primary boot devices, etc.
When variables are savedboot_targetswill be restored and SoC boot mode will be ignored.
If you know better way how to do it, please let me know.Quoted 4 lines
Quoted 2 lines
You may want to be able to do the same from inside a script, so I guess we should better have this as an environment variable itself again.
Was there any environment in past?
With again I meant "from C as well as from script".
Quoted 5 lines
Quoted 4 lines
There was a way to have environment variable reads return a value directly from code rather than go via environment storage. I guess we could expose the flag through that?
Quoted 6 lines
Quoted 4 lines
Quoted 2 lines
If you expose environment variable and then run saveenv this variable will be saved and restored again and your script behaves the same.
Not if we declare the environment variable read as callback ;).
What do you mean?
Meh, apparently I misremembered.
Quoted 2 lines
It is kind of interesting that this is not done already for others SoCs when you want to use distro config. :-)
Quoted 6 lines
Well, there's always a first :).
Either way, I guess your patch is perfectly fine as a first step. It would be nice to also introduce some way for scripts to evaluate whether the environment is the default environment, but we can always add that later.
Does this mean your Acked-by line?
Cheers,
Michal
PATCH 1/1 env: Setup GD_FLG_ENV_DEFAULT flag when default environment are used
Quoted 51 lines · Michal Simek
Quoted 50 lines · Alexander Graf
Quoted 35 lines · Michal Simek
Quoted 34 lines · Alexander Graf
Quoted 22 lines
Am 31.05.2016 um 07:04 schrieb Michal Simek <[email protected]>:
Quoted 18 lines · Alexander Graf
Quoted 16 lines · Michal Simek
Setup flag when default environment are used to be able to rewrite default distro boot variables based on SoC boot mode.
Signed-off-by Michal Simek <[email protected]>---
I didn't find any way how to detect that default or saved variables are used. I want to have a flag to be able to rewrite
boot_targetsvariable based on boot mode. Especially when SD boot mode is setup than SD should be primary boot devices, etc.
When variables are savedboot_targetswill be restored and SoC boot mode will be ignored.
If you know better way how to do it, please let me know.Quoted 4 lines
Quoted 2 lines
You may want to be able to do the same from inside a script, so I guess we should better have this as an environment variable itself again.
Was there any environment in past?
With again I meant "from C as well as from script".
Quoted 5 lines
Quoted 4 lines
There was a way to have environment variable reads return a value directly from code rather than go via environment storage. I guess we could expose the flag through that?
Quoted 6 lines
Quoted 4 lines
Quoted 2 lines
If you expose environment variable and then run saveenv this variable will be saved and restored again and your script behaves the same.
Not if we declare the environment variable read as callback ;).
What do you mean?
Meh, apparently I misremembered.
Quoted 2 lines
It is kind of interesting that this is not done already for others SoCs when you want to use distro config. :-)
Quoted 9 lines
Quoted 6 lines
Well, there's always a first :).
Either way, I guess your patch is perfectly fine as a first step. It would be nice to also introduce some way for scripts to evaluate whether the environment is the default environment, but we can always add that later.
Does this mean your Acked-by line?
(IIRC Reviewed-by is stronger than Acked-by)
Alex
Quoted 5 lines · Michal Simek
Setup flag when default environment are used to be able to rewrite default distro boot variables based on SoC boot mode.
Signed-off-by Michal Simek <[email protected]>Reviewed-by Alexander Graf <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160606/d08d081d/attachment.sig>
Quoted 9 lines · Tom Rini
Quoted 5 lines · Michal Simek
Setup flag when default environment are used to be able to rewrite default distro boot variables based on SoC boot mode.
Signed-off-by Michal Simek <[email protected]>Reviewed-by Alexander Graf <[email protected]>Applied to u-boot/master, thanks!
... yes, this was already in via Michal's tree, it didn't get applied twice, I just didn't delete it from my bundle.
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160606/8096b52e/attachment.sig>