5 ways to reboot a PC. None of them reliable.
mjg59.livejournal.com
mjg59.livejournal.com
Method 7: return to 16-bit mode, set cs to 0xf000 and jump to 0xfff0.
Linux used to use method 6, but it wasn't reliable either. Something tells me returning to 16-bit mode might not be possible for some hardware / driver combinations.
Tried to get an OS on a PC to soft-reboot, failed, because it is not actually possible to return all hardware to the reset state in some cases - they have an initial power-on state and once programmed can never return there unless hard-reset.
And why does the BIOS require hardware in the hard-reset state? Because a BIOS is never tested in a soft-reset scenarios, because Windows doesn't require it. And "if you haven't tried it, it doesn't work".
This article provides a good explanation for why that behavior was necessary.
But since it's not mentioned in the topic, it's going to come up. Personally I use a batch file and SysInternals to shutdown (after forcing bad-behavior apps to exit).
Sounds like you need a SysInternals for Linux??
This article is about rebooting, as in resetting all the hardware without turning off the power. The original IBM PC had a well defined way to do this, but after decades of clones and clones of clones there's no longer any one method that's guaranteed to work on any machine.
So for all practical purposes, the behaviour is standardised. It's just embodied in the behaviour of Windows rather than anywhere useful.
I guess this was the point of your article though.
So hardware vendors might test a "standard" reboot, where nothing is broken, and the OS is in a stable state. Unfortunately, that probably isn't the case where most required reboots occur.
Are they probing the hardware at install time? Do they just have a "table of things to try" the first time you reboot and then use the "successful thing" from then on?
I imagine even the Commodore 16 could reboot itself reliably.