samsung: tizen_rpi: check MBR partition layout from preboot 07/252107/2 accepted/tizen/unified/20210126.141625 submit/tizen/20210126.025856
authorMarek Szyprowski <m.szyprowski@samsung.com>
Fri, 22 Jan 2021 10:24:04 +0000 (11:24 +0100)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Mon, 25 Jan 2021 09:46:20 +0000 (10:46 +0100)
Verify if the MBR partition layout on SD card matches the one defined in
the bootloader.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Change-Id: I7c296a4f64e294a9dc510e0a248e83375bacf9cb

configs/rpi_3_32b_defconfig
configs/rpi_3_defconfig
configs/rpi_4_32b_defconfig
configs/rpi_4_defconfig
include/samsung/tizen_rpi.h

index e5782a5..c47074a 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_USE_PREBOOT=y
+CONFIG_PREBOOT="run mbr_check"
 CONFIG_MISC_INIT_R=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index aa4a2e1..3ce882d 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SD_BOOT=y
 CONFIG_USE_PREBOOT=y
+CONFIG_PREBOOT="run mbr_check"
 CONFIG_MISC_INIT_R=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 1e85ff2..de38a04 100644 (file)
@@ -7,7 +7,7 @@ CONFIG_ENV_SIZE=0x4000
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_USE_PREBOOT=y
-CONFIG_PREBOOT="pci enum; usb start;"
+CONFIG_PREBOOT="pci enum; usb start; run mbr_check"
 CONFIG_SYS_STDIO_DEREGISTER=y
 CONFIG_MISC_INIT_R=y
 # CONFIG_DISPLAY_CPUINFO is not set
index bec4474..48bf793 100644 (file)
@@ -7,7 +7,7 @@ CONFIG_ENV_SIZE=0x4000
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_USE_PREBOOT=y
-CONFIG_PREBOOT="pci enum; usb start;"
+CONFIG_PREBOOT="pci enum; usb start; run mbr_check"
 CONFIG_SYS_STDIO_DEREGISTER=y
 CONFIG_MISC_INIT_R=y
 # CONFIG_DISPLAY_CPUINFO is not set
index 70b3b2f..b14c548 100644 (file)
        "name=reserved2,size=125M,id=0x83;"                     \
        ""
 
+#define MBR_CHECK      \
+       "env default mbr_parts; "                                       \
+       "if mbr verify ${dfu_interface} ${dfu_device}; "                \
+       "then true; else "                                              \
+       "echo \"MBR partition layout does not match flashed bootloader!\"; " \
+       "echo \"Please format SD card with recent sd_fusing_rpi3.sh script or Ctrl-C to continue.\"; " \
+       "while sleep 2; do echo .\\\\\\\\c; done; echo; "               \
+       "fi"
+
 #ifdef CONFIG_TARGET_RPI_4_32B
 #define TIZEN_VC_MEM "vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 swiotlb=8192 "
 #else
        "dfu_interface=mmc\0"                   \
        "dfu_device=" __stringify(CONFIG_MMC_DEFAULT_DEV) "\0" \
        "mbr_parts=" PARTS_DEFAULT "\0"         \
+       "mbr_check=" MBR_CHECK "\0"             \
        ""
 
 #endif /* __CONFIG_TIZEN_RPI_H */