Android Bootloader (ABL)

ABL is not a component of AVF, but it plays a crucial role in loading the necessary AVF components and initializing them in a correct way. This doc explains the responsibilities of ABL from the perspective of AVF.

pVM firmware (pvmfw)

ABL is responsible for the followings:

  • locating pvmfw binary from the pvmfw partition,
  • verifying it as part of the verified boot process,
  • loading it into memory, and
  • describing the region where pvmfw is loaded using DT and passing it to hypervisor.

See ABL Support for more detail.

ABL is also responsible for constructing the pvmfw configuration data. The data consists of the following info:

  • DICE chain (also known as BCC Handover)
  • DTBO describing debug policy (if available)
  • DTBO describing assignable devices (if available)
  • Reference DT carrying extra information that needs to be passed to the guest VM, e.g.:

See Configuration Data for more detail.

Android

ABL is responsible for setting the following bootconfigs describing the status and capabilities of the hypervisor.

  • androidboot.hypervisor.version: free-form description of the hypervisor
  • androidboot.hypervisor.vm.supported: whether traditional VMs (i.e. non-protected VMS) are supported or not
  • androidboot.hypervisor.protected_vm.supported: whether protected VMs are supported or not

Thee bootconfigs are converted into system properties by the init process.

See HypervisorProperties.prop for more detail.