Skip to main content
A cold boot starts the system from the power-off state. This process begins with the PBL. The following figure shows the cold boot flow.
Cold boot flow

Figure: Cold boot flow

The cold boot process operates in two security modes: Secure and Nonsecure. At the EL0, EL1, and EL2 Exception levels, the boot core can operate in either Secure or Nonsecure mode, however at the EL3, it always operates in Secure mode. The Linux kernel runs in the nonsecure EL1 state. After completing the security settings in the secure EL3 state, the XBL may switch to the EDK II/U-Boot nonsecure EL1 state. For more information about the security modes, see Software Security Architecture. The cold boot sequence involves the following steps:
  1. After a reset, the boot core exits the Reset state and executes the PBL. The PBL initializes the hardware clocks, CPU caches, memory management unit (MMU), and identifies the boot device based on the boot option settings.
  2. The PBL loads and authenticates the XBL from the boot device. The XBL runs the security setup in EL3 Secure state and performs the following tasks:
    1. Initializes the hardware, firmware images, CPU cache, MMU, boot device, PMIC, and DDR.
    2. Loads and authenticates the Qualcomm TEE image from the boot device.
    3. Loads and authenticates the Qualcomm Hypervisor image.
    4. Loads and authenticates the EDK II/U-Boot image.
    5. Makes a secure channel manager (SCM) call to jump to the Qualcomm TEE image. SCM is the driver that communicates with Qualcomm TEE using a secure monitor call (SMC).
  3. The Qualcomm TEE sets up the secure environment and runs the Qualcomm Hypervisor image.
  4. The Qualcomm Hypervisor hands over control to EDK II/U-Boot, which then loads and authenticates the systemd-boot EFI image using the UEFI secure boot.
  5. The systemd-boot image loads and authenticates the Qualcomm Linux kernel image, and passes control to the Qualcomm Linux kernel. If you enable kernel-based virtual machine (KVM) mode, the UEFI shuts down the Qualcomm Hypervisor, exits the UEFI boot services, and passes control to Linux KVM in EL2.
  6. The Qualcomm Linux kernel launches the Linux application such as the bash shell.