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>
Wed, 12 Oct 2022 05:48:07 +0000 (14:48 +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 f6f1b6b3f78a5186256bafb0a0d8bdbe6aff0ae0..2825fedb65a48f99773ec41b269553082f3f80ca 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
 CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x7ffff00
 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 91b0b842226b0b075c32b6d278c7b89595ec2fc6..d93ea8796eaa50e6bde44e87b719fbe8691f8072 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
 CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x7fffe40
 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 6368739bc64b01ad51f55d145bdebeda53855a0b..6d860f204856de7d4df25134f5a7315efc6d51d0 100644 (file)
@@ -11,7 +11,7 @@ CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
 CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x7fffee0
 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 67934853d6fd05ae614241b9807eaefe07e3d33a..de17b3c495055e9765996799669066f01f6d85c1 100644 (file)
@@ -11,7 +11,7 @@ CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
 CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x7fffe30
 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 */