| # 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](../guest/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, e.g.: | |
| * Hashtree digest of the | |
| [microdroid-vendor.img](microdroid_vendor_modules.md#changes-in-abl). | |
| See [Configuration Data](../guest/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. | |