2.1 System BIOS POST Requirements
In order to achieve the goals of Plug and Play, the system BIOS POST is responsible for achieving the requirements listed below:
- Maintain ISA POST compatibility
The important issue of this broad requirement is that a Plug and Play system BIOS is responsible for the same POST requirements of an existing PC compatible system BIOS. This document focuses only on the enhancements necessary to a PC compatible system BIOS and assumes that the basic BIOS POST initialization is still performed.
- Configuration of all static devices known to system BIOS
At a minimum, this includes system board devices. It can also include Plug and Play ISA Cards and devices located on EISA, ISA, PCI, or any of the other static bus architectures available. How this configuration is completed will be described in a later section.
- BIOS POST Resource arbitration
The system BIOS must now be aware of system resource usage. Using the information provided through runtime services (described in a later section), along with resource information known to the system BIOS, critical resource conflicts can be avoided. Loading the operating system with a conflicting device disabled is better than causing a resource conflict and a possible system failure.
- Initialization of the Initial Program Load (IPL) device
It is the responsibility of the system BIOS POST to make sure that resources for the IPL device get allocated correctly in anticipation of a successful load of the operating system. If "disabled" IPL devices are needed to achieve boot, then the system BIOS POST should take the initiative to reenable "disabled" IPL devices in an intelligent sequence to provide the best opportunity for system boot.
- Support for both Plug and Play and Non-Plug and Play Operating Systems
The Plug and Play system BIOS POST must configure the system to operate with both Plug and Play aware, as well as non-Plug and Play operating system. In non-Plug and Play environments, either the system BIOS or the appropriate system software (device drivers) must configure all devices (Plug and Play ISA Cards, PCI devices, etc.). This will allow all environments to load exactly as they would on a standard PC compatible systems. However, in a Plug and Play environment, the system BIOS can now assist the operating system to perform features such as runtime configuration of system board devices and event recognition when system board devices have changed.
2.1.1 System Board Storage Requirements
Adding optional static resource allocation capabilities to the Plug and Play BIOS POST procedure will require additional storage. This storage is necessary for maintaining information about system resources that have been explicitly assigned to the boot devices as well as the system resources being utilized by ISA devices in the system. The amount of storage that will be necessary is platform specific, but could exceed the amount of storage normally available in PC compatible systems.
If the static resource allocation option is implemented, then the system BIOS is required to follow the function interface defined later in this document. This interface provides the mechanism for system software to specify the information about these system resources. How the information is actually stored in the nonvolatile storage on the system is left up to the BIOS implementor.
This new storage must be readily available and dependable during the system BIOS POST for the system BIOS to provide effective resource allocation. The type of storage, which can be either Flash, CMOS, NVRAM, or some other type of nonvolatile storage, and the amount of additional storage needed will vary depending on the systemboard requirements. It is left to the systemboard manufacturer to make available additional storage to the system BIOS, and the BIOS suppliers responsibility to manage and allocate this nonvolatile storage.
2.1.2 System BIOS Resource Management
A key element of a Plug and Play BIOS is to provide accurate resource management. Management of system resources, which includes DMA, IRQs, I/O, and Memory, is vital to a system BIOS POST if it is to guarantee successful loading of the operating system. Unfortunately, there is no clear defined procedure for how these system resources should be allocated by the system BIOS. This section will describe how the system BIOS POST can manage resources and will outline the different methods that can be used to allocate the system resources.
2.1.3 Isolating Committed Resources
The first step to resource management is to determine system resources that are statically allocated to devices in the system. These resources can be located on ISA cards, systemboard devices, or any other device present in the system. Unfortunately, it is very difficult, if not impossible, to accurately determine the resources used, unless these devices provide information about the system resources they will use.
With this in mind, it is necessary for an external program to help isolate the resources that these devices are using. How this external program determines the resources consumed by these devices is beyond the scope of this document. However, what is within the scope is the interface that the system BIOS provides to indicate resources that are allocated to the ISA devices.
Function 09h, Set Statically Allocated Resource Information, of the runtime services is designed to support an external program that can indicate the resources that are allocated to the static ISA devices in the system. Through this interface, the system resources utilized by these ISA devices will be saved in nonvolatile storage. This will allow the system BIOS to ensure the configuration of the boot devices in the system do not conflict with any static ISA devices during the POST configuration process.
2.1.4 System BIOS Resource Allocation
There are three fundamental methods that the system BIOS POST can use to allocate resources to devices. They are:
Static Resource Allocation - Allocate resources based on the last working configuration of the system. This requires that the resources assigned to specific devices in the system be saved in nonvolatile storage on the system. This configuration information must be accessible to the system BIOS during POST. The interface and format for storing the resource information explicitly assigned to every device in the system may be stored in an OEM specific format or it may follow the Extended System Configuration Data (ESCD) format. Refer to the ESCD Specification for a complete description of the ESCD and its interfaces. The ESCD interface provides a mechanism for allowing system software the ability to lock the system resources allocated to specific devices in the system. This will allow the configuration of devices to remain consistent between operating sessions.
Dynamic Resource Allocation - Dynamically auto-configure the systemboard and Plug and Play devices in the system. At a minimum, the system BIOS must ensure that only the primary boot devices are properly configured to boot the system software. When loaded, the system software is responsible for dynamically configuring all remaining devices. Depending on the system's architecture, the BIOS may have to implement Function 09h, Set Statically Allocated Resource Information, to guarantee a conflict free boot device configuration.
Combined Static and Dynamic Resource Allocation - Allocating resources based on the configuration information specified for the last working configuration for the system, as well as dynamically configuring the Plug and Play devices in the system, which were not specified in the last working configuration resource information.
A system BIOS can use any one of these methods for allocating system resources to the devices in the system. What is important for each of these methods to work successfully is an accurate accounting of the committed resources used in the system. It is important to note that the primary responsibility for system BIOS resource allocation is to ensure that the primary boot devices are configured properly to boot the Plug and Play operating system. If the Plug and Play system BIOS chooses to only configure the primary boot devices, the appropriate system software or Plug and Play operating system will be responsible for configuring any unconfigured devices.
Static Resource Allocation
This method assumes that the system software has specified the appropriate resource configuration information to the system BIOS for ALL devices in the system. As mentioned above, it is an option that the system BIOS interface, for allowing system software to provide the last working configuration information to the system BIOS, follows the Extended System Configuration Data (ESCD) format.
Once this information has been saved by the system BIOS, this information is used by the BIOS during POST to allocate resources to all of the configurable devices that are known to the system BIOS.
There are certain benefits that can be realized by supporting Static Resource Allocation. First, the configuration of every device in the system is saved in nonvolatile storage which allows the BIOS to allocate the appropriate resources to the devices in the system during POST. This allows the last working configuration to be maintained from boot to boot. Another benefit comes from the ability to explicitly assign, or lock, the resources allocated to any Plug and Play card in the system. Static resource allocation will require nonvolatile storage on the system for storing the resource allocation for each device in the system.
Example: The EISA architecture is an example of an architecture which uses static resource allocation. The EISA configuration utility is responsible for determining device resource allocations, then storing that information for the BIOS. Upon initialization, the system BIOS accesses the stored device configurations and subsequently programs each device accordingly. The system BIOS does not perform any conflict detection or resolution.
Dynamic Resource Allocation
The method for dynamic resource allocation is for the system BIOS POST to dynamically allocate resources to configurable devices using a procedure considered most desirable or effective to the system BIOS. This method usually needs to know what resources are being used by static (old ISA) devices in the system to work successfully. The system resources allocated to the static devices are registered with the system BIOS through function 09h, Set Statically Allocated Resource Information, of the runtime services.
The primary benefits of dynamic resource allocation are the minimal amount of nonvolatile storage required and the flexibility in resource allocation provided to the Plug and Play devices installed in the system. As mentioned above, the system BIOS needs to know the system resources being used by the static devices for effective dynamic resource allocation. The system software must provide this information through the Set Statically Allocated Resource Information function.
Example: An example of a system which supports dynamic resource allocation is one where the system BIOS only stores information regarding static ISA devices (assuming that this information is supplied by a configuration utility). Using this stored information, a system BIOS could use semi-intelligent algorithms to configure the Plug and Play devices "around" the static ISA devices. Such a configuration is dynamic because it is determined each time the system boots.