The point of
reboot -f is to bypass all the shutdown steps performed by your init system in situations where those steps are failing or expected to fail :-). I strongly recommend against using it outside of that case.
You would be correct to assume that unmounting filesystems in an orderly manner is one such step on
systemd would be a whole different ball of wax, and the effects may vary... Which is another reason you should be wary of poking
reboot -f. It is a rather obscure detail, and clearly you did not find any documented connection between it, and the effect you observed).
AFAICT, the comment in
man 2 reboot which refers to kernel 2.1.122 and the old i386 architecture remains true. At least as of kernel v4.17, and the new unified x86 architecture for both 32- and 64-bit.
Whether the kernel aims for a warm or cold reboot is determined by
reboot_mode. And the only place this is set, is by the
reboot= kernel option e.g.
Given that you care about it and the default does not seem to be documented, the naive first step would be to try specifying that. This looks like a pure boot option, that cannot be changed on a running system.
If you look at the last link, one theoretical possibility is that one of the reboot types in the fallback chain didn't work, after all the other
upstart init scripts have been stopped (or vice versa??). So that invoking
reboot -f manually uses a different reboot type, and it varied in how it respected
reboot_mode. (On your specific system?).
If you are able to report a difference between Linux and Windows reboot behaviour, the kernel developers might well be interested. Though they would be most interested if Linux was completely failing to reboot :). I would want to confirm the above wild guess by recompiling with some printk() and sleep calls and find out what actual reboot types are being used...
There is also the possibility to flail around passing the different reboot types in the boot option. It feels like you'd be making a rather indirect guess... but it seems like passing a specific reboot option is the best hope unless this hairy piece of kernel code can gain some clever fix for your system.