]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
distroboot: Fix ubifs
authorPali Rohár <pali@kernel.org>
Tue, 31 May 2022 08:32:36 +0000 (10:32 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 8 Jul 2022 13:05:47 +0000 (09:05 -0400)
Fix multiple issues in ubifs distroboot code:

U-Boot supports attaching only one MTD device as UBI at the time. So
always call 'ubifsmount ubi0:${bootubivol}' for mounting UBI volume
${bootubivol}. Usage of 'ubi${devnum}' is incorrect as 'ubi part'
command attach MTD device always as UBI device ubi0.

Set distroboot ${bootfstype} variable to ubifs in ubifs_boot command.
Distroboot scripts require ${bootfstype} variable to be properly set and it
is already set for all other boot types.

Set distroboot ${distro_bootpart} variable to ${bootubivol} value. UBI
device does not have partitions, but has volumes. Distroboot scripts
require something to be set in ${distro_bootpart} variable, so set it to
the UBI volume which is currently mounted by ubifs.

Set distroboot ${devnum} variable to fixed string "ubi0". ubifs code
differs from the other partition code that it requires "ubi" prefix before
number.

Explicitly unmount ubifs volume after loading all data from it. This allows
to detach UBI device from MTD device.

Move definition of MTD device with UBI and UBI volume with ubifs filesystem
from global env variables ${bootubipart} and ${bootubivol} into the
distroboot "func" macro, defined in board include config files. UBIFS
distroboot macros then set ${bootubipart} and ${bootubivol} local variables
for compatibility with existing distroboot scripts.

This last change allows to define more UBIFS target devices and make it
clear what is boot MTD/UBI device.

All board include config files are adjusted to use this new scheme of
specifying boot MTD/UBI device.

Signed-off-by: Pali Rohár <pali@kernel.org>
Acked-by: Frieder Schrempf <frieder.schrempf@kontron.de>
12 files changed:
include/config_distro_bootcmd.h
include/configs/am335x_guardian.h
include/configs/colibri-imx6ull.h
include/configs/colibri_imx7.h
include/configs/kontron-sl-mx6ul.h
include/configs/mys_6ulx.h
include/configs/npi_imx6ull.h
include/configs/omap3_beagle.h
include/configs/omap3_evm.h
include/configs/pcl063.h
include/configs/stm32mp15_common.h
include/configs/uniphier.h

index c55023889cabc39e0d3a9336a5a60948c990a929..c6e9c497413de9e3bd28a6eb3d1053bce810b23d 100644 (file)
 #ifdef CONFIG_CMD_UBIFS
 #define BOOTENV_SHARED_UBIFS \
        "ubifs_boot=" \
-               "env exists bootubipart || " \
-                       "env set bootubipart UBI; " \
-               "env exists bootubivol || " \
-                       "env set bootubivol boot; " \
                "if ubi part ${bootubipart} && " \
-                       "ubifsmount ubi${devnum}:${bootubivol}; " \
+                       "ubifsmount ubi0:${bootubivol}; " \
                "then " \
                        "devtype=ubi; " \
+                       "devnum=ubi0; " \
+                       "bootfstype=ubifs; " \
+                       "distro_bootpart=${bootubivol}; " \
                        "run scan_dev_for_boot; " \
+                       "ubifsumount; " \
                "fi\0"
-#define BOOTENV_DEV_UBIFS      BOOTENV_DEV_BLKDEV
-#define BOOTENV_DEV_NAME_UBIFS BOOTENV_DEV_NAME_BLKDEV
+#define BOOTENV_DEV_UBIFS(devtypeu, devtypel, instance, bootubipart, bootubivol) \
+       "bootcmd_ubifs" #instance "=" \
+               "bootubipart=" #bootubipart "; " \
+               "bootubivol=" #bootubivol "; " \
+               "run ubifs_boot\0"
+#define BOOTENV_DEV_NAME_UBIFS(devtypeu, devtypel, instance, bootubipart, bootubivol) \
+       #devtypel #instance " "
 #else
 #define BOOTENV_SHARED_UBIFS
 #define BOOTENV_DEV_UBIFS \
        BOOT_TARGET_DEVICES_references_PXE_without_CONFIG_CMD_DHCP_or_PXE
 #endif
 
-#define BOOTENV_DEV_NAME(devtypeu, devtypel, instance) \
-       BOOTENV_DEV_NAME_##devtypeu(devtypeu, devtypel, instance)
+#define BOOTENV_DEV_NAME(devtypeu, devtypel, instance, ...) \
+       BOOTENV_DEV_NAME_##devtypeu(devtypeu, devtypel, instance, ## __VA_ARGS__)
 #define BOOTENV_BOOT_TARGETS \
        "boot_targets=" BOOT_TARGET_DEVICES(BOOTENV_DEV_NAME) "\0"
 
-#define BOOTENV_DEV(devtypeu, devtypel, instance) \
-       BOOTENV_DEV_##devtypeu(devtypeu, devtypel, instance)
+#define BOOTENV_DEV(devtypeu, devtypel, instance, ...) \
+       BOOTENV_DEV_##devtypeu(devtypeu, devtypel, instance, ## __VA_ARGS__)
 #define BOOTENV \
        BOOTENV_SHARED_HOST \
        BOOTENV_SHARED_MMC \
index 7a9928fba74942f18ec808bc73fac3af1eb601f5..7fa1847c1fc239364ea9a75836e320e348eb56ef 100644 (file)
@@ -27,7 +27,7 @@
        "ramdisk_addr_r=0x88080000\0" \
 
 #define BOOT_TARGET_DEVICES(func) \
-       func(UBIFS, ubifs, 0)
+       func(UBIFS, ubifs, 0, UBI, rootfs)
 
 #define AM335XX_BOARD_FDTFILE "fdtfile=" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0"
 
@@ -51,7 +51,6 @@
        BOOTENV \
        GUARDIAN_DEFAULT_PROD_ENV \
        "backlight_brightness=50\0" \
-       "bootubivol=rootfs\0" \
        "distro_bootcmd=" \
                "setenv rootflags \"bulk_read,chk_data_crc\"; " \
                "setenv ethact usb_ether; " \
index 528c7c98d235d9145baf5a09bf0ea98504540520..04cde9530adba8393954304956b9b43801b167c8 100644 (file)
@@ -90,7 +90,6 @@
        UBI_BOOTCMD \
        UBOOT_UPDATE \
        "boot_script_dhcp=boot.scr\0" \
-       "bootubipart=ubi\0" \
        "console=ttymxc0\0" \
        "defargs=user_debug=30\0" \
        "fdt_board=eval-v3\0" \
index 8a6536eec8916d1274a15545795abb742d33b308..9543e0233ee131d50060b745704282c8bede3132 100644 (file)
        UBOOT_UPDATE \
        "boot_file=zImage\0" \
        "boot_script_dhcp=boot.scr\0" \
-       "bootubipart=ubi\0" \
        "console=ttymxc0\0" \
        "defargs=\0" \
        "fdt_board=eval-v3\0" \
index 512cef09f8025a72888f1eb695f947bd29bc5aa1..7aac5d3f5a184eb846a670e68c4cb76d0a2574f1 100644 (file)
@@ -37,7 +37,7 @@
 #define BOOT_TARGET_DEVICES(func) \
        func(MMC, mmc, 1) \
        func(MMC, mmc, 0) \
-       func(UBIFS, ubifs, 0) \
+       func(UBIFS, ubifs, 0, UBI, boot) \
        func(USB, usb, 0) \
        func(PXE, pxe, na) \
        func(DHCP, dhcp, na)
index b9689238195fdd824a9ad9c37bfc5c3046e30983..4162ee8caa21ff74ea9b260520a0d233aa5f2169 100644 (file)
@@ -50,7 +50,7 @@
 
 #define BOOT_TARGET_DEVICES(func) \
        func(MMC, mmc, 0) \
-       func(UBIFS, ubifs, 0) \
+       func(UBIFS, ubifs, 0, UBI, boot) \
        func(PXE, pxe, na) \
        func(DHCP, dhcp, na)
 
index 6cdb1afcd9a97b924c5c8fc9befaea1e9809d4bb..217427a302e79a4cf5dfb3c8e7b9d57f05001643 100644 (file)
@@ -58,7 +58,7 @@
 
 #define BOOT_TARGET_DEVICES(func) \
        func(MMC, mmc, 0) \
-       func(UBIFS, ubifs, 0) \
+       func(UBIFS, ubifs, 0, UBI, boot) \
        func(PXE, pxe, na) \
        func(DHCP, dhcp, na)
 
index ab742798b92b0069a4a036ffd5154d8ad6064503..2cd42e5a1dc49bc231d1707763580c657cb69d77 100644 (file)
@@ -62,7 +62,7 @@
 #define BOOT_TARGET_DEVICES(func) \
        func(MMC, mmc, 0) \
        func(LEGACY_MMC, legacy_mmc, 0) \
-       func(UBIFS, ubifs, 0) \
+       func(UBIFS, ubifs, 0, rootfs, rootfs) \
        func(NAND, nand, 0)
 
 #else /* !CONFIG_MTD_RAW_NAND */
@@ -84,8 +84,6 @@
        "bootenv=uEnv.txt\0" \
        "bootfile=zImage\0" \
        "bootpart=0:2\0" \
-       "bootubivol=rootfs\0" \
-       "bootubipart=rootfs\0" \
        "usbtty=cdc_acm\0" \
        "mpurate=auto\0" \
        "buddy=none\0" \
index 1b94f8efa2246ab9d1cc0c709906e7f728424bf2..2683d4c7ea45a659e74af9b16bdbd9a626aa07e6 100644 (file)
@@ -56,7 +56,7 @@
 #define BOOT_TARGET_DEVICES(func) \
        func(MMC, mmc, 0) \
        func(LEGACY_MMC, legacy_mmc, 0) \
-       func(UBIFS, ubifs, 0) \
+       func(UBIFS, ubifs, 0, rootfs, rootfs) \
        func(NAND, nand, 0)
 
 #else /* !CONFIG_MTD_RAW_NAND */
@@ -82,8 +82,6 @@
        "bootenv=uEnv.txt\0" \
        "bootfile=zImage\0" \
        "bootpart=0:2\0" \
-       "bootubivol=rootfs\0" \
-       "bootubipart=rootfs\0" \
        "optargs=\0" \
        "nandroot=ubi0:rootfs ubi.mtd=rootfs rw noinitrd\0" \
        "nandrootfstype=ubifs rootwait\0" \
index 6683f21d15d28f21d7996ec400b5a3360818d560..6e593da936cddf98e12f87dd0f18d476ce0c6531 100644 (file)
@@ -62,7 +62,7 @@
 
 #define BOOT_TARGET_DEVICES(func) \
        func(MMC, mmc, 0) \
-       func(UBIFS, ubifs, 0) \
+       func(UBIFS, ubifs, 0, UBI, boot) \
        func(PXE, pxe, na) \
        func(DHCP, dhcp, na)
 
index 56fb4d38e45a93ceef40c2afc53b3c126353452f..c5412ffeb3104b0d305ccb7ca43873043104490c 100644 (file)
@@ -57,7 +57,7 @@
 #endif
 
 #ifdef CONFIG_CMD_UBIFS
-#define BOOT_TARGET_UBIFS(func)        func(UBIFS, ubifs, 0)
+#define BOOT_TARGET_UBIFS(func)        func(UBIFS, ubifs, 0, UBI, boot)
 #else
 #define BOOT_TARGET_UBIFS(func)
 #endif
index 15d41fba95cc86882d7ef70811eeefe0b2187d73..15ae0844c1a7ab86d5a2864da01bc2af8ddcf779 100644 (file)
@@ -19,7 +19,7 @@
 #endif
 
 #ifdef CONFIG_CMD_UBIFS
-#define BOOT_TARGET_DEVICE_UBIFS(func) func(UBIFS, ubifs, 0)
+#define BOOT_TARGET_DEVICE_UBIFS(func) func(UBIFS, ubifs, 0, UBI, boot)
 #else
 #define BOOT_TARGET_DEVICE_UBIFS(func)
 #endif