rdos wrote:
At the moment, I think BIOS booting is more stable than UEFI booting. I have bootloaders for both BIOS and 32 and 64 bit UEFI, but I still find bugs in UEFI implementations that require me to modify the EFI code. Sometimes the UEFI will not load files properly, and sometimes it will fail to return a memory map (an Intel UEFI BIOS).
In addition to that, some UEFIs will initialize the hardware in strange ways which makes them malfunction if you don't do all the right intializations yourself. For instance, one AMD UEFI will setup AP cores in strange ways that makes them fault on Interrupts. Also, an Intel UEFI had manipulated with processor control registers so I couldn't return to 32-bit mode without additional initialization (managed to fix that).
Also, at the moment, all new PCs still appear to boot correctly with BIOS. Still, it is getting more and more buggy, so you will want to move to UEFI eventually.
Another drawback is that with UEFI, you can no longer change video mode dynamically (unless you have as native video driver), and will need to emulate text mode within a video mode which is painfully slow compared to a real text mode.
When things are so buggy, it's clear that they are just patches.
UEFI is just a fast patch to try to obliterate the existence of the BIOS, which would in turn put an end to the standard PC platform and would leave us with tablet-like machines.
That's why I say that the BIOS should always be the base and have it load UEFI on top of it as a boot manager. The 16-bit BIOS could load another 32 or 64-bit BIOS, and from there we could load UEFI stably.
The BIOS is optimal for the x86 CPU and its peripherals. It's extremely optimized down to a mathematical point, whereas UEFI feels like a random application implemented using only badly-understood legacy pieces of low-level code. It has no mathematical-grade calibration or optimizations for the CPU registers, memory, I/O, etc.
That's why I say that it would be best implemented as something secondary to the BIOS.