VBIOS Device Driver

The VBIOS virtual device driver is like any other base virtual device driver except that it is loaded before any other virtual device drivers. This driver is loaded and initialized first, so that other virtual device drivers can use services provided by VBIOS.

The system BIOS reserves physical memory for the interrupt vector table, ROM and EBIOS data areas. This reservation is done by an indication in the arena info data structure passed to the kernel. These physical pages are treated as "unavailable" by the virtual memory manager.

During virtual device driver initialization, the physical interrupt vector table and ROM data area (previously allocated/reserved by the BIOS) are mapped with the VDHMapMem() function. VBIOS also installs hooks which cause its own VDM creation handler to be invoked, and an I/O hooking routine to be invoked when all virtual device drivers have been initialized for a particular VDM.

Space is also reserved for the EBIOS data area (if the machine is a PS/2) and the system ROM linear address ranges. This allows virtual device drivers to use and modify this information globally (affecting all VDMs created thereafter).

The following steps are taken when initializing the BIOS for a newly created VDM:

  • Map the CBIOS system area to the VDM address space, using the VDHMapMem() service.
  • Allocate memory for the interrupt vector table and ROM BIOS data area.
  • Map and copy the physical interrupt vector table and ROM BIOS data area into the VDMs linear address space.
  • Allocate memory for the extended BIOS data area in the VDM's linear address space (only on PS/2s).
  • Map and copy the physical extended BIOS data area into the linear address space.

    When VBIOS's VDM_CREATE_DONE handler is called (after all virtual device drivers' VDM_CREATE handlers have been invoked), VBIOS attempts to install I/O hook routines for the serial and parallel ports COMx and LPTx. These hook routines will take effect only if the virtual COM device driver or the virtual printer device driver have not successfully hooked the I/O ports. VBIOS I/O hook routines are used only to display pop-up messages when the device is not virtualized, and to terminate the VDM on user request.


    [Back: Standard Virtual Device Drivers]
    [Next: Virtual CMOS Device Driver]