NVIDIA DRIVE AV Storage Configuration
In the PCT, there are three configuration files that implement the three-level partitioning concept:
-
global_storage.cfg
-
This is the root of the definition hierarchy.
-
It defines the top-level partitioning and contains partitions that are present regardless of which boot chain is active.
-
It is referred to as the storage configuration file of the first-level (level-1) partition table.
-
-
boot_chain_storage.cfg file as mentioned after
sub_cfg_file=
in level-1 partitions.-
Contains partitions that are unique to each of the boot chains.
-
It is referred to as the storage configuration file of the second-level (level-2) partition table.
-
-
qnx_gos0_storage.cfg file as mentioned after
sub_cfg_file=
in level-2 partitions.-
Contains partitions that are unique to each of level-2 container partitions.
-
It is referred to as the storage configuration file of the third-level (level-3) partition table.
-
Three-Level Partitioning
The following diagram shows an example of a three-level partition layout and three-level partition tables.

-
The eMMC A chain: It consists of all eMMC partitions assigned to all virtual machines in the Partition Configuration Table (PCT). All content in this chain can be overwritten by the OTA application.
-
The eMMC B chain: This is the recovery chain. The target boots in this chain when the OTA application is about to update other boot chains.
-
The QSPI C chain: This is the recovery chain to boot with only QSPI. The target boots in this chain when the OTA application is about to update other boot chains.
-
Persistent partitions for all virtual machines: The data partitions that are not updated by the OTA application. Data over these partitions remain consistent over multiple OTA cycles.
When inspecting the global_storage.cfg (level-1), you will notice it refers to
boot_chain_storage.cfg as a sub_config
file. This elevates the
boot_chain_storage_qspi.cfg to be level-2.
...
[partition]
name=A_qspi_chain
...
sub_cfg_file=boot_chain_storage.cfg
[partition]
name=B_qspi_chain
...
sub_cfg_file=boot_chain_storage.cfg
[partition]
name=C_qspi_chain
...
sub_cfg_file=boot_chain_c_storage.cfg
Similarly, when inspecting the boot_chain_storage.cfg (level-2), you will notice it refers to the OS storage configuration file. This elevates the OS storage configuration file to be level-3.
[partition]
name=qnx-gos0
...
sub_cfg_file=qnx_gos0_storage.cfg
Since level-3 is derived from level-2, its content will be duplicated in each of the boot chains (A and B).
DRIVE AV Storage Layout
First-Level Partition Table (L1PT) Layout
The global_storage.cfg file defines the total size of storage devices, boot chain container partitions and persistent partitions of guest VMs.
The first-level configuration has the following layout for the ECO QSPI+eMMC use case:
Device | Partition | Size (Hex bytes) | IVC Value | Mandatory | Customizable | Purpose |
---|---|---|---|---|---|---|
QSPI - 0 size (0x4000000) |
bct (BR-BCT) | 0x80000 | 0x80162560 | Yes | No | Holds board configuration information. |
pt (PT_1) | 0x80000 | 0x80162661 | Yes | No | L1 partition table. | |
C_qspi_chain | 0x2C00000 | 0x80962C66 | No | Yes (Only related with GOS partitions) | L1 container partition for holding C chain on qspi. | |
bad-page (PBL) | 0x80000 | N/A | Yes | No | For DRAM ECC. | |
A_qspi_chain | 0x940000 | 0x80962762 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding A chain on qspi. | |
B_qspi_chain | 0x940000 | 0x80962863 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding B chain on qspi. | |
EMMC - 3 size (0xE8FC00000 for 64GB) (0x747C00000 for 32GB) | A_emmc_chain | 0x72D080000 for 64 GB 0x38D0C0000 for 32 GB | 0x80962964 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding A chain on emmc. |
B_emmc_chain | 0x72D080000 for 64 GB 0x38D0C0000 for 32 GB | 0x80962A65 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding B chain on emmc. | |
gos0-shared-pers | 0x10000000 | 0x801636ED | No | Yes | Persistent shared user partition of GOS0. | |
pers-ota | 0x10000000 | 0x8016245F | Yes | No | Persistent Storage for Update VM | |
UFS - 0 size (0x3A00000000) |
A_ufs_chain | 0xD00000000 | 0x80962D70 | No | Yes (Only related with GOS partitions) | L1 container partition for holding A chain on ufs. |
B_ufs_chain | 0xD00000000 | 0x80962E71 | No | Yes (Only related with GOS partitions) | L1 container partition for holding B chain on ufs. | |
gos0-ufs | 0x1D00000000 | 0x80163FF7 | No | Yes | User persistent data of GOS0. | |
gos0-demo-ufs (only for linux) | 0x280000000 | 0x801640F8 | No | Yes | To demonstrate Encrypted File System feature. |
The first-level configuration has the following layout for the ECO QSPI+UFS use case:
Device | Partition | Size (Hex bytes) | IVC Value | Mandatory | Customizable | Purpose |
---|---|---|---|---|---|---|
Device | Partition | Size (Hex bytes) | IVC Value (Depends on VSC Server GID) | Mandatory | Customizable | Purpose |
QSPI - 0 size (0x4000000) |
bct (BR-BCT) | 0x80000 | 0x80162560 | Yes | No | Holds Board configuration information. |
pt (PT_1) | 0x80000 | 0x80162661 | Yes | No | L1 Partition Table. | |
C_qspi_chain | 0x2C00000 | 0x80962C66 | No | Yes (Only related with GOS partitions) | L1 container partition for holding C chain on qspi. | |
bad-page (PBL) | 0x80000 | N/A | Yes | No | For DRAM ECC. | |
A_qspi_chain | 0x940000 | 0x80962762 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding A chain on qspi. | |
B_qspi_chain | 0x940000 | 0x80962863 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding B chain on qspi. | |
EMMC - 3 size (0xE8FC00000 for 64GB) (0x747C00000 for 32GB) | A_emmc_chain | 0x72D080000 for 64 GB 0x38D0C0000 for 32 GB | 0x80962964 | Yes (For IST partitions) | Yes | L1 container partition for holding A chain on emmc. |
B_emmc_chain | 0x72D080000 for 64 GB 0x38D0C0000 for 32 GB | 0x80962A65 | Yes (For IST partitions) | Yes | L1 container partition for holding B chain on emmc. | |
UFS - 0 size (0x3A00000000) |
A_ufs_chain | 0xD00000000 | 0x80962D70 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding A chain on ufs. |
B_ufs_chain | 0xD00000000 | 0x80962E71 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding B chain on ufs. | |
gos0-shared-pers | 0x10000000 | 0x801636ED | No | Yes | Persistent shared user partition of GOS0 | |
pers-ota | 0x10000000 | 0x8016245F | Yes | No | Persistent Storage for Update VM | |
gos0-ufs | 0x1D00000000 | 0x80163FF7 | No | Yes | User persistent data of GOS0 | |
gos0-demo-ufs (only for linux) | 0x280000000 | 0x801640F8 | No | Yes | To demonstrate Encrypted File System feature |
The first-level configuration has the following layout for the NDAS use case:
Device | Partition | Size (Hex bytes) |
IVC Value | Mandatory | Customizable | Purpose |
QSPI - 0 size (0x4000000) |
bct (BR-BCT) | 0x80000 | 0x80162560 | Yes | No | Holds Board configuration information. |
pt (PT_1) | 0x80000 | 0x80162661 | Yes | No | L1 Partition Table | |
C_qspi_chain | 0x2C00000 | 0x80962C66 | No | Yes (Only related with GOS partitions) | L1 container partition for holding C chain on qspi | |
bad-page (PBL) | 0x80000 | N/A | Yes | No | For DRAM ECC | |
A_qspi_chain | 0x940000 | 0x80962762 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding A chain on qspi | |
B_qspi_chain | 0x940000 | 0x80962863 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding B chain on qspi | |
EMMC - 3 size (0x747C00000) | A_emmc_chain | 0x500000000 | 0x80962964 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding A chain on emmc |
B_emmc_chain | 0x500000000 | 0x80962A65 | Yes | Yes (Only related with GOS partitions) | L1 container partition for holding B chain on emmc | |
gos0-misc-pers | 0x6600000 | 0x801235EC | Yes | Yes | ||
gos0-ota-pers | 0x10000000 | 0x801636ED | Yes | No | ||
guest0-shadow-pers | 0x66600000 | 0x809737EE | Yes | Yes | ||
gos0-m-cache-pers | x140000000 | 0x801238EF | Yes | Yes | ||
gos0-m-stream-pers | 0x40000000 | 0x801239F0 | Yes | Yes | ||
gos0-p-pers | x200000000 | 0x80123AF1 | Yes | Yes | ||
gos0-s-logger-pers | 0x60000000 | 0x80163BF2 | Yes | Yes | ||
gos0-sar-pers | 0x13300000 | 0x800E3CF3 | Yes | Yes | ||
gos0-dlb-pers | 0x4000000 | 0x80063DF4 | Yes | Yes | ||
gos1-config-pers | 0xA00000 (Only for dual-qnx) | 0x80962F72 | No | Yes | ||
pers-ota | 0x10000000 | 0x8016245F | Yes | No | Persistent Storage for Update VM | |
UFS - 0 UFS device is only for HIGH storage configuration. size (0x1D00000000) |
A_ufs_chain | 0xC80000000 | 0x80962D70 | No | Yes | L1 container partition for holding A chain on ufs |
B_ufs_chain | 0xC80000000 | 0x80962E71 | No | Yes | L1 container partition for holding B chain on ufs | |
gos0-m-cache-ufs | 0x200000000 | 0x801240F8 | No | Yes | ||
gos0-sar-ufs | 0xC0000000 | 0x800E41F9 | No | Yes | ||
gos0-edr-ufs | 0xC0000000 | 0x800A42FA | No | Yes |
Second-Level Partition Table (L2PT) Layout
-
QSPI Chain-A/B Layout
QSPI partitions include bct files, bootloaders, and firmware binaries.
The storage layout for QSPI is as follows:
QSPI Partition Name | Size (in KBytes) | Mandatory | Customizable | Purpose |
---|---|---|---|---|
PT_2(pt) | 256 | Yes | No | L2 Partition Table |
mb1-bootloader | 512 | Yes | No | Primary Copy of MB1 Bootloader |
PSC-BL1 (psc-bl) | 256 | Yes | No | PSC firmware |
MB1-BCT (mb1-bct) | 256 | Yes | No | BCT for MB1 |
MemBct (mem-bct) | 256 | Yes | No | BCT for memory configuration |
IST_UCode(ccplex-ist-ucode) | 256 | Yes | No | IST ucode |
MB2+MB2-BCT (mb2-bootloader) | 512 | Yes | No | MB2 |
SPE_FW (spe-fw) (Only for standard/safety prod_debug_extra PCT variant) | 512 | Yes | No | Sensor Processing Engine firmware |
TSEC_FW (tsec-fw) | 256 | Yes | No | TSEC firmware |
PSC_FW (psc-fw) | 768 | Yes | No | Firmware for PSC |
MCE (mts-mce) | 256 | Yes | No | Firmware for cpu cores |
BPMP_FW(bpmp-fw) | 1536 | Yes | No | Firmware for BPMP |
SC7-RF | 256 | Yes | No | BPMP SC7 resume firmware |
PSC-RF | 256 | Yes | No | PSC resume firmware |
MB2-RF | 256 | Yes | No | CPU resume firmware |
BPMP_FW_DTB (bpmp-fw-dtb) | 512 | Yes | No | DT for BPMP |
RCE_FW (rce-fw) | 1024 | Yes | No | RCE firmware image |
nvdec-fw | 512 | Yes | No | NVDEC firmware |
Key IST uCode (ist-ucode) | 256 | Yes | No | IST key |
IST_BPMP (bpmp-ist) | 256 | Yes | No | IST bpmp |
IST_ICT (ist-config) | 256 | Yes | No | IST ICT |
tsec-fw (tsec-fw) | 256 | Yes | No | TSEC FW |
-
Chain B (same as Chain A) partitions are not included in the preceding table.
-
QSPI Chain-C Layout
QSPI Partition Name | Size (in KBytes) | Mandatory | Customizable | Purpose |
---|---|---|---|---|
PT_2(pt) | 256 | Yes | No | L2 Partition Table |
mb1-bootloader | 512 | Yes | No | Primary Copy of MB1 Bootloader |
PSC-BL1 (psc-bl) | 256 | Yes | No | PSC firmware |
MB1-BCT (mb1-bct) | 256 | Yes | No | BCT for MB1 |
MemBct (mem-bct) | 256 | Yes | No | BCT for memory configuration |
MB2+MB2-BCT (mb2-bootloader) | 512 | Yes | No | MB2 |
SPE_FW (spe-fw) | 512 | Yes | No | Sensor Processing Engine firmware |
PSC_FW (psc-fw) | 768 | Yes | No | Firmware for PSC |
MCE (mts-mce) | 256 | Yes | No | Firmware for cpu cores |
BPMP_FW (bpmp-fw) | 1536 | Yes | No | Firmware for BPMP |
BPMP_FW_DTB (bpmp-fw-dtb) | 512 | Yes | No | DT for BPMP |
secure-os | 4096 | Yes | No | TOS |
pvit | 256 | Yes | No | Partitions Version Info Table |
fsi-fw | 6144 | Yes | No | FSI FW |
kernel (HV image) | 6656 | Yes | No | HV kernel + server VMs + PCT |
guest-linux-chain_c (Linux GOS VM 3LPT) | 13568 | Yes | Yes | Linux kernel/initramfs/DT/GPT/rootf |
qnx-update-chain_c (IFS/DT of DRIVE Update VM L3PT) | 7168 | Yes | No | Update VM QNX primary IFS image and DT |
-
eMMC and UFS partitions
The eMMC/UFS device connected to Orin is partitioned logically to enable each VM to have its own root file system or to store user data. Each VM is assigned a dedicated user partition on eMMC/UFS and might have secondary user partitions for storing additional data. The eMMC/UFS device on board is shared between the VMs.
The eMMC/UFS storage chain A/B for Linux PCT ECO use case:
Partition Name | Size (in MBytes) | Mandatory | Customizable | Purpose | Partition in |
---|---|---|---|---|---|
ist-testimg (For safety, Optional for standard) | 1280 | Yes | No | IST test image | eMMC |
ist-runtimeinfo (For safety, Optional for standard) | 0.25 | Yes | No | IST runtime information | eMMC |
ist-resultdata (For safety, Optional for standard) | 200 | Yes | No | IST result data | eMMC |
gr-ist (For safety, Optional for standard) | 0.25 | Yes | No | gr blob support | eMMC |
gos0-crashlogs | 1 | No | Yes | To store Oops logs | eMMC |
secure-os | 4 | Yes | No | TOS | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
adsp-fw | 2 | Yes | No | For Audio | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
fsi-fw | 6 | No | No | FSI FW | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
xusb-fw | 0.25 | Yes | No | XUSB FW | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
dce-fw | 9 | Yes | No | DCE FW | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
pvit | 0.25 | Yes | No | Partitions Version Info Table | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
pva-fw | 2.5 | Yes | No | PVA FW | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
kernel (HV image) | 10 | Yes | No | HV kernel + server VMs + PCT | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
guest-linux (For Linux GOS VM 3LPT) | 11758.875 (for 32GB eMMC) 26606.875 (for 64GB eMMC or QSPI+UFS) | Yes | Yes | Linux kernel/initramfs/DT/GPT/rootfs | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
gos0-rw-overlay | 1024 | No | Yes | R/W partition for Read-only Rootfs | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
qnx-update (For IFS/DT of DRIVE Update VM L3PT) | 24 | Yes | No | Update VM QNX primary IFS image and DT | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
qnx-update-fs | 128 | Yes | No | Filesystem of Update VM QNX | eMMC (QSPI+eMMC boot) UFS (QSPI+UFS boot) |
-
All partitions present in
boot_chain_storage.cfg
are part of the OTA update. -
All sub-configuration files that are in the
boot_chain_storage.cfg
are also part of the OTA update.
The eMMC/UFS storage chain A/B for Linux PCT NDAS use case:
Partition Name | Size (in MBytes) | Mandatory | Customizable | Purpose | Partition in |
---|---|---|---|---|---|
ist-testimg (For safety, Optional for standard) | 1280 | Yes | No | IST test image | eMMC |
ist-runtimeinfo (For safety, Optional for standard) | 0.25 | Yes | No | IST runtime information | eMMC |
ist-resultdata (For safety, Optional for standard) | 200 | Yes | No | IST result data | eMMC |
gr-ist (For safety, Optional for standard) | 0.25 | Yes | No | gr blob support | eMMC |
gos0-crashlogs | 1 | No | Yes | To store Oops logs | eMMC |
secure-os | 4 | Yes | No | TOS | eMMC |
adsp-fw | 2 | Yes | No | For Audio | eMMC |
fsi-fw | 6 | No | No | FSI FW | eMMC |
xusb-fw | 0.25 | Yes | No | XUSB FW | eMMC |
dce-fw | 9 | Yes | No | DCE FW | eMMC |
pvit | 0.25 | Yes | No | Partitions Version Info Table | eMMC |
pva-fw | 2.5 | Yes | No | PVA FW | eMMC |
kernel (HV image) | 10 | Yes | No | HV kernel + server VMs + PCT | eMMC |
guest-linux (Linux GOS VM 3LPT) | 3456 | Yes | Yes | Linux kernel/initramfs/DT/GPT/rootfs | eMMC |
gos0-rw-overlay | 256 | Yes | Yes | R/W partition for Read-only Rootfs | eMMC |
gos0-av-rootfs (GOS0 AV Root-FS) | 12288 | Yes | No | Automotive applications rootfs | eMMC |
gos0-p-sw (NDAS partner Root-FS | 2048 | Yes | No | Rootfs for partner | eMMC |
gos0-av-factory | 50 | Yes | No | Factory partition | eMMC |
qnx-update (IFS/DT of DRIVE Update VM L3PT) | 24 | Yes | No | Update VM QNX primary IFS image and DT | eMMC |
qnx-update-fs | 128 | Yes | No | Filesystem of Update VM QNX | eMMC |
gos0-usr-data-ufs (UserData UFS) (#) | 8192 | Yes | Yes | GOS0 user data | UFS |
- (#) is a partition only for HIGH storage configuration.
- For mandatory partition, only size of partition is customizable. Forn-mandatory partition, all partition-attributes is customizable or it can be removed/split.
NV Pre-Allocated Stream IDs
The following table describes the NV pre-allocated stream IDs.
Partition Name | Linux | Linux Android | QNX | QNX: DRIVE Update | UFS ID | Linux UFS ID | QNX Static Memory Mapping Start | Size |
---|---|---|---|---|---|---|---|---|
A_ufs_chain | Y | TEGRA_SID_NISO0_UFS_17 | TEGRA_SID_NISO0_UFS_17 | 0x94000000 | 0x01000000 | |||
B_ufs_chain | Y | TEGRA_SID_NISO0_UFS_18 | TEGRA_SID_NISO0_UFS_18 | 0x95000000 | 0x01000000 | |||
qnx-update-fs | Y | TEGRA_SID_NISO0_UFS_19 | TEGRA_SID_NISO0_UFS_19 | 0x96000000 | 0x01000000 | |||
pers-ota | Y | TEGRA_SID_NISO0_UFS_20 | TEGRA_SID_NISO0_UFS_20 | 0x97000000 | 0x01000000 | |||
gos0-m-cache-ufs | Y | Y | TEGRA_SID_NISO0_UFS_1 | TEGRA_SID_NISO0_UFS_1 | 0xd0000000 | 0x01000000 | ||
gos0-edr-ufs | Y | Y | TEGRA_SID_NISO0_UFS_11 | TEGRA_SID_NISO0_UFS_11 | 0xd9000000 | 0x01000000 | ||
gos0-sar-ufs | Y | Y | TEGRA_SID_NISO0_UFS_10 | TEGRA_SID_NISO0_UFS_10 | 0xd8000000 | 0x01000000 | ||
gos0-shared-pers | Y | Y | TEGRA_SID_NISO0_UFS_12 | TEGRA_SID_NISO0_UFS_12 | 0xda000000 | 0x01000000 | ||
gos0-ufs | Y | Y | TEGRA_SID_NISO0_UFS_13 | TEGRA_SID_NISO0_UFS_13 | 0x0db000000 | 0x01000000 | ||
gos0-demo-ufs | Y | Y | TEGRA_SID_NISO0_UFS_14 | TEGRA_SID_NISO0_UFS_14 | 0x0dc000000 | 0x01000000 | ||
gos0-usr-data-ufs | Y | Y | TEGRA_SID_NISO0_UFS_3 | TEGRA_SID_NISO0_UFS_1 | 0x0d1000000 | 0x01000000 | ||
gos0-ifs2 | Y | TEGRA_SID_NISO0_UFS_5 | 0xd3000000 | 0x01000000 | ||||
gos0-ifs2_1 | Y | TEGRA_SID_NISO0_UFS_6 | 0xd4000000 | 0x01000000 | ||||
usr-fs | Y | TEGRA_SID_NISO0_UFS_7 | 0xd5000000 | 0x01000000 | ||||
gos0-efs2 | Y | TEGRA_SID_NISO0_UFS_8 | 0xd6000000 | 0x01000000 | ||||
gos0-efs3 | Y | TEGRA_SID_NISO0_UFS_9 | 0xd7000000 | 0x01000000 | ||||
debug_overlay | Y | TEGRA_SID_NISO0_UFS_15 | 0xdc000000 | 0x01000000 | ||||
guest-linux | Y | TEGRA_SID_NISO0_UFS_1 | ||||||
gos0-rw-overlay | Y | TEGRA_SID_NISO0_UFS_1 | ||||||
UDA | Y | TEGRA_SID_NISO0_UFS_4 | ||||||
GOS1 | Y | TEGRA_SID_NISO0_UFS_2 | ||||||
GOS0 | Y | TEGRA_SID_NISO0_UFS_1 |