# Android Bootloader (ABL) [ABL](https://source.android.com/docs/core/architecture/bootloader) 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](https://source.android.com/docs/security/features/verifiedboot) process, * loading it into memory, and * describing the region where pvmfw is loaded using DT and passing it to hypervisor. See [ABL Support](../pvmfw/README.md#android-bootloader-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](debug/README.md#debug-policy) (if available) * DTBO describing [assignable devices](device_assignment.md) (if available) * Reference DT carrying extra information that needs to be passed to the guest VM See [Configuration Data](../pvmfw/README.md#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](https://android.googlesource.com/platform/system/libsysprop/+/refs/heads/main/srcs/android/sysprop/HypervisorProperties.sysprop) for more detail.