1# Android Bootloader (ABL) 2 3[ABL](https://source.android.com/docs/core/architecture/bootloader) is not a component of AVF, but 4it plays a crucial role in loading the necessary AVF components and initializing them in a correct 5way. This doc explains the responsibilities of ABL from the perspective of AVF. 6 7## pVM firmware (pvmfw) 8 9ABL is responsible for the followings: 10 11* locating pvmfw binary from the pvmfw partition, 12* verifying it as part of the [verified 13 boot](https://source.android.com/docs/security/features/verifiedboot) process, 14* loading it into memory, and 15* describing the region where pvmfw is loaded using DT and passing it to hypervisor. 16 17See [ABL Support](../pvmfw/README.md#android-bootloader-abl_support) for more detail. 18 19ABL is also responsible for constructing the pvmfw configuration data. The data consists of the 20following info: 21 22* DICE chain (also known as BCC Handover) 23* DTBO describing [debug policy](debug/README.md#debug-policy) (if available) 24* DTBO describing [assignable devices](device_assignment.md) (if available) 25* Reference DT carrying extra information that needs to be passed to the guest VM 26 27See [Configuration Data](../pvmfw/README.md#configuration-data) for more detail. 28 29## Android 30 31ABL is responsible for setting the following bootconfigs describing the status and capabilities of 32the hypervisor. 33 34* `androidboot.hypervisor.version`: free-form description of the hypervisor 35* `androidboot.hypervisor.vm.supported`: whether traditional VMs (i.e. non-protected VMS) are 36 supported or not 37* `androidboot.hypervisor.protected_vm.supported`: whether protected VMs are supported or not 38 39Thee bootconfigs are converted into system properties by the init process. 40 41See 42[HypervisorProperties.prop](https://android.googlesource.com/platform/system/libsysprop/+/refs/heads/main/srcs/android/sysprop/HypervisorProperties.sysprop) 43for more detail. 44 45 46 47 48 49 50 51 52 53 54