Attempt rebooting via port CF9 if it seems to be available
Looking at doing the port CF9 fallback, I stumbled onto something fishy.
I wonder if anyone here happens to have any idea why we turn off
caching in machine_real_restart()? Jumping to the BIOS is *not* a
reset; we jump to the decompressed BIOS on low memory which is usually
shadowed, not to the BIOS entry point. In that way, it's more of an
INIT than a reset, and disabling caching seems broken.
Either way, here is a preliminary patch to do the CF9 if safe, and then
falling back to keyboard reboot. I'm a bit concerned about how to test
it, of course; this stuff is sensitive and just about impossible to test
except on millions of machines at once...
If you have any machines (especially problematic ones) and find that
this patch either helps or hurts or do nothing, please do let me know so
I have any idea of the extent of coverage.