H. Peter Anvin said:
I have a bit of a soft spot for OpenFirmware; it is relatively simple
and has been tested for a long time, but it is not widely used in the
x86 world and even where it is it has some issues.
Maybe its my perspective, but, WOW, are you kidding? Openfirmware at a
1000ft level seems great, but it failed in one of its primary goals (to
allow cross platform card firmware). It quickly became a case of write
once, debug everywhere, or just write multiple copies due to
incompatibilities between implementations. This was in my view because
the standard wasn't specific enough in all the places that counted and
failed to account for real hardware interaction.
For example, there isn't a way to create an interrupt handler. So,
everything was polled, this quickly lead to a whole host of problems
from ethernet adapters that couldn't boot a system faster than 10MB/sec
to openfirmware prompts that dropped characters when large text buffers
were pasted over RS232 ports running at fast baud rates. (we could blame
some of this on lack of task switching and therefore processing
methodologies, but the result was the same).
IMHO openfirmware appears to work because 3rd party devices are
extremely rare on the computers that use openfirmware. This is the same
reason EFI even pretends to work.
I could go on about openfirmware but I won't.
<rant>
Frankly I'm firmly in the camp that can't quite figure out whats wrong
with PC BIOS. Sure, its got some seriously legacy issues, but from where
I stand it seems its only true failings are in places where the related
standards are complex/poorly defined and the quality of the
implementations aren't so good. IMHO the replacements all suffer from a
case of creating a complex mess which will only lead to more pain in a
time period shorter than BIOS has been around. Frankly, there seems a
lot of "Not Invented Here" happening because a truly KISS replacement
would probably look shockingly like BIOS.
Of course, then we wouldn't be able to throw away the last vestages of
(expired patent) hardware standards created by the XT/AT series.
Hardware standards which probably consume far less than 1% of the area
of a modern device. Trading that hardware instead, for a never ending
set of driver bugs, conflicts and a black hole of unknowns (due to
unpublished hardware specifications) which make it nearly impossible to
guarantee that you can actually get your PC to boot with a given
hardware configuration. Shit, I still have to use PS2 keyboards, RS-232
ports etc on my PC's. This is because when the crap hits the fan what
can I depend on to work when the kernel debugger pops? No, not the USB
keyboard stack, or the TCP/IP stack, but rather the lowly RS-232 port
which can be programmed with a half dozen assembly instructions and
works on every PC with an actual 8250 emulation mode. Hell, the 8042
based interface of the PS2 port (which actually works better in modern
computers due to S3 type power saving states than USB!) and CGA/MDA text
modes again just tend to work because the bugs were worked out 25 years
ago.
</rant>