Qualcomm Exploring Bootloader-Based Hibernation For Linux
Qualcomm engineers are exploring bootloader-based hibernation in order to improve the user experience when restoring from a hibernated state.
Being motivated around requirements within automotive use-cases, Qualcomm is proposing bootloader-based hibernation as a means of more quickly restoring a Linux system after leaving the hibernated state with cutting down the time until there is a picture on the screen. This is another example of Linux being adapted for stringent requirements around automobiles such as the maximum time a system can boot before needing cameras activated.
Here's the meat of their proposed bootloader-based hibernation and initial Linux kernel patches sent out:
This patch series working out boot-loader based hibernation for Linux currently amounts to just over 200 lines of new kernel code. Currently this proposal is under a "request for comments" to see where it leads.
Being motivated around requirements within automotive use-cases, Qualcomm is proposing bootloader-based hibernation as a means of more quickly restoring a Linux system after leaving the hibernated state with cutting down the time until there is a picture on the screen. This is another example of Linux being adapted for stringent requirements around automobiles such as the maximum time a system can boot before needing cameras activated.
Here's the meat of their proposed bootloader-based hibernation and initial Linux kernel patches sent out:
Automotive usecases require better boot KPIs, Hence we are proposing a bootloader based hibernation restore. Purpose of bootloader based hibernation is to improve the overall boot time till the first display frame is seen on the screen or a camera application can be launched from userspace after the power on reset key is pressed. This RFC patchset implements a slightly tweaked version of hibernation in which the restoration of an older snapshot into DDR is being carried out from the bootloader (ABL) itself, by doing this we are saving some time (1 second measured on msm-4.14 Kernel) by not running a temporary kernel and figuring out the hibernation image at late_init() In order to achieve the same bootloader checks for the hibernation image at a very early stage from swap partition, it parses the image and
loads it in the DDR instead of loading boot image form boot partition. Since we are not running the temporary kernel,which would have done some basic ARM related setup like, MMU enablement, EL2 setup, CPU setup etc, entry point into hibernation snapshot image directly from bootloader is different, on similar lines, all device drivers are now re-programming the IO-mapped registers as part of the restore callback (which is triggered from the hibernation framework) to bring back the HW/SW sync.
This patch series working out boot-loader based hibernation for Linux currently amounts to just over 200 lines of new kernel code. Currently this proposal is under a "request for comments" to see where it leads.
4 Comments