Message ID | 20190513091555.14037-1-igor.opaniuk@toradex.com |
---|---|
State | Superseded |
Delegated to: | Stefano Babic |
Headers | show |
Series | [U-Boot,1/5] colibri_imx7: use UUID for rootfs | expand |
On Mon, 2019-05-13 at 12:15 +0300, Igor Opaniuk wrote: > Replace usage of "/dev/mmcblk*p*" with a proper UUID of rootfs > partition. This fixes the issue, when MMC controllers are probed in > a different order in U-boot and Linux kernel. > > Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> > --- > include/configs/colibri_imx7.h | 47 ++++++++++++++++++++---------- > ---- > 1 file changed, 28 insertions(+), 19 deletions(-) > > diff --git a/include/configs/colibri_imx7.h > b/include/configs/colibri_imx7.h > index 5a4b9801cb..8bc75aba59 100644 > --- a/include/configs/colibri_imx7.h > +++ b/include/configs/colibri_imx7.h > @@ -51,14 +51,22 @@ > #define CONFIG_SERVERIP 192.168.10.1 > > #define EMMC_BOOTCMD \ > - "emmcargs=ip=off root=/dev/mmcblk0p2 ro rootfstype=ext4 > rootwait\0" \ > - "emmcboot=run setup; " \ > + "set_emmcargs=setenv emmcargs ip=off root=PARTUUID=${uuid} ro " > \ > + "rootfstype=ext4 rootwait\0" \ > + "emmcboot=run setup; run emmcfinduuid; run set_emmcargs; " \ > "setenv bootargs ${defargs} ${emmcargs} ${setupargs} " > \ > "${vidargs}; echo Booting from internal eMMC chip...; " > \ > "run m4boot && " \ > - "load mmc 0:1 ${fdt_addr_r} ${soc}-colibri-emmc- > ${fdt_board}.dtb && " \ > - "load mmc 0:1 ${kernel_addr_r} ${boot_file} && " \ > - "run fdt_fixup && bootz ${kernel_addr_r} - > ${fdt_addr_r}\0" > + "load mmc ${emmcdev}:${emmcbootpart} ${fdt_addr_r} " \ > + "${soc}-colibri-emmc-${fdt_board}.dtb && " \ > + "load mmc ${emmcdev}:${emmcbootpart} ${kernel_addr_r} " > \ > + "${boot_file} && run fdt_fixup && " \ > + "bootz ${kernel_addr_r} - ${fdt_addr_r}\0" \ > + "emmcbootpart=1\0" \ > + "emmcdev=0\0" \ > + "emmcfinduuid=part uuid mmc ${emmcdev}:${emmcrootpart} uuid\0" > \ > + "emmcrootpart=2\0" > + > > #define MEM_LAYOUT_ENV_SETTINGS \ > "bootm_size=0x10000000\0" \ > @@ -69,24 +77,25 @@ > "ramdisk_addr_r=0x82100000\0" > > #if defined(CONFIG_TARGET_COLIBRI_IMX7_NAND) > -#define SD_BOOTCMD \ > - "sdargs=root=/dev/mmcblk0p2 ro rootwait\0" \ > - "sdboot=run setup; setenv bootargs ${defargs} ${sdargs} " \ > - "${setupargs} ${vidargs}; echo Booting from MMC/SD card...; " \ > - "run m4boot && " \ > - "load mmc 0:1 ${kernel_addr_r} ${kernel_file} && " \ > - "load mmc 0:1 ${fdt_addr_r} ${soc}-colibri-${fdt_board}.dtb && > " \ > - "run fdt_fixup && bootz ${kernel_addr_r} - ${fdt_addr_r}\0" > +#define SD_BOOTDEV 0 > #elif defined(CONFIG_TARGET_COLIBRI_IMX7_EMMC) > +#define SD_BOOTDEV 1 > +#endif > + > #define SD_BOOTCMD \ > - "sdargs=root=/dev/mmcblk1p2 ro rootwait\0" \ > - "sdboot=run setup; setenv bootargs ${defargs} ${sdargs} " \ > + "set_sdargs=setenv sdargs root=PARTUUID=${uuid} ro rootwait\0" > \ > + "sdboot=run setup; run sdfinduuid; run set_sdargs; " \ > + "setenv bootargs ${defargs} ${sdargs} " \ > "${setupargs} ${vidargs}; echo Booting from MMC/SD card...; " \ > "run m4boot && " \ > - "load mmc 1:1 ${kernel_addr_r} ${kernel_file} && " \ > - "load mmc 1:1 ${fdt_addr_r} ${soc}-colibri-${fdt_board}.dtb && > " \ > - "run fdt_fixup && bootz ${kernel_addr_r} - ${fdt_addr_r}\0" > -#endif > + "load mmc ${sddev}:${sdbootpart} ${kernel_addr_r} > ${kernel_file} && " \ > + "load mmc ${sddev}:${sdbootpart} ${fdt_addr_r} " \ > + "${soc}-colibri-${fdt_board}.dtb && " \ > + "run fdt_fixup && bootz ${kernel_addr_r} - ${fdt_addr_r}\0" \ > + "sdbootpart=1\0" \ > + "sddev=" __stringify(SD_BOOTDEV) "\0" \ > + "sdfinduuid=part uuid mmc ${sddev}:${sdrootpart} uuid\0" \ > + "sdrootpart=2\0" > > > #define NFS_BOOTCMD \
diff --git a/include/configs/colibri_imx7.h b/include/configs/colibri_imx7.h index 5a4b9801cb..8bc75aba59 100644 --- a/include/configs/colibri_imx7.h +++ b/include/configs/colibri_imx7.h @@ -51,14 +51,22 @@ #define CONFIG_SERVERIP 192.168.10.1 #define EMMC_BOOTCMD \ - "emmcargs=ip=off root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait\0" \ - "emmcboot=run setup; " \ + "set_emmcargs=setenv emmcargs ip=off root=PARTUUID=${uuid} ro " \ + "rootfstype=ext4 rootwait\0" \ + "emmcboot=run setup; run emmcfinduuid; run set_emmcargs; " \ "setenv bootargs ${defargs} ${emmcargs} ${setupargs} " \ "${vidargs}; echo Booting from internal eMMC chip...; " \ "run m4boot && " \ - "load mmc 0:1 ${fdt_addr_r} ${soc}-colibri-emmc-${fdt_board}.dtb && " \ - "load mmc 0:1 ${kernel_addr_r} ${boot_file} && " \ - "run fdt_fixup && bootz ${kernel_addr_r} - ${fdt_addr_r}\0" + "load mmc ${emmcdev}:${emmcbootpart} ${fdt_addr_r} " \ + "${soc}-colibri-emmc-${fdt_board}.dtb && " \ + "load mmc ${emmcdev}:${emmcbootpart} ${kernel_addr_r} " \ + "${boot_file} && run fdt_fixup && " \ + "bootz ${kernel_addr_r} - ${fdt_addr_r}\0" \ + "emmcbootpart=1\0" \ + "emmcdev=0\0" \ + "emmcfinduuid=part uuid mmc ${emmcdev}:${emmcrootpart} uuid\0" \ + "emmcrootpart=2\0" + #define MEM_LAYOUT_ENV_SETTINGS \ "bootm_size=0x10000000\0" \ @@ -69,24 +77,25 @@ "ramdisk_addr_r=0x82100000\0" #if defined(CONFIG_TARGET_COLIBRI_IMX7_NAND) -#define SD_BOOTCMD \ - "sdargs=root=/dev/mmcblk0p2 ro rootwait\0" \ - "sdboot=run setup; setenv bootargs ${defargs} ${sdargs} " \ - "${setupargs} ${vidargs}; echo Booting from MMC/SD card...; " \ - "run m4boot && " \ - "load mmc 0:1 ${kernel_addr_r} ${kernel_file} && " \ - "load mmc 0:1 ${fdt_addr_r} ${soc}-colibri-${fdt_board}.dtb && " \ - "run fdt_fixup && bootz ${kernel_addr_r} - ${fdt_addr_r}\0" +#define SD_BOOTDEV 0 #elif defined(CONFIG_TARGET_COLIBRI_IMX7_EMMC) +#define SD_BOOTDEV 1 +#endif + #define SD_BOOTCMD \ - "sdargs=root=/dev/mmcblk1p2 ro rootwait\0" \ - "sdboot=run setup; setenv bootargs ${defargs} ${sdargs} " \ + "set_sdargs=setenv sdargs root=PARTUUID=${uuid} ro rootwait\0" \ + "sdboot=run setup; run sdfinduuid; run set_sdargs; " \ + "setenv bootargs ${defargs} ${sdargs} " \ "${setupargs} ${vidargs}; echo Booting from MMC/SD card...; " \ "run m4boot && " \ - "load mmc 1:1 ${kernel_addr_r} ${kernel_file} && " \ - "load mmc 1:1 ${fdt_addr_r} ${soc}-colibri-${fdt_board}.dtb && " \ - "run fdt_fixup && bootz ${kernel_addr_r} - ${fdt_addr_r}\0" -#endif + "load mmc ${sddev}:${sdbootpart} ${kernel_addr_r} ${kernel_file} && " \ + "load mmc ${sddev}:${sdbootpart} ${fdt_addr_r} " \ + "${soc}-colibri-${fdt_board}.dtb && " \ + "run fdt_fixup && bootz ${kernel_addr_r} - ${fdt_addr_r}\0" \ + "sdbootpart=1\0" \ + "sddev=" __stringify(SD_BOOTDEV) "\0" \ + "sdfinduuid=part uuid mmc ${sddev}:${sdrootpart} uuid\0" \ + "sdrootpart=2\0" #define NFS_BOOTCMD \
Replace usage of "/dev/mmcblk*p*" with a proper UUID of rootfs partition. This fixes the issue, when MMC controllers are probed in a different order in U-boot and Linux kernel. Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com> --- include/configs/colibri_imx7.h | 47 ++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 19 deletions(-)