samsung: tizen_rpi: check MBR partition layout from preboot
authorMarek Szyprowski <m.szyprowski@samsung.com>
Fri, 22 Jan 2021 10:24:04 +0000 (11:24 +0100)
committerJaehoon Chung <jh80.chung@samsung.com>
Tue, 17 Oct 2023 04:19:30 +0000 (13:19 +0900)
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 4b7195b0cc8260d144038732f782a06e814919cb..b1445b79b1e03633aeeaff109d06632d1b3e4955 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_SYS_LOAD_ADDR=0x1000000
 CONFIG_BOOTSTD_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_USE_PREBOOT=y
+CONFIG_PREBOOT="run mbr_check"
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_MISC_INIT_R=y
index 82bf2589bf54fa060bf767bdf25b26ad266955fe..9525a1cff023e4d49b399958684540e63a032cd5 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_SYS_LOAD_ADDR=0x1000000
 CONFIG_BOOTSTD_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_USE_PREBOOT=y
+CONFIG_PREBOOT="run mbr_check"
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_MISC_INIT_R=y
index af3e87bf3f271bc330c406b346805d194a77feff..2a45f37028d0c6f031d8c8548063a020657c6cf6 100644 (file)
@@ -13,7 +13,7 @@ CONFIG_PCI=y
 CONFIG_BOOTSTD_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_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 9bce141315f14c4bc2bd3420f206f8c367808239..97b146ce90cc19c01ff33b349a328a3e765e1dd4 100644 (file)
@@ -13,7 +13,7 @@ CONFIG_PCI=y
 CONFIG_BOOTSTD_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_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 06717b5037c48c485455c5f197e561749d12ed1c..08f22edfaf13a4a602391cc3c8b29dbada034c1d 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 */