When to improve kernel booting using hibernation , I found kernel initialized each component  took too much time.
One solution is to remove unnecessary module to save time. Another approach is to delay those modules until user space up. Then it won’t lost some features just because hopes to gain benefit on booting speed. This is very useful since hibernation’s trigger point is at the late_initcall . Kernel doesn't need do much module initialize since hibernate will restore those module status later.
The detailed implementation is in the attached patch.
: hibernation is a technique to store system memory content to storage. Then the device can be shutdown and read the content back after power on.
: component means subsystem or driver.
: Consult kernel/power/hibernate.c, software_resume