Cbo.dtb not getting flashed with JetPack 4.3

Hello,

I wish to change the boot order on my AGX Xavier with “net” being the first entry followed by “emmc”. I updated the cbo.dts file with the right entries with updated “tftp-server-ip” address. Created the cbo.dtb file using dtc(1) command and flashed it using the ./flash.sh script.

However, after the flash was complete, the new CPUBL-CFG partition didn’t take any effect falling back to the old boot order.

My cbo.dts is looking like this:

/dts-v1/;

/ {
    compatible = "nvidia,cboot-options-v1";
    boot-configuration {
        boot-order = "net", "emmc", "sd", "usb";
        tftp-server-ip = /bits/ 8 <10 134 30 24>;
        dhcp-enabled;
        /* remove dhcp-enabled if uncommenting static-ip configuration */
        /* static-ip = /bits/ 8 <0 0 0 0>;
         * ip-netmask = /bits/ 8 <255 255 255 0>;
         * ip-gateway = /bits/ 8 <0 0 0 0>;
         */
    };
[xavier-no-effect-of-cbo-flash.log|attachment](upload://ndydGWkoAdjYhAkXrt5cdKBlV1y.log) (67.9 KB) [xavier-flash-cbo.log|attachment](upload://5rSj7JvqHprBYjsO6TOfrBgHlWz.log) (42.6 KB) }

I have attached the “flash.sh” and the serial console output. I am not sure what I am missing here. Also, please let me know if more information is needed.

Also, I don’t see cboot source in the R32.3.1 public_sources tarball. Where can I get the latest cboot source that will work on a system genned with JP4.3?

Hi,

I don’t see the link of log here. Could you paste again?

Also, I don’t see cboot source in the R32.3.1 public_sources tarball. Where can I get the latest cboot source that will work on a system genned with JP4.3?

Sorry, this will not be released.

Dunno what happened with the log files, attaching them again.xavier-no-effect-of-cbo-flash.log (67.9 KB) xavier-flash-cbo.log (42.6 KB)

BTW, the interesting part here is:

[0002.080] I> Load in CBoot Boot Options partition and parse it                 
[0002.081] E> Cannot read beyond partition boundary for CPUBL-CFG               
[0002.087] E> tegrabl_read_cbo Failed to read CPUBL-CFG partition               
[0002.093] W> platform_init: tegrabl_read_cbo failed with error 0xd0d0104

And the error code (as per cboot source provided with R32.2) is at line:

In bootloader/partner/common/lib/partition_manager/tegrabl_partition_manager.c line 410:

       if (partition_info->total_size < (num_bytes + partition->offset)) {
		error = TEGRABL_ERROR(TEGRABL_ERR_OVERFLOW, 1);
		pr_error("Cannot read beyond partition boundary for %s\n",
				 partition_info->name);

		goto fail;
	}

Ohh!

What would be the best way to address any issue in cboot? How can we modify the cboot, in best possible way for our needs?

Hi

Existing cbootoptionfile(/home/aaney/nvidia/nvidia_sdk/JetPack_4.3_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/cbo.dtb) reused.

This is from your host flash log. Are you sure this cbo.dtb has the change you made?

Hello WayneWWW,

Thank you for the reply. Yes, I have updated the cbo.dtb file. In fact, I created it as this was missing after a fresh install. I have also verified the boot order looking into the cbo.dtb file. I have pasted the contents of the cbo.dts file as well.

Couple other data points:

  1. I have tried updating CPUBL-CFG partition on couple of different Xaviers.
  2. I have tried updating CPUBL-CFG partition using dd(1) as well, where I have used both, a signed cbo.dtb file as well as just the cbo.dtb file. Both failed. This was done after couple of tries with SDKManager.

Were you able flash the cbo.dtb (with different boot-order) successfully?

Hi,

Sorry that I forgot there is a bug on rel-32.3.1. We already fix it.

For this issue, please upgrade to rel-32.4 and apply this patch to your cboot.

diff --git a/lib/cbo/tegrabl_cbo.c b/lib/cbo/tegrabl_cbo.c
index d47c58c..b86d631 100644
--- a/lib/cbo/tegrabl_cbo.c
+++ b/lib/cbo/tegrabl_cbo.c
@@ -21,7 +21,7 @@
 #include <string.h>
 
 #define NVIDIA_BOOT_PARTITION_GUID	"6637b54f-c21b-48a7-952e-a8d071029d6b"
-#define CBO_DT_SIZE					(16 * 1024) /* 16KB */
+#define CBO_DT_SIZE					(4 * 1024) /* 4KB */
 
 static struct cbo_info g_cbo_info;

If you don’t want to upgrade to rel-32.4, an alternative is modify the partition size of CPUBL-CFG in flash_l4t_t194_sdmmc.xml back to 16KB.

Hello WayneWWW,

Thank you for the reply.

For now, I don’t wish to upgrade to r32.4. However, can I apply this patch to the cboot src provided with either r32.4 or r32.2 and flash on the board?

Hello WayneWWW,

An update; I made the modifications as suggested by you on the cboot source that was provided with R32.2 release. Flashed it on the cpu-bootloader partition and now I see the boot order being changed.

However, I don’t know if this will have any other side-effects as NVIDIA may have made changes to cboot code between R32.2 and R32.3.1 releases. Can you please confirm what I have done here is okay to do?

Also, can you please let me know the reason for not providing cboot source code with R32.3.1? I hope this is not the case going forward. Please note, I have not yet looked at the JetPack 4.4 source tarball.

EDIT: I found the cboot source tarballs for R32.4.2 on the jetson download center.

Hi

However, I don’t know if this will have any other side-effects as NVIDIA may have made changes to cboot code between R32.2 and R32.3.1 releases. Can you please confirm what I have done here is okay to do?

I cannot guarantee if any side-effect. If you have any concern, please upgrade to rel-32.4.2.

Also, can you please let me know the reason for not providing cboot source code with R32.3.1? I hope this is not the case going forward.

Actually, we just don’t prepare to release this one. It did not start any plan or even review. Since rel-32.4.2 cboot src has been released, we suggest you to check rel-32.4.2 directly.