A tale of reusability in coreboot


Chrome OS has gained a lot of popularity in the EDU market. Recently, it has started expanding to consumer segment with devices like Google Pixelbook, HP Chromebook X2 detachable, Samsung Chromebook Pro and much more. All the Chrome OS devices (except a few early ones) use coreboot as their machine initialization routine irrespective of the underlying hardware architecture (x86, ARM, ARM64, MIPS). With more and more OEMs coming onboard, there is always a race to build and ship these devices at a quick pace. Google follows a reference model scheme to allow OEMs to pick a validated platform and add their customizations on top of it. This presents an excellent opportunity to reuse a significant portion of the work that is done for a reference platform across multiple devices. In order to provide reusability of components within coreboot, some features have been implemented over time. This talk provides an overview of the reusability features within coreboot including SSDT generation, variant structure, device tree override and more. It also presents currently unsolved challenges that can greatly reduce the time and effort required to add new devices to coreboot.