It is easier to attach a log as a .txt file, then scrollbars are present. Or highlight it and set it as “code”.
Starting at the end of the log:
The above takes 8 seconds to set up the combination of WiFi and virtual ethernet wired networking. None of this even starts until graphical mode is reached. Do you need WiFi? Do you need virtual wired ethernet over USB? This could save about 8 seconds, and occurs long after the bootloader is completely done.
Some of the serial device setup takes about 2 seconds, but I would rarely ever recommend disabling serial unless you have a good reason for it. For serial console, once this is gone, your rescue options in the case of error (and debugging options) are drastically reduced.
Also, do you need the GUI? Does this unit have an attached monitor? Do you use only virtual remote graphics? I’m probably not the person to help optimize graphics boot time, but knowing your particular use case of any local or remote video requirement would help.
About this:
…once mmc1 is ready it moves on to the GPU video display controller. I doubt you could speed this up, but I do see an invalid EDID, which is an i2c protocol query of the monitor over the HDMI cable to ask the monitor what its specs are, and this is failing. Total fail time though is only millisecond range, but this usually leads to questions. If you do have a monitor, and setup is being requested, but setup is failing, then you’ve lost time for no reason. What is your video requirement, both HDMI and remote?
This indicates the system was not shut down correctly, and time was spent avoiding a corrupt filesystem. The recovery does take a tiny amount of time, but incorrectly shut down systems and recovery can end up as a serious problem. At some point recovery can take longer, depending on complexity of the lost data. Overall though, there is no way to “optimize” correction for filesystem corruption…the only way to guarantee no delay is to shut down improperly and to therefore not have a need to repair the filesystem (below is a tiny time slice, but this time slice is unpredictable):