All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] env: Implement lower priority arch_env_get_location()
@ 2022-04-06  0:21 Marek Vasut
  2022-04-06  0:21 ` [PATCH 2/3] armv8: layerscape: env: Switch to arch_env_get_location() Marek Vasut
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Marek Vasut @ 2022-04-06  0:21 UTC (permalink / raw)
  To: u-boot
  Cc: Marek Vasut, Adam Ford, Fabio Estevam, Marek Behún,
	Peng Fan, Simon Glass, Stefano Babic, Tim Harvey, Tom Rini,
	Tommaso Merciai, Vladimir Oltean

Currently there is only one way to override desired environment location,
by implementing env_get_location(). This is increasingly being conflated
both on board level and architecture level, which leads to a problem on
boards where this function is already implemented on architecture level,
since those boards have no way to override this environment location on
board level anymore.

Implement arch_env_get_location() function which is architecture specific
and should only ever be implemented in architecture code. This function
has lower priority than env_get_location(), which should only ever be
implemented in board code, and which overrides the arch_env_get_location()
architecture environment selection.

This way, architecture can define its default environment chooser, while
board can now override it as needed at all times.

There is no functional change, since env_get_location() simply returns
arch_env_get_location(), and arch_env_get_location() implements the
current env_get_location() default content.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Adam Ford <aford173@gmail.com>
Cc: Fabio Estevam <festevam@denx.de>
Cc: Marek Behún <marek.behun@nic.cz>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Tim Harvey <tharvey@gateworks.com>
Cc: Tom Rini <trini@konsulko.com>
Cc: Tommaso Merciai <tomm.merciai@gmail.com>
Cc: Vladimir Oltean <vladimir.oltean@nxp.com>
---
 env/env.c              | 29 ++++++++++++++++++++++++++---
 include/env_internal.h | 16 ++++++++++++++++
 2 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/env/env.c b/env/env.c
index e4dfb92e154..69848fb0608 100644
--- a/env/env.c
+++ b/env/env.c
@@ -110,13 +110,14 @@ static void env_set_inited(enum env_location location)
 }
 
 /**
- * env_get_location() - Returns the best env location for a board
+ * arch_env_get_location() - Returns the best env location for an arch
  * @op: operations performed on the environment
  * @prio: priority between the multiple environments, 0 being the
  *        highest priority
  *
  * This will return the preferred environment for the given priority.
- * This is overridable by boards if they need to.
+ * This is overridable by architectures if they need to and has lower
+ * priority than board side env_get_location() override.
  *
  * All implementations are free to use the operation, the priority and
  * any other data relevant to their choice, but must take into account
@@ -127,7 +128,7 @@ static void env_set_inited(enum env_location location)
  * Returns:
  * an enum env_location value on success, a negative error code otherwise
  */
-__weak enum env_location env_get_location(enum env_operation op, int prio)
+__weak enum env_location arch_env_get_location(enum env_operation op, int prio)
 {
 	if (prio >= ARRAY_SIZE(env_locations))
 		return ENVL_UNKNOWN;
@@ -135,6 +136,28 @@ __weak enum env_location env_get_location(enum env_operation op, int prio)
 	return env_locations[prio];
 }
 
+/**
+ * env_get_location() - Returns the best env location for a board
+ * @op: operations performed on the environment
+ * @prio: priority between the multiple environments, 0 being the
+ *        highest priority
+ *
+ * This will return the preferred environment for the given priority.
+ * This is overridable by boards if they need to.
+ *
+ * All implementations are free to use the operation, the priority and
+ * any other data relevant to their choice, but must take into account
+ * the fact that the lowest prority (0) is the most important location
+ * in the system. The following locations should be returned by order
+ * of descending priorities, from the highest to the lowest priority.
+ *
+ * Returns:
+ * an enum env_location value on success, a negative error code otherwise
+ */
+__weak enum env_location env_get_location(enum env_operation op, int prio)
+{
+	return arch_env_get_location(op, prio);
+}
 
 /**
  * env_driver_lookup() - Finds the most suited environment location
diff --git a/include/env_internal.h b/include/env_internal.h
index 07c227ecc03..14f4c696785 100644
--- a/include/env_internal.h
+++ b/include/env_internal.h
@@ -234,10 +234,26 @@ const char *env_ext4_get_intf(void);
  */
 const char *env_ext4_get_dev_part(void);
 
+/**
+ * arch_env_get_location()- Provide the best location for the U-Boot environment
+ *
+ * It is a weak function allowing board to overidde the environment location
+ * on architecture level. This has lower priority than env_get_location(),
+ * which can be defined on board level.
+ *
+ * @op: operations performed on the environment
+ * @prio: priority between the multiple environments, 0 being the
+ *        highest priority
+ * Return:  an enum env_location value on success, or -ve error code.
+ */
+enum env_location arch_env_get_location(enum env_operation op, int prio);
+
 /**
  * env_get_location()- Provide the best location for the U-Boot environment
  *
  * It is a weak function allowing board to overidde the environment location
+ * on board level. This has higher priority than arch_env_get_location(),
+ * which can be defined on architecture level.
  *
  * @op: operations performed on the environment
  * @prio: priority between the multiple environments, 0 being the
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] armv8: layerscape: env: Switch to arch_env_get_location()
  2022-04-06  0:21 [PATCH 1/3] env: Implement lower priority arch_env_get_location() Marek Vasut
@ 2022-04-06  0:21 ` Marek Vasut
  2022-04-21 15:43   ` Tom Rini
  2022-04-06  0:21 ` [PATCH 3/3] ARM: imx: imx8m: " Marek Vasut
  2022-04-21 15:43 ` [PATCH 1/3] env: Implement lower priority arch_env_get_location() Tom Rini
  2 siblings, 1 reply; 6+ messages in thread
From: Marek Vasut @ 2022-04-06  0:21 UTC (permalink / raw)
  To: u-boot
  Cc: Marek Vasut, Adam Ford, Fabio Estevam, Marek Behún,
	Peng Fan, Simon Glass, Stefano Babic, Tim Harvey, Tom Rini,
	Tommaso Merciai, Vladimir Oltean

Implement arch_env_get_location() instead of env_get_location(), so that
the env_get_location() can be implemented on board level and override the
arch_env_get_location() architecture defaults.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Adam Ford <aford173@gmail.com>
Cc: Fabio Estevam <festevam@denx.de>
Cc: Marek Behún <marek.behun@nic.cz>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Tim Harvey <tharvey@gateworks.com>
Cc: Tom Rini <trini@konsulko.com>
Cc: Tommaso Merciai <tomm.merciai@gmail.com>
Cc: Vladimir Oltean <vladimir.oltean@nxp.com>
---
 arch/arm/cpu/armv8/fsl-layerscape/cpu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
index 177f568f26e..8eed389cc3e 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
@@ -818,7 +818,7 @@ int mmc_get_env_dev(void)
 }
 #endif
 
-enum env_location env_get_location(enum env_operation op, int prio)
+enum env_location arch_env_get_location(enum env_operation op, int prio)
 {
 	enum boot_src src = get_boot_src();
 	enum env_location env_loc = ENVL_NOWHERE;
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] ARM: imx: imx8m: env: Switch to arch_env_get_location()
  2022-04-06  0:21 [PATCH 1/3] env: Implement lower priority arch_env_get_location() Marek Vasut
  2022-04-06  0:21 ` [PATCH 2/3] armv8: layerscape: env: Switch to arch_env_get_location() Marek Vasut
@ 2022-04-06  0:21 ` Marek Vasut
  2022-04-21 15:43   ` Tom Rini
  2022-04-21 15:43 ` [PATCH 1/3] env: Implement lower priority arch_env_get_location() Tom Rini
  2 siblings, 1 reply; 6+ messages in thread
From: Marek Vasut @ 2022-04-06  0:21 UTC (permalink / raw)
  To: u-boot
  Cc: Marek Vasut, Adam Ford, Fabio Estevam, Marek Behún,
	Peng Fan, Simon Glass, Stefano Babic, Tim Harvey, Tom Rini,
	Tommaso Merciai, Vladimir Oltean

Implement arch_env_get_location() instead of env_get_location(), so that
the env_get_location() can be implemented on board level and override the
arch_env_get_location() architecture defaults.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Adam Ford <aford173@gmail.com>
Cc: Fabio Estevam <festevam@denx.de>
Cc: Marek Behún <marek.behun@nic.cz>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Tim Harvey <tharvey@gateworks.com>
Cc: Tom Rini <trini@konsulko.com>
Cc: Tommaso Merciai <tomm.merciai@gmail.com>
Cc: Vladimir Oltean <vladimir.oltean@nxp.com>
---
 arch/arm/mach-imx/imx8m/soc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
index fc29208af29..ea6cbf2c3f0 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -1314,7 +1314,7 @@ void do_error(struct pt_regs *pt_regs)
 #endif
 
 #if defined(CONFIG_IMX8MN) || defined(CONFIG_IMX8MP)
-enum env_location env_get_location(enum env_operation op, int prio)
+enum env_location arch_env_get_location(enum env_operation op, int prio)
 {
 	enum boot_device dev = get_boot_device();
 
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/3] env: Implement lower priority arch_env_get_location()
  2022-04-06  0:21 [PATCH 1/3] env: Implement lower priority arch_env_get_location() Marek Vasut
  2022-04-06  0:21 ` [PATCH 2/3] armv8: layerscape: env: Switch to arch_env_get_location() Marek Vasut
  2022-04-06  0:21 ` [PATCH 3/3] ARM: imx: imx8m: " Marek Vasut
@ 2022-04-21 15:43 ` Tom Rini
  2 siblings, 0 replies; 6+ messages in thread
From: Tom Rini @ 2022-04-21 15:43 UTC (permalink / raw)
  To: Marek Vasut
  Cc: u-boot, Adam Ford, Fabio Estevam, Marek Behún, Peng Fan,
	Simon Glass, Stefano Babic, Tim Harvey, Tommaso Merciai,
	Vladimir Oltean

[-- Attachment #1: Type: text/plain, Size: 1646 bytes --]

On Wed, Apr 06, 2022 at 02:21:32AM +0200, Marek Vasut wrote:

> Currently there is only one way to override desired environment location,
> by implementing env_get_location(). This is increasingly being conflated
> both on board level and architecture level, which leads to a problem on
> boards where this function is already implemented on architecture level,
> since those boards have no way to override this environment location on
> board level anymore.
> 
> Implement arch_env_get_location() function which is architecture specific
> and should only ever be implemented in architecture code. This function
> has lower priority than env_get_location(), which should only ever be
> implemented in board code, and which overrides the arch_env_get_location()
> architecture environment selection.
> 
> This way, architecture can define its default environment chooser, while
> board can now override it as needed at all times.
> 
> There is no functional change, since env_get_location() simply returns
> arch_env_get_location(), and arch_env_get_location() implements the
> current env_get_location() default content.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Adam Ford <aford173@gmail.com>
> Cc: Fabio Estevam <festevam@denx.de>
> Cc: Marek Behún <marek.behun@nic.cz>
> Cc: Peng Fan <peng.fan@nxp.com>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Stefano Babic <sbabic@denx.de>
> Cc: Tim Harvey <tharvey@gateworks.com>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: Tommaso Merciai <tomm.merciai@gmail.com>
> Cc: Vladimir Oltean <vladimir.oltean@nxp.com>

Applied to u-boot/master, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/3] armv8: layerscape: env: Switch to arch_env_get_location()
  2022-04-06  0:21 ` [PATCH 2/3] armv8: layerscape: env: Switch to arch_env_get_location() Marek Vasut
@ 2022-04-21 15:43   ` Tom Rini
  0 siblings, 0 replies; 6+ messages in thread
From: Tom Rini @ 2022-04-21 15:43 UTC (permalink / raw)
  To: Marek Vasut
  Cc: u-boot, Adam Ford, Fabio Estevam, Marek Behún, Peng Fan,
	Simon Glass, Stefano Babic, Tim Harvey, Tommaso Merciai,
	Vladimir Oltean

[-- Attachment #1: Type: text/plain, Size: 771 bytes --]

On Wed, Apr 06, 2022 at 02:21:33AM +0200, Marek Vasut wrote:

> Implement arch_env_get_location() instead of env_get_location(), so that
> the env_get_location() can be implemented on board level and override the
> arch_env_get_location() architecture defaults.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Adam Ford <aford173@gmail.com>
> Cc: Fabio Estevam <festevam@denx.de>
> Cc: Marek Behún <marek.behun@nic.cz>
> Cc: Peng Fan <peng.fan@nxp.com>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Stefano Babic <sbabic@denx.de>
> Cc: Tim Harvey <tharvey@gateworks.com>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: Tommaso Merciai <tomm.merciai@gmail.com>
> Cc: Vladimir Oltean <vladimir.oltean@nxp.com>

Applied to u-boot/master, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 3/3] ARM: imx: imx8m: env: Switch to arch_env_get_location()
  2022-04-06  0:21 ` [PATCH 3/3] ARM: imx: imx8m: " Marek Vasut
@ 2022-04-21 15:43   ` Tom Rini
  0 siblings, 0 replies; 6+ messages in thread
From: Tom Rini @ 2022-04-21 15:43 UTC (permalink / raw)
  To: Marek Vasut
  Cc: u-boot, Adam Ford, Fabio Estevam, Marek Behún, Peng Fan,
	Simon Glass, Stefano Babic, Tim Harvey, Tommaso Merciai,
	Vladimir Oltean

[-- Attachment #1: Type: text/plain, Size: 771 bytes --]

On Wed, Apr 06, 2022 at 02:21:34AM +0200, Marek Vasut wrote:

> Implement arch_env_get_location() instead of env_get_location(), so that
> the env_get_location() can be implemented on board level and override the
> arch_env_get_location() architecture defaults.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Adam Ford <aford173@gmail.com>
> Cc: Fabio Estevam <festevam@denx.de>
> Cc: Marek Behún <marek.behun@nic.cz>
> Cc: Peng Fan <peng.fan@nxp.com>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Stefano Babic <sbabic@denx.de>
> Cc: Tim Harvey <tharvey@gateworks.com>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: Tommaso Merciai <tomm.merciai@gmail.com>
> Cc: Vladimir Oltean <vladimir.oltean@nxp.com>

Applied to u-boot/master, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-04-21 15:44 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-06  0:21 [PATCH 1/3] env: Implement lower priority arch_env_get_location() Marek Vasut
2022-04-06  0:21 ` [PATCH 2/3] armv8: layerscape: env: Switch to arch_env_get_location() Marek Vasut
2022-04-21 15:43   ` Tom Rini
2022-04-06  0:21 ` [PATCH 3/3] ARM: imx: imx8m: " Marek Vasut
2022-04-21 15:43   ` Tom Rini
2022-04-21 15:43 ` [PATCH 1/3] env: Implement lower priority arch_env_get_location() Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.