3.6 Error Recovery: Returning to the Boot flow
In the current boot model for standard PC compatible systems, once the system BIOS turns control over to the Initial Program Load (IPL) device's boot sector, there is no way for the boot sector to return control to the system BIOS in the event that an OS loader is not present on the disk, or the IPL fails for some other reason. In the Plug and Play Boot model, an attempt is made to correct this.
When $PnP option ROM cards are called through the initialization vector at ROM scan they should not take any vectors or modify system RAM in any way. When the $PnP BIOS selects a device to be the IPL device, the BIOS calls that device through the BOOT_CONNECTION_VECTOR or BOOTSTRAP ENTRY VECTOR. During these calls the device can take appropriate vectors and modify memory. If the device determines that it is incapable of IPL it should restore the resources it modified then return to the $PnP BIOS using INT18 or INT19.
When a legacy card captures INT13 or INT19 the $PnP BIOS should give it boot preference over all of the other $PnP boot devices that are found. It is suggested that the BIOS does not re-capture the INT19 vector. Legacy cards are given priority because the OPROM scan gives them control and it is very difficult to control how these cards affect the system by taking vectors and modifying the BIOS Data Area.
As an alternative, the system BIOS could preserve the interrupt table and stack, plus re-capture INT19 prior to passing control to the IPL device. Critical data could be stored in the POST stack area (3000h-3fffh), the Extended BIOS Data Area or shadow RAM. If the selected IPL device executes INT18 or INT19 to report an error the $PnP BIOS could replace the environment that was saved and go on to the next boot device.
The $PnP option ROM must execute INT18 or INT19 error path in real mode.