Dhaval Sharma
I have been part of semiconductor industry since 2004 as a BIOS engineer at Intel and still enjoying it as Firmware Engineer at Rivos! Got opportunity to work on Notebook, Servers and embedded platforms as Firmware architect and developer. During my stints as Coreboot engineer and later as RISC-V engineer I realised power of open source and became one of the contributors in my limited capacity.
India
Rivos Inc
Session
The Universal Payload Specification (UPL) defines a standardized interface between the Platform Initialization (bootloader) phase—which sets up system hardware—and the Payload phase. In the context of boot firmware, the Payload is the component responsible for initializing the boot media and launching the operating system. The Universal Payload is designed to be both platform-independent and bootloader-independent, enabling a single payload implementation to work across diverse hardware and firmware environments.
UPL specifies how to format and pass parameters to the Payload, ensuring interoperability between spec-compliant bootloader and Payload stages. This approach allows Payloads to be distributed independently of board firmware, and by formalizing these interfaces, UPL aims to accelerate board bring-up and simplify the integration of open-source firmware components.
This paper will:
- Highlight the need for a universal contract, illustrated with real-world examples from ARM, x86, and RISC-V devices.
- Detail UPL’s table-driven boot flow and its compatibility with existing device tree and FIT tooling.
- Present implementation experience reports for RISC-V platforms using Tianocore as a payload, as well as x86 platforms with SBL and Tianocore.
We conclude that:
The Universal Payload Specification has the potential to become a foundational element for a fully open, reusable, and verifiable firmware ecosystem, and we outline the remaining challenges and future milestones on this path.
Link to the spec:
https://universalpayload.github.io/spec/
Upstreamed patches for reference:
https://github.com/tianocore/edk2/tree/master/UefiPayloadPkg