On an A/B-Slot image with B slot booted, when rebooting to RCM recovery (sudo reboot forced-recovery
) and then attempting to flash, the MB1 crashes while trying to load the MB2 Applet. While I am currently using Jetpack 5 via yocto/meta-tegra, I was also able to reproduce the issue with Jetpack 6/Jetson Linux R36.4 and the sample rootfs all as directly provided by nvidia.
Steps with which I can reproduce the issue:
- Flash Jetson Orin Nano Devkit with A/B slots enabled with the sample rootfs of Jetson Linux R36.4
- Boot device and do initial configuration
sudo nvbootctrl set-active-boot-slot 1
, reboot- Do initial configuration again
sudo nvbootctrl dump-slots-info
:
Current version: 36.4.0
Capsule update status: 0
Current bootloader slot: B
Active bootloader slot: B
num_slots: 2
slot: 0, status: normal
slot: 1, status: normal
reboot forced-recovery
- Try to flash from PC:
sudo ./flash.sh jetson-orin-nano-devkit mmcblk0p1
Flash Log
###############################################################################
# L4T BSP Information:
# R36 , REVISION: 4.0
# User release: 0.0
./flash.sh: line 1989: /home/pkauls/tegra/Linux_for_Tegra/rootfs/etc/user_release_version: No such file or directory
###############################################################################
ECID is 0x80012344705DD3570800000001028140
# Target Board Information:
# Name: jetson-orin-nano-devkit, Board Family: generic, SoC: Tegra 234,
# OpMode: production, Boot Authentication: NS,
# Disk encryption: disabled ,
###############################################################################
copying device_config(/home/pkauls/tegra/Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-device-p3767-0000.dts)... done.
copying misc_config(/home/pkauls/tegra/Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-misc-p3767-0000.dts)... done.
copying emc_fuse_dev_params(/home/pkauls/tegra/Linux_for_Tegra/bootloader/generic/BCT/tegra234-br-bct-diag-boot.dts)... done.
Existing emcfuse(/home/pkauls/tegra/Linux_for_Tegra/bootloader/fuse_t234.xml) reused.
./tegraflash.py --chip "0x23" --applet "/home/pkauls/tegra/Linux_for_Tegra/bootloader/mb1_t234_prod.bin" --skipuid --cfg readinfo_t234_min_prod.xml --dev_params tegra234-br-bct-diag-boot.dts --device_config tegra234-mb1-bct-device-p3767-0000.dts --misc_config tegra234-mb1-bct-misc-p3767-0000.dts --bins "mb2_applet applet_t234.bin" --cmd "readfuses fuse_t234.bin fuse_t234.xml; dump eeprom cvm cvm.bin; dump try_custinfo custinfo_out.bin; reboot recovery"
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
[ 0.1803 ] Reading fuses
[ 0.1825 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[ 0.1843 ] File rcm_state open failed
[ 0.1843 ] ERROR: failed to read rcm_state
[ 0.1843 ]
[ 0.1856 ] tegrasign_v3.py --key None --getmode mode.txt
[ 0.1857 ] Assuming zero filled SBK key
[ 0.1846 ] Pre-processing config: tegra234-mb1-bct-device-p3767-0000.dts
[ 0.2448 ] Pre-processing config: tegra234-mb1-bct-misc-p3767-0000.dts
[ 0.2550 ] Parsing partition layout
[ 0.2563 ] tegraparser_v2 --pt readinfo_t234_min_prod.xml.tmp
[ 0.2591 ] Kernel DTB used: None
[ 0.2591 ] WARNING: dce base dtb is not provided
[ 0.2591 ] Parsing partition layout
[ 0.2596 ] tegraparser_v2 --pt readinfo_t234_min_prod.xml.tmp
[ 0.2609 ] Creating list of images to be signed
[ 0.2620 ] tegrahost_v2 --chip 0x23 0 --partitionlayout readinfo_t234_min_prod.xml.bin --list images_list.xml zerosbk
[ 0.2632 ] MB1: Nvheader already present is mb1_t234_prod_aligned.bin
[ 0.2654 ] Header already present for mb1_t234_prod_aligned_sigheader.bin
[ 0.2659 ] MB1: Nvheader already present is mb1_t234_prod_aligned.bin
[ 0.2701 ] Header already present for mb1_t234_prod_aligned_sigheader.bin
[ 0.2708 ] MB1: Nvheader already present is psc_bl1_t234_prod_aligned.bin
[ 0.2745 ] Header already present for psc_bl1_t234_prod_aligned_sigheader.bin
[ 0.2747 ] adding BCH for mb2_t234_aligned.bin
[ 0.2768 ] MB1: Nvheader already present is psc_bl1_t234_prod_aligned.bin
[ 0.2831 ] Header already present for psc_bl1_t234_prod_aligned_sigheader.bin
[ 0.2834 ] adding BCH for mb2_t234_aligned.bin
[ 0.2918 ] Filling MB1 storage info
[ 0.2919 ] Parsing dev params for multi chains
[ 0.2972 ] Generating br-bct
[ 0.2992 ] Updating dev and MSS params in BR BCT
[ 0.2993 ] tegrabct_v2 --dev_param tegra234-br-bct-diag-boot_cpp.dtb --brbct br_bct.cfg --chip 0x23 0
[ 0.3044 ] Updating bl info
[ 0.3055 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x23 0 --updateblinfo readinfo_t234_min_prod.xml.bin
[ 0.3062 ] WARNING: boot chain is not completed. set to 0
[ 0.3070 ] Generating signatures
[ 0.3083 ] tegrasign_v3.py --key None --list images_list.xml --pubkeyhash pub_key.key --sha sha512
[ 0.3084 ] Assuming zero filled SBK key
[ 0.3288 ] Warning: pub_key.key is not found
[ 0.3276 ] Parsing dev params for multi chains
[ 0.3276 ] Generating br-bct
[ 0.3287 ] Updating dev and MSS params in BR BCT
[ 0.3287 ] tegrabct_v2 --dev_param tegra234-br-bct-diag-boot_cpp.dtb --brbct br_bct.cfg --chip 0x23 0
[ 0.3295 ] Updating bl info
[ 0.3309 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x23 0 --updateblinfo readinfo_t234_min_prod.xml.bin --updatesig images_list_signed.xml
[ 0.3317 ] WARNING: boot chain is not completed. set to 0
[ 0.3334 ] Generating SHA2 Hash
[ 0.3364 ] Sha saved in br_bct_BR.sha
[ 0.3352 ] Get Signed section of bct
[ 0.3357 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x23 0 --listbct bct_list.xml
[ 0.3384 ] Signing BCT
[ 0.3397 ] tegrasign_v3.py --key None --list bct_list.xml --pubkeyhash pub_key.key --sha sha512
[ 0.3398 ] Assuming zero filled SBK key
[ 0.3435 ] Sha saved in br_bct_BR.sha
[ 0.3436 ] Warning: pub_key.key is not found
[ 0.3424 ] Updating BCT with signature
[ 0.3433 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x23 0 --updatesig bct_list_signed.xml
[ 0.3456 ] Offset :4608 Len :3584
[ 0.3463 ] Generating SHA2 Hash
[ 0.3477 ] tegrasign_v3.py --key None --list bct_list.xml --sha sha512
[ 0.3478 ] Assuming zero filled SBK key
[ 0.3478 ] Assuming zero filled SBK key
[ 0.3508 ] Sha saved in br_bct_BR.sha
[ 0.3497 ] Updating BCT with SHA2 Hash
[ 0.3507 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x23 0 --updatesha bct_list_signed.xml
[ 0.3514 ] Offset :4608 Len :3584
[ 0.3517 ] Offset :68 Len :8124
[ 0.3524 ] Generating coldboot mb1-bct
[ 0.3533 ] tegrabct_v2 --chip 0x23 0 --mb1bct mb1_cold_boot_bct.cfg --misc tegra234-mb1-bct-misc-p3767-0000_cpp.dtb --device tegra234-mb1-bct-device-p3767-0000_cpp.dtb
[ 0.3540 ] MB1-BCT version: 0.13
[ 0.3560 ] Parsing config file :tegra234-mb1-bct-device-p3767-0000_cpp.dtb
[ 0.3560 ] Added Platform Config 9 data with size :- 100
[ 0.3560 ]
[ 0.3560 ] Updating mb1-bct with firmware information
[ 0.3566 ] tegrabct_v2 --chip 0x23 0 --mb1bct mb1_cold_boot_bct_MB1.bct --updatefwinfo readinfo_t234_min_prod.xml.bin
[ 0.3590 ] tegrahost_v2 --chip 0x23 0 --align mb1_cold_boot_bct_MB1_aligned.bct
[ 0.3596 ] Generating SHA2 Hash for mb1bct
[ 0.3620 ] Sha saved in mb1_cold_boot_bct_MB1_aligned.sha
[ 0.3632 ] Sha saved in mb1_cold_boot_bct_MB1.sha
[ 0.3629 ] tegrahost_v2 --chip 0x23 0 --magicid MBCT --appendsigheader mb1_cold_boot_bct_MB1_aligned.bct zerosbk
[ 0.3640 ] adding BCH for mb1_cold_boot_bct_MB1_aligned.bct
[ 0.3657 ] tegrasign_v3.py --key None --list mb1_cold_boot_bct_MB1_aligned_sigheader.bct_list.xml --pubkeyhash pub_key.key --sha sha512
[ 0.3658 ] Assuming zero filled SBK key
[ 0.3679 ] Warning: pub_key.key is not found
[ 0.3673 ] tegrahost_v2 --chip 0x23 0 --updatesigheader mb1_cold_boot_bct_MB1_aligned_sigheader.bct.encrypt mb1_cold_boot_bct_MB1_aligned_sigheader.bct.hash zerosbk
[ 0.3683 ] Generating recovery mb1-bct
[ 0.3688 ] tegrabct_v2 --chip 0x23 0 --mb1bct mb1_bct.cfg --misc tegra234-mb1-bct-misc-p3767-0000_cpp.dtb --device tegra234-mb1-bct-device-p3767-0000_cpp.dtb
[ 0.3695 ] MB1-BCT version: 0.13
[ 0.3713 ] Parsing config file :tegra234-mb1-bct-device-p3767-0000_cpp.dtb
[ 0.3713 ] Added Platform Config 9 data with size :- 100
[ 0.3713 ]
[ 0.3713 ] Updating mb1-bct with firmware information
[ 0.3717 ] tegrabct_v2 --chip 0x23 0 --mb1bct mb1_bct_MB1.bct --recov --updatefwinfo readinfo_t234_min_prod.xml.bin
[ 0.3738 ] tegrahost_v2 --chip 0x23 0 --align mb1_bct_MB1_aligned.bct
[ 0.3750 ] Generating SHA2 Hash for mb1bct
[ 0.3773 ] Sha saved in mb1_bct_MB1_aligned.sha
[ 0.3793 ] Sha saved in mb1_bct_MB1.sha
[ 0.3803 ] tegrahost_v2 --chip 0x23 0 --magicid MBCT --appendsigheader mb1_bct_MB1_aligned.bct zerosbk
[ 0.3820 ] adding BCH for mb1_bct_MB1_aligned.bct
[ 0.3845 ] tegrasign_v3.py --key None --list mb1_bct_MB1_aligned_sigheader.bct_list.xml --pubkeyhash pub_key.key --sha sha512
[ 0.3846 ] Assuming zero filled SBK key
[ 0.3860 ] Warning: pub_key.key is not found
[ 0.3853 ] tegrahost_v2 --chip 0x23 0 --updatesigheader mb1_bct_MB1_aligned_sigheader.bct.encrypt mb1_bct_MB1_aligned_sigheader.bct.hash zerosbk
[ 0.3864 ] Info: Skip generating mem_bct because sdram_config is not defined
[ 0.3864 ] Info: Skip generating mem_bct because sdram_config is not defined
[ 0.3864 ] Copying signatures
[ 0.3873 ] tegrahost_v2 --chip 0x23 0 --partitionlayout readinfo_t234_min_prod.xml.bin --updatesig images_list_signed.xml
[ 0.3953 ] mb1_t234_prod_aligned_sigheader.bin.encrypt filename is from images_list
[ 0.3954 ] psc_bl1_t234_prod_aligned_sigheader.bin.encrypt filename is from images_list
[ 0.3954 ] Boot Rom communication
[ 0.3960 ] tegrarcm_v2 --new_session --chip 0x23 0 --uid --download bct_br br_bct_BR.bct --download mb1 mb1_t234_prod_aligned_sigheader.bin.encrypt --download psc_bl1 psc_bl1_t234_prod_aligned_sigheader.bin.encrypt --download bct_mb1 mb1_bct_MB1_sigheader.bct.encrypt
[ 0.3968 ] BR_CID: 0x80012344705DD3570800000001028140
[ 0.3990 ] Sending bct_br
[ 0.3991 ] Sending mb1
[ 0.4003 ] Sending psc_bl1
[ 0.4282 ] Sending bct_mb1
[ 0.4424 ] Boot Rom communication completed
[ 0.4457 ] tegrahost_v2 --chip 0x23 0 --align applet_t234_aligned.bin
[ 0.4472 ] tegrahost_v2 --chip 0x23 0 --magicid MB2A --appendsigheader applet_t234_aligned.bin zerosbk
[ 0.4475 ] adding BCH for applet_t234_aligned.bin
[ 0.4525 ] tegrasign_v3.py --key None --list applet_t234_aligned_sigheader.bin_list.xml --pubkeyhash pub_key.key --sha sha512
[ 0.4526 ] Assuming zero filled SBK key
[ 0.4548 ] Warning: pub_key.key is not found
[ 0.4542 ] tegrahost_v2 --chip 0x23 0 --updatesigheader applet_t234_aligned_sigheader.bin.encrypt applet_t234_aligned_sigheader.bin.hash zerosbk
[ 0.4556 ] Sending mb2_applet...
[ 0.4561 ] tegrarcm_v2 --chip 0x23 0 --pollbl --download applet applet_t234_sigheader.bin.encrypt
[ 0.4571 ] BL: version 1.4.0.4-t234-54845784-e89ea9bc last_boot_error: 0
[ 0.6667 ] Sending applet
[ 0.6668 ] ERROR: might be timeout in USB write.
Error: Return value 3
Command tegrarcm_v2 --chip 0x23 0 --pollbl --download applet applet_t234_sigheader.bin.encrypt
[ 0.7648 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[ 0.7657 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[ 0.7664 ] Retrieving board information
[ 0.7670 ] tegrarcm_v2 --chip 0x23 0 --oem platformdetails chip chip_info.bin
[ 0.7686 ] Retrieving EEPROM data
[ 0.7687 ] tegrarcm_v2 --oem platformdetails eeprom cvm /home/pkauls/tegra/Linux_for_Tegra/bootloader/cvm.bin --chip 0x23 0
[ 0.7727 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[ 0.7750 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[ 0.7763 ] Dumping customer Info
[ 0.7774 ] tegrarcm_v2 --chip 0x23 0 --oem dump bct tmp.bct
[ 0.7790 ] tegrabct_v2 --brbct tmp.bct --chip 0x23 0 --custinfo /home/pkauls/tegra/Linux_for_Tegra/bootloader/custinfo_out.bin
[ 0.7798 ] File tmp.bct open failed
[ 0.7798 ]
[ 0.7798 ] Error: try getting custinfo fail. Moving on
[ 0.7798 ] Rebooting to recovery mode
[ 0.7817 ] tegrarcm_v2 --chip 0x23 0 --ismb2
[ 0.7826 ] Rebooting to recovery mode
[ 0.7831 ] tegrarcm_v2 --chip 0x23 0 --reboot recovery
Parsing board information failed.
UART Log
[0049.473] I> MB1 (version: 1.4.0.1-t234-54845784-08e631ca)
[0049.478] I> t234-A01-0-Silicon (0x12347) Prod
[0049.482] I> Boot-mode : BPMP Diagnostic
[0049.486] I> Entry timestamp: 0x00000000
[0049.490] I> last_boot_error: 0x0
[0049.493] I> BR-BCT: preprod_dev_sign: 0
[0049.497] I> rst_source: 0xb, rst_level: 0x1
[0049.501] I> Task: Initialize MB2 params
[0049.505] I> MB2-params @ 0x40060000
[0049.509] I> Task: Crypto init
[0049.512] I> Task: Perform MB1 KAT tests
[0049.516] I> Task: NVRNG health check
[0049.519] I> NVRNG: Health check success
[0049.523] I> Task: Secure debug controls
[0049.527] I> Task: strap war set
[0049.530] I> Task: Program NV master stream id
[0049.534] I> Task: Verify boot mode
[0049.540] I> Task: Alias fuses
[0049.543] W> FUSE_ALIAS: Fuse alias on production fused part is not supported.
[0049.550] I> Task: Print SKU type
[0049.553] I> FUSE_OPT_CCPLEX_CLUSTER_DISABLE = 0x000001c8
[0049.558] I> FUSE_OPT_GPC_DISABLE = 0x00000002
[0049.563] I> FUSE_OPT_TPC_DISABLE = 0x000000f0
[0049.567] I> FUSE_OPT_DLA_DISABLE = 0x00000003
[0049.571] I> FUSE_OPT_PVA_DISABLE = 0x00000001
[0049.575] I> FUSE_OPT_NVENC_DISABLE = 0x00000001
[0049.580] I> FUSE_OPT_NVDEC_DISABLE = 0x00000000
[0049.584] I> FUSE_OPT_FSI_DISABLE = 0x00000001
[0049.589] I> FUSE_OPT_EMC_DISABLE = 0x0000000c
[0049.593] I> FUSE_BOOTROM_PATCH_VERSION = 0x7
[0049.597] I> FUSE_PSCROM_PATCH_VERSION = 0x7
[0049.601] I> FUSE_OPT_ADC_CAL_FUSE_REV = 0x2
[0049.605] I> FUSE_SKU_INFO_0 = 0xd5
[0049.609] I> FUSE_OPT_SAMPLE_TYPE_0 = 0x3 PS
[0049.613] I> FUSE_PACKAGE_INFO_0 = 0x2
[0049.616] I> SKU: Prod
[0049.619] I> Task: Boost clocks
[0049.622] I> Initializing PLLC2 for AXI_CBB.
[0049.626] I> AXI_CBB : src = 35, divisor = 0
[0049.630] I> Task: Voltage monitor
[0049.633] I> VMON: Vmon re-calibration and fine tuning done
[0049.639] I> Task: UPHY init
[0049.642] W> UPHY: UPHY lane info table is empty in MB1 BCT.
[0049.648] I> Task: Boot device init
[0049.651] I> Boot_device: RCM
[0049.654] I> USB configuration success
[0049.658] I> Task: TSC init
[0049.661] I> Task: Enable WDT 5th expiry
[0049.665] I> Task: I2C register
[0049.668] I> Task: Set I2C bus freq
[0049.671] I> Task: Reset FSI
[0049.674] I> Task: Enable clock-mon
[0049.678] I> FMON: Fmon re-programming done
[0049.682] I> Task: Mapper init
[0049.685] I> Task: MB1 fixed firewalls
[0049.691] W> Firewall readback mismatch
[0049.696] I> Task: Load MB2/Applet/FSKP
[0049.700] I> Loading MB2 Applet
[0049.703] I> Slot: 1
[0049.705] E> BLOCK_DEV: Failed to open blockdev.
[0049.710] E> LOADER: Failed to open blockdev 0(0).
[0049.715] E> LOADER: Failed to get storage info for binary 21 from loader.
[0049.723] C> LOADER: Could not read binary 21.
[0049.727] E> Failed to load MB2
[0049.730] C> Task 0x46 failed (err: 0x27228311)
[0049.734] E> Top caller module: MB2_PARAMS, error module: LOADER, reason: 0x11, aux_info: 0x83
[0049.743] C> Boot Info Table status dump :
0111100000111000110111111111000000011110000000000000011000001
This only happens when rebooting from a system running on slot B. Running slot A, setting slot B active, rebooting to RCM works.