Slot switch failed

NVIDIA experts, I am using the latest version of r38.4 and have found that nvbootctrl set-active-boot-slot can successfully switch between slot A and slot B. However, after upgrading slot B bootloader from slot A, the system switches to slot B on boot, but the rootfs is still nvme0n1p1. What’s going on here?I feel it should correspond to nvme0n1p2.

root@tegra-ubuntu:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p1  177G   28G  140G  17% /
tmpfs            62G  140K   62G   1% /dev/shm
tmpfs            25G   23M   25G   1% /run
tmpfs           5.0M  8.0K  5.0M   1% /run/lock
efivarfs        256K   12K  245K   5% /sys/firmware/efi/efivars
/dev/nvme0n1p5  505M   78K  505M   1% /boot/efi
tmpfs            13G  112K   13G   1% /run/user/121
tmpfs            13G   96K   13G   1% /run/user/0
root@tegra-ubuntu:~# nvbootctrl dump-slots-info
Current version: 38.4.0
Capsule update status: 1
Current bootloader slot: B
Active bootloader slot: B
num_slots: 2
slot: 0,             status: normal
slot: 1,             status: normal

root@tegra-ubuntu:~# cat /sys/devices/virtual/dmi/id/bios_version
202512.0-39e87081
root@tegra-ubuntu:~#
root@tegra-ubuntu:~#
root@tegra-ubuntu:~# cat /sys/devices/virtual/dmi/id/bios_date
12/31/2025
root@tegra-ubuntu:~#

hello wpceswpces,

may I know what’s your flash command-line, did you flash a target with ROOTFS_AB=1?

hi,JerryChang

Yes, I added ROOTFS_AB=1 in the flashing command.

sudo ROOTFS_AB=1 ./l4t_initrd_flash.sh \
      --external-device nvme0n1 \
      [ -c ./tools/kernel_flash/flash_l4t_t264_nvme_rootfs_ab.xml ] \
      jetson-agx-thor-devkit \
      external

I can switch to slot B using set-active-boot-slot, and I see it shows nvme0n1p2. when I check with fdisk -l, I can see that there are two rootfs partitions.


root@tegra-ubuntu:~# fdisk -l
Disk /dev/loop0: 16 MiB, 16777216 bytes, 32768 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000


Disk /dev/nvme0n1: 3.73 TiB, 4096805658624 bytes, 8001573552 sectors
Disk model: S1200ITT4-T2M24T-C1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 340E1840-0C92-4A3B-9CC2-F73B7FE1E879

Device              Start       End   Sectors   Size Type
/dev/nvme0n1p1    5591104 383078463 377487360   180G Microsoft basic data
/dev/nvme0n1p2  383078464 760565823 377487360   180G Microsoft basic data
/dev/nvme0n1p3         40    204839    204800   100M Microsoft basic data
/dev/nvme0n1p4     204840    206375      1536   768K Microsoft basic data
/dev/nvme0n1p5     206376   1254951   1048576   512M EFI System
/dev/nvme0n1p6    1254952   2042919    787968 384.8M Microsoft basic data
/dev/nvme0n1p7    2042920   2247719    204800   100M Microsoft basic data
/dev/nvme0n1p8    2247720   2249255      1536   768K Microsoft basic data
/dev/nvme0n1p9    2249256   3297831   1048576   512M Microsoft basic data
/dev/nvme0n1p10   3297832   4085799    787968 384.8M Microsoft basic data
/dev/nvme0n1p11   4085824   4905023    819200   400M Microsoft basic data
/dev/nvme0n1p12   4905024   5591103    686080   335M Microsoft basic data

One thing I’d like to add is that I modified the UEFI, and possibly disabled some configurations. I don’t think these should have any impact, though.

Switching via nvbootctrl set-active-boot-slot works normally, but it’s not working properly through the update capsule.

root@tegra-ubuntu:~# nvbootctrl dump-slots-info
Current version: 38.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
root@tegra-ubuntu:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p2  177G   28G  140G  17% /
tmpfs            62G  140K   62G   1% /dev/shm
tmpfs            25G   23M   25G   1% /run
tmpfs           5.0M  8.0K  5.0M   1% /run/lock
efivarfs        256K   12K  244K   5% /sys/firmware/efi/efivars
/dev/nvme0n1p5  505M   78K  505M   1% /boot/efi
tmpfs            13G   96K   13G   1% /run/user/0
tmpfs            13G  112K   13G   1% /run/user/121
root@tegra-ubuntu:~#

Could you share the full log when you were generating the capsule payload on the host?
And also, the log when you performed capsule update on the board.

It may not affect the result, but it will be great if you can also verify on the devkit w/o any custom change.

Hi,KevinFFF

This log looks good to me to generate the BUP.

I’m not clear why the log messages look deprecated.
It was booting from slot A, and switched to slot B after update as expected.
There’re some register access error after boot up and it triggers the reboot!?

[   16.997906]   Error Code: PWRDOWN_ERR
[   16.997908]   Overflow: Multiple PWRDOWN_ERR
[2026-01-16 14:28:07]  [   16.997913] 
[   16.997913]   Error Code: PWRDOWN_ERR

Could you share the result of the following commands at this moment?

$ sudo nvbootctrl dump-slots-info
$ sudo nvbootctrl -t rootfs dump-slots-info

Hi,KevinFFF

Sorry, I might not have explained clearly above. Both the capsule update and reboot were performed by me through SSH login to the board. Please refer to the log above: 192.168.137.11 (root)_2026-01-16-115731.log.

I do see the rootfs is mounted at /dev/nvme0n1p1.

[2026-01-16 14:29:17]  /dev/nvme0n1p1  177G   28G  140G  17% /

We are verifying if the similar issue can be reproduced on our AGX Thor devkit.
At the meantime, please check the follow result when you hit the issue.

Hi,KevinFFF

I did check the dump-slots-info at that time, Please refer to the log above: 192.168.137.11 (root)_2026-01-16-115731.log. and the information for -t rootfs. I’ll try it again later on my end.actually , I’ve also checked -t rootfs is-rootfs-ab-enabled before, i remember there was no prompt or output.

Okay, we may identify what causes the current issue.

You might lost adding ROOTFS_AB=1 when you were generating the BUP.
Please refer to the following commands which has been verified from us locally. (On AGX Thor devkit with JP7.1GA)

[Host]
$ sudo ROOTFS_AB=1 ./l4t_generate_soc_bup.sh -e t26x_spec t26x
$ ./generate_capsule/l4t_generate_soc_capsule.sh -i bootloader/payloads_t26x/bl_only_payload -o ./TEGRA_BL.Cap t264
$ scp ./TEGRA_BL.Cap nvidia@10.xx.xx.xx:/home/nvidia/.

Hi,KevinFFF

I am using a Single-Spec BUP. I referred to the command below, but I didn’t add ROOTFS_AB=1 when generating it. The command you mentioned above is for Multi-Spec BUP. Can I add the ROOTFS_AB=1 parameter to my command as well?

cd ${ToT_BSP}
sudo FAB=000 BOARDID=3834 FUSELEVEL=fuselevel_production BOARDSKU=0008 CHIP_SKU="00:00:00:A0" ./build_l4t_bup.sh jetson-agx-thor-devkit internal

We haven’t yet tried adding ROOTFS_AB=1 to build_l4t_bup.sh for generating a single-spec BUP. I suggest using the commands I shared previously for verification, as they are confirmed to work. Additionally, it would be worthwhile to test ROOTFS_AB=1 during the single-spec BUP generation process.

Hi,KevinFFF

Okay, thank you very much for your help. I’ll try again later and keep you updated on the results.

Hi,KevinFFF

Thank you very much. I tried passing ROOTFS_AB during the Single-Spec BUP upgrade, and it worked fine with the normal slot.

Hi,KevinFFF

There is another question I would like to ask. After I set set-active-boot-slot in NFS and reboot, can the system switch successfully? I just manually set the boot from nvme to slot1, but the root filesystem of slot1 is abnormal, and I found that I cannot enter slot1. So, I wanted to switch to slot0 without reflashing the device. Therefore, I accessed the system via NFS, but I found that the switch did not take effect.

Please check the relevant logs in BPMP.txt and CCPLEX0.txt below.So, how can I enter slot0 without reflashing the device now?I am now trying to replace nvme0n1p2 in NFS.

thor_logs_nfs.tar.gz (213.9 KB)

The slot of rootfs will follow the slot of bootloader.
It should be able to boot from slot 0 if the rootfs of slot 1 is corrupted.

Could you check the current slot when you are booting from NFS?
It seems the slot B.
Please share the full log after you run the following commands.

$ sudo nvbootctrl set-active-boot-slot 0
$ sudo reboot

You may also try to access UEFI menu and mark the slot status.

Hi,KevinFFF

Please refer to the above logs: CCPLEX0.txt and BPMP.txt.

Assuming that we are already in slot B, I manually switched from A to B, so I believe the slot A status in the UEFI menu should be normal. Setting the status through the menu should not cause a switch back to slot A. Later, I repaired the rootfs of slot B in NFS, and only after successfully booting into slot B could I manually switch back to slot A.

Sorry that the logs are separate so that I can not map their order.
Could you help to capture the log w/o using demuxer tool?
There may be the slot related information in the serial console log of MB1/MB2.

Hi,KevinFFF

Sorry, I just tried it and it’s working fine. Thank you for your patient explanation. Let’s consider this issue resolved.