diff mbox series

distroboot: ubifs: Add support for specifying UBI header offset

Message ID 20220807190422.20157-1-pali@kernel.org
State Accepted
Commit 53a9f9ef879fbc9ae0e6bf5330d3817ebd726e5f
Delegated to: Tom Rini
Headers show
Series distroboot: ubifs: Add support for specifying UBI header offset | expand

Commit Message

Pali Rohár Aug. 7, 2022, 7:04 p.m. UTC
Some UBI partitions may use non-standard UBI header offset. For attaching
these UBI partitions it is required to pass second argument with offset to
"ubi part" command.

Therefore extend distroboot to allow specifying additional optional 6th
argument with UBI header offset. This offset is set in new distroboot
variable ${bootubioff} which may be used by distroboot script to e.g.
properly pass this value to linux kernel command line for proper mounting
of rootfs by kernel. This variable is set to empty string (cleared) when
UBI header offset is not specified into distroboot BOOT_TARGET_DEVICES
macro.

Usage of helper macro BOOTENV_DEV_UBIFS_BOOTUBIOFF in this change is there
as a type check. It ensures that in BOOT_TARGET_DEVICES macro was specified
UBIFS func with either 5 or 6 arguments. If not then cpp throws compile
error.

Signed-off-by: Pali Rohár <pali@kernel.org>
---
 include/config_distro_bootcmd.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

Comments

Tom Rini Aug. 8, 2022, 4:10 p.m. UTC | #1
On Sun, Aug 07, 2022 at 09:04:22PM +0200, Pali Rohár wrote:

> Some UBI partitions may use non-standard UBI header offset. For attaching
> these UBI partitions it is required to pass second argument with offset to
> "ubi part" command.
> 
> Therefore extend distroboot to allow specifying additional optional 6th
> argument with UBI header offset. This offset is set in new distroboot
> variable ${bootubioff} which may be used by distroboot script to e.g.
> properly pass this value to linux kernel command line for proper mounting
> of rootfs by kernel. This variable is set to empty string (cleared) when
> UBI header offset is not specified into distroboot BOOT_TARGET_DEVICES
> macro.
> 
> Usage of helper macro BOOTENV_DEV_UBIFS_BOOTUBIOFF in this change is there
> as a type check. It ensures that in BOOT_TARGET_DEVICES macro was specified
> UBIFS func with either 5 or 6 arguments. If not then cpp throws compile
> error.
> 
> Signed-off-by: Pali Rohár <pali@kernel.org>

Reviewed-by: Tom Rini <trini@konsulko.com>
Pali Rohár Aug. 25, 2022, 1:52 p.m. UTC | #2
On Monday 08 August 2022 12:10:27 Tom Rini wrote:
> On Sun, Aug 07, 2022 at 09:04:22PM +0200, Pali Rohár wrote:
> 
> > Some UBI partitions may use non-standard UBI header offset. For attaching
> > these UBI partitions it is required to pass second argument with offset to
> > "ubi part" command.
> > 
> > Therefore extend distroboot to allow specifying additional optional 6th
> > argument with UBI header offset. This offset is set in new distroboot
> > variable ${bootubioff} which may be used by distroboot script to e.g.
> > properly pass this value to linux kernel command line for proper mounting
> > of rootfs by kernel. This variable is set to empty string (cleared) when
> > UBI header offset is not specified into distroboot BOOT_TARGET_DEVICES
> > macro.
> > 
> > Usage of helper macro BOOTENV_DEV_UBIFS_BOOTUBIOFF in this change is there
> > as a type check. It ensures that in BOOT_TARGET_DEVICES macro was specified
> > UBIFS func with either 5 or 6 arguments. If not then cpp throws compile
> > error.
> > 
> > Signed-off-by: Pali Rohár <pali@kernel.org>
> 
> Reviewed-by: Tom Rini <trini@konsulko.com>
> 
> -- 
> Tom

Tom, who can take this patch?
Tom Rini Aug. 26, 2022, 3:28 p.m. UTC | #3
On Thu, Aug 25, 2022 at 03:52:20PM +0200, Pali Rohár wrote:
> On Monday 08 August 2022 12:10:27 Tom Rini wrote:
> > On Sun, Aug 07, 2022 at 09:04:22PM +0200, Pali Rohár wrote:
> > 
> > > Some UBI partitions may use non-standard UBI header offset. For attaching
> > > these UBI partitions it is required to pass second argument with offset to
> > > "ubi part" command.
> > > 
> > > Therefore extend distroboot to allow specifying additional optional 6th
> > > argument with UBI header offset. This offset is set in new distroboot
> > > variable ${bootubioff} which may be used by distroboot script to e.g.
> > > properly pass this value to linux kernel command line for proper mounting
> > > of rootfs by kernel. This variable is set to empty string (cleared) when
> > > UBI header offset is not specified into distroboot BOOT_TARGET_DEVICES
> > > macro.
> > > 
> > > Usage of helper macro BOOTENV_DEV_UBIFS_BOOTUBIOFF in this change is there
> > > as a type check. It ensures that in BOOT_TARGET_DEVICES macro was specified
> > > UBIFS func with either 5 or 6 arguments. If not then cpp throws compile
> > > error.
> > > 
> > > Signed-off-by: Pali Rohár <pali@kernel.org>
> > 
> > Reviewed-by: Tom Rini <trini@konsulko.com>
> > 
> > -- 
> > Tom
> 
> Tom, who can take this patch?

I'll take it, as part of putting together a number of small fixes for
this release.
Tom Rini Aug. 27, 2022, 12:06 p.m. UTC | #4
On Sun, Aug 07, 2022 at 09:04:22PM +0200, Pali Rohár wrote:

> Some UBI partitions may use non-standard UBI header offset. For attaching
> these UBI partitions it is required to pass second argument with offset to
> "ubi part" command.
> 
> Therefore extend distroboot to allow specifying additional optional 6th
> argument with UBI header offset. This offset is set in new distroboot
> variable ${bootubioff} which may be used by distroboot script to e.g.
> properly pass this value to linux kernel command line for proper mounting
> of rootfs by kernel. This variable is set to empty string (cleared) when
> UBI header offset is not specified into distroboot BOOT_TARGET_DEVICES
> macro.
> 
> Usage of helper macro BOOTENV_DEV_UBIFS_BOOTUBIOFF in this change is there
> as a type check. It ensures that in BOOT_TARGET_DEVICES macro was specified
> UBIFS func with either 5 or 6 arguments. If not then cpp throws compile
> error.
> 
> Signed-off-by: Pali Rohár <pali@kernel.org>
> Reviewed-by: Tom Rini <trini@konsulko.com>

Applied to u-boot/master, thanks!
diff mbox series

Patch

diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
index 4e0c23be5645..f28f6095da08 100644
--- a/include/config_distro_bootcmd.h
+++ b/include/config_distro_bootcmd.h
@@ -70,7 +70,7 @@ 
 #ifdef CONFIG_CMD_UBIFS
 #define BOOTENV_SHARED_UBIFS \
 	"ubifs_boot=" \
-		"if ubi part ${bootubipart} && " \
+		"if ubi part ${bootubipart} ${bootubioff} && " \
 			"ubifsmount ubi0:${bootubivol}; " \
 		"then " \
 			"devtype=ubi; " \
@@ -80,12 +80,14 @@ 
 			"run scan_dev_for_boot; " \
 			"ubifsumount; " \
 		"fi\0"
-#define BOOTENV_DEV_UBIFS(devtypeu, devtypel, instance, bootubipart, bootubivol) \
+#define BOOTENV_DEV_UBIFS_BOOTUBIOFF(off) #off /* type check, throw error when called with more args */
+#define BOOTENV_DEV_UBIFS(devtypeu, devtypel, instance, bootubipart, bootubivol, ...) \
 	"bootcmd_ubifs" #instance "=" \
 		"bootubipart=" #bootubipart "; " \
 		"bootubivol=" #bootubivol "; " \
+		"bootubioff=" BOOTENV_DEV_UBIFS_BOOTUBIOFF(__VA_ARGS__) "; " \
 		"run ubifs_boot\0"
-#define BOOTENV_DEV_NAME_UBIFS(devtypeu, devtypel, instance, bootubipart, bootubivol) \
+#define BOOTENV_DEV_NAME_UBIFS(devtypeu, devtypel, instance, ...) \
 	#devtypel #instance " "
 #else
 #define BOOTENV_SHARED_UBIFS