Appendix B: Device Driver Initialization Model
Please Note: The Device Driver Initialization Model (DDIM) is provided as an extension of the current option ROM model. Current bus devices cannot be guaranteed that the systems in which they are installed will support DDIM. Therefore, current bus device Option ROMs (ISA, EISA, MCA, PCMCIA) must support the standard initialization model, and may optionally support the DDIM. The Option ROM may determine if it is being initialized using a DDIM by attempting to write to, and read back from his data space. If the Option ROM can successfully write to its data space, then it should support a DDIM initialization. Otherwise, it must perform a standard initialization.
As of this writing, the PCI architecture is the only architecture wherein Option ROMs are guaranteed support for DDIM.
In an effort to reduce the amount of UMB (Upper Memory Block) space consumed by add-in Option ROMs, and to more efficiently use the available UMB space, Plug and Play Option ROMs should support the Device Driver Initialization Model (DDIM).
Under this model, all Option ROMs installed in a Plug and Play system which indicate that they support DDIM will be copied into RAM by the System BIOS. The System BIOS will then execute a FAR CALL into the device's initialization vector.
Devices which support DDIM may then initialize themselves, update their RAM image with static Data (if necessary), and then discard the initialization code, by updating the length byte at offset 3h and recalculating their checksum. The System BIOS will then initialize the next DDIM ROM by copying it to RAM on the next 2 KB boundary following the end of the most recently initialized DDIM ROM (or in the next available UMB which is large enough to contain both the Runtime and Initialization code of the DDIM ROM).
Once all DDIM Option ROMs have been initialized, the System BIOS will Write Protect the RAM images and proceed with the boot process.
Flow:
System BIOS copies the DDIM Option ROM Copy to RAM
System BIOS executes a FAR CALL to Initialization Vector
Option ROM initializes the device
Option ROM updates any static data structures
Option ROM updates the ROM Length and Check sum
Option ROM returns to the System BIOS with Return Status
System BIOS Write Protects RAM image of ROM.
Advantages:
- Provides more efficient use of Upper Memory Blocks. Initialization code may be discarded.
- Provides a seamless mechanism whereby Option ROMs may be copied to RAM
- Provides Option ROMs with a means of storing Static Data Structures built at boot time.
- Allows board vendors to use lower performance ROM devices (on buses that are guaranteed to support this architecture - PCI).