Android device kernels must enable the kernel Device tree support in the kernel must be enabled and bootloaders must pass the hardware description in the form of device tree to the kernel (unless the platform supports ACPI).
The device tree must also be available for Android to read and be able to pass vendor/odm specific parameters to Android. Android 8.0 recommends any board–specific kernel functionality to be in the form of loadable kernel modules and device–tree overlays.
This sets up the kernel and Android such that Original Device Manufacturers (ODMs) and Original Equipment Manufacturers (OEMs) can work in isolated board–specific trees for board–specific features, drivers, etc., enabling them to override common kernel configuration, add new drivers in the form of kernel modules, etc.
When the module is loaded, the values for the symbols used by the module are compared with the ones in the kernel.
If the values match, the module is loaded; otherwise the load fails.
In the future, we want to move towards a single binary distribution of kernel per-So C.
To make updating to newer kernel versions much easier and almost automatic, and to provide a more secure and reliable platform for ODMs to build a product with, it is strongly recommended that So C vendors work to upstream their kernel changes and get them accepted into the main repository.The proposed model for a common So C kernel addresses problems created by upmerging changes (So C-specific bug fixes, LTS upgrades, security fixes, etc.).