throbber
Compaq Computer Corporation
`Phoenix Technologies Ltd.
`Intel Corporation
`
`BIOS Boot Specification
`
`Version 1.01
`January 11, 1996
`
`This specification has been made available to the public. You are hereby granted the right to use,
`implement, reproduce, and distribute this specification with the foregoing rights at no charge. This
`specification is, and shall remain, the property of Compaq Computer Corporation (“Compaq”),
`Phoenix Technologies Ltd (“Phoenix”), and Intel Corporation (“Intel”).
`
`NEITHER COMPAQ, PHOENIX NOR INTEL MAKE ANY REPRESENTATION OR
`WARRANTY REGARDING THIS SPECIFICATION OR ANY PRODUCT OR ITEM
`DEVELOPED BASED ON THIS SPECIFICATION. USE OF THIS SPECIFICATION FOR
`ANY PURPOSE IS AT THE RISK OF THE PERSON OR ENTITY USING IT. COMPAQ,
`PHOENIX AND INTEL DISCLAIM ALL EXPRESS AND IMPLIED WARRANTIES,
`INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
`MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND FREEDOM FROM
`INFRINGEMENT. WITHOUT LIMITING THE GENERALITY OF THE FOREGOING,
`NEITHER COMPAQ, PHOENIX NOR INTEL MAKE ANY WARRANTY OF ANY KIND
`THAT ANY ITEM DEVELOPED BASED ON THIS SPECIFICATION, OR ANY PORTION
`OF IT, WILL NOT INFRINGE ANY COPYRIGHT, PATENT, TRADE SECRET OR OTHER
`INTELLECTUAL PROPERTY RIGHT OF ANY PERSON OR ENTITY IN ANY COUNTRY.
`
`1
`
`AMI/MSI/GBT EX 1006
`IPR of Pat. No. 6,282,641
`
`

`
`Table of Contents
`
`1.0 INTRODUCTION 5
`
`1.1 REVISION HISTORY
`1.2 RELATED DOCUMENTS
`1.3 PURPOSE
`1.4 TERMS
`
`5
`5
`5
`6
`
`2.0 OVERVIEW 9
`
`2.1 DESCRIPTION
`
`9
`
`3.0 IPL DEVICES 10
`
`3.1 REQUIREMENTS FOR IPL DEVICES
`3.1.1 IPL TABLE
`3.1.2 PRODUCT NAME STRING
`3.2 BAIDS
`3.3 DEVICES WITH PNP EXPANSION HEADERS
`3.4 LEGACY IPL DEVICES
`3.5 IDENTIFYING IPL DEVICES
`3.5.1 BAIDS
`3.5.2 PNP EXPANSION HEADER
`3.5.3 PCI DEVICES
`3.5.4 IDENTICAL IPL DEVICES
`
`10
`10
`11
`11
`11
`12
`13
`14
`14
`14
`15
`
`4.0 IPL PRIORITY 16
`
`4.1 MAINTAINING THE IPL PRIORITY
`4.2 IPL PRIORITY PSEUDOCODE
`
`16
`18
`
`5.0 BCV PRIORITY 19
`
`5.1 INTRODUCTION
`5.2 INT 13H DEVICE CONTROLLERS
`5.2.1 ATA DRIVE SUPPORT IN THE BIOS
`5.2.2 PNP CARDS WITH BCVS
`5.2.3 LEGACY CARDS WITH OPTION ROMS
`5.2.4 HARD DRIVE BAID
`5.2.5 CONTROLLER INSTALLATION GUIDELINES
`5.2.6 NOTES ON INT 13H DEVICES
`5.3 INSTALLATION ORDERING
`5.4 POST PSEUDOCODE
`
`2
`
`19
`19
`19
`20
`20
`20
`20
`21
`21
`23
`
`2
`
`

`
`6.0 POST SEQUENCE 24
`6.0 POST SEQUENCE
`24
`
`6.1 POWER-ON INITIALIZATION
`6.1 POWER-ON INITIALIZATION
`6.1.1 INITIALIZING BAIDS
`6.1.1 INITIALIZING BAIDS
`6.1.2 PNP BOOT DEVICES
`6.1.2 PNP BOOT DEVICES
`6.2 PNP OPTION ROM INITIALIZATION
`6.2 PNP OPTION ROM INITIALIZATION
`6.3 CHECK IPL PRIORITY AND BCV PRIORITY
`6.3 CHECK IPL PRIORITY AND BCV PRIORITY
`6.4 INT 13H DEVICE CONTROLLER INSTALLATION
`6.4 INT 13H DEVICE CONTROLLER INSTALLATION
`6.4.1 BOOT CONNECTION VECTORS
`6.4.1 BOOT CONNECTION VECTORS
`6.4.2 DISCONNECT VECTOR
`6.4.2 DISCONNECT VECTOR
`6.4.3 LEGACY ROM SCAN
`6.4.3 LEGACY ROM SCAN
`6.4.4 ON-BOARD ATA SUPPORT
`6.4.4 ON-BOARD ATA SUPPORT
`6.5 INT 19H PROCESSING
`6.5 INT 19H PROCESSING
`6.5.1 BOOTING FROM BAIDS
`6.5.1 BOOTING FROM BAIDS
`6.5.2 BOOTING FROM BEVS
`6.5.2 BOOTING FROM BEVS
`6.6 INT 19H PSEUDOCODE
`6.6 INT 19H PSEUDOCODE
`6.7 INT 18H PSEUDOCODE
`6.7 INT 18H PSEUDOCODE
`6.8 NOTES ON THE POST PROCESS
`6.8 NOTES ON THE POST PROCESS
`
`24
`24
`24
`24
`24
`24
`24
`24
`25
`25
`25
`25
`26
`26
`26
`26
`27
`27
`27
`27
`27
`27
`29
`29
`29
`29
`30
`30
`30
`30
`31
`31
`
`APPENDIX A: DATA STRUCTURES 32
`APPENDIX A: DATA STRUCTURES
`32
`
`A.1 IPL TABLE AND BCV TABLE ENTRY DATA STRUCTURE
`A.1 IPL TABLE AND BCV TABLE ENTRY DATA STRUCTURE
`A.2 PNP OPTION ROM HEADER
`A.2 PNP OPTION ROM HEADER
`A.3 PNP EXPANSION HEADER
`A.3 PNP EXPANSION HEADER
`A.4 PCI DATA STRUCTURE
`A.4 PCI DATA STRUCTURE
`
`32
`32
`33
`33
`33
`33
`33
`33
`
`APPENDIX B: RUN-TIME FUNCTIONS (OPTIONAL) 34
`APPENDIX B: RUN-TIME FUNCTIONS (OPTIONAL)
`34
`
`FUNCTION 60H - GET VERSION AND INSTALLATION CHECK
`FUNCTION 60H - GET VERSION AND INSTALLATION CHECK
`FUNCTION 61H - GET DEVICE COUNT
`FUNCTION 61H - GET DEVICE COUNT
`FUNCTION 62H - GET PRIORITY AND TABLE
`FUNCTION 62H - GET PRIORITY AND TABLE
`FUNCTION 63H - SET PRIORITY
`FUNCTION 63H - SET PRIORITY
`FUNCTION 64H - GET IPL DEVICE FROM LAST BOOT
`FUNCTION 64H - GET IPL DEVICE FROM LAST BOOT
`FUNCTION 65H - GET BOOT FIRST
`FUNCTION 65H - GET BOOT FIRST
`FUNCTION 66H - SET BOOT FIRST
`FUNCTION 66H - SET BOOT FIRST
`
`35
`35
`36
`36
`37
`37
`38
`38
`39
`39
`40
`40
`41
`41
`
`APPENDIX C: BOOT MENU (OPTIONAL) 42
`APPENDIX C: BOOT MENU (OPTIONAL)
`42
`
`C.1 BOOT MENU POP-UP
`C.1 BOOT MENU POP-UP
`C.2 BOOT MENU INT 19H PSEUDOCODE
`C.2 BOOT MENU INT 19H PSEUDOCODE
`C.3 BOOT FIRST RUN-TIME FUNCTIONS
`C.3 BOOT FIRST RUN-TIME FUNCTIONS
`
`42
`42
`42
`42
`42
`42
`
`APPENDIX D: RECOMMENDED BOOT SECTOR CHANGES (OPTIONAL) 43
`APPENDIX D: RECOMMENDED BOOT SECTOR CHANGES (OPTIONAL)
`43
`
`D.1 USE DL FOR DRIVE NUMBER
`D.1 USE DL FOR DRIVE NUMBER
`
`43
`43
`
`3
`(db)
`
`3
`
`

`
`D.2 INT 18H ON BOOT FAILURE
`D.2 INT 18H ON BOOT FAILURE
`
`43
`43
`
`APPENDIX E: PCI WITH MULTIPLE PNP HEADERS (OPTIONAL) 44
`APPENDIX E: PCI WITH MULTIPLE PNP HEADERS (OPTIONAL)
`44
`
`E.1 DESCRIPTION
`E.1 DESCRIPTION
`E.2 REQUIREMENTS
`E.2 REQUIREMENTS
`E.3 OPTION ROM INITIALIZATION
`E.3 OPTION ROM INITIALIZATION
`E.3.1 BEFORE OPTION ROM PLACEMENT
`E.3.1 BEFORE OPTION ROM PLACEMENT
`E.3.2 PLACING THE PCI OPTION ROM
`E.3.2 PLACING THE PCI OPTION ROM
`E.3.3 CALLING THE PCI OPTION ROM
`E.3.3 CALLING THE PCI OPTION ROM
`E.3.4 NO DEVICES PRESENT
`E.3.4 NO DEVICES PRESENT
`E.3.5 DEVICES ARE PRESENT
`E.3.5 DEVICES ARE PRESENT
`E.4 ENUMERATING PNP EXPANSION HEADERS
`E.4 ENUMERATING PNP EXPANSION HEADERS
`E.5 CALLING THE BCVS
`E.5 CALLING THE BCVS
`
`44
`44
`44
`44
`44
`44
`44
`44
`44
`44
`45
`45
`45
`45
`45
`45
`46
`46
`46
`46
`
`4
`-l>-5
`
`4
`
`

`
`1.0 Introduction
`
`1.1 Revision History
`
`Version Changes
`0.80
`Original version.
`0.81
`Grammatical corrections.
`1.00
`Finalized for public release.
`1.01
`Added the BiosSelector parameter to the run-time functions.
`Moved run-time functions 65h and 66h from Appendix C to Appendix B.
`Cleaned up documentation on the run-time functions.
`
`You may obtain the latest copy of the BIOS Boot Specification from the Phoenix
`world wide web site at http://www.ptltd.com, or by contacting a representative from
`one of the authoring companies.
`
`Technical Editor:
`
`Scott Townsend
`Phoenix Technologies Ltd.
`2575 McCabe Way
`Irvine, CA 92714
`Phone:(714) 440-8000
`Fax:
`(714) 440-8300
`Email: Scott_Townsend@ptltd.com
`
`1.2 Related Documents
`
`Title
`Plug and Play BIOS Specification
`Hardware Design Guide for Microsoft Windows 95
`Enhanced Disk Drive Specification
`“El
`Torito” Bootable CD-ROM
`Specification
`PCI Local Bus Specification
`
`Format
`
`Version
`1.0A
`1.0
`1.1
`1.0
`
`Author
`Compaq/Phoenix/Intel
`Microsoft Corporation
`Phoenix
`Phoenix/IBM
`
`2.1
`
`PCI Special Interest Group
`
`1.3 Purpose
`
`The purpose of this specification is to describe a methodology by which the BIOS will
`identify all IPL (Initial Program Load) devices in the system, prioritize them in the
`order the user selects, and then sequentially go through each device and attempt to
`boot. The BIOS must become more intelligent about booting because the Plug and
`Play BIOS Specification places additional requirements on the BIOS during the boot
`process, and there are now more devices that are bootable such as CD-ROM, network
`remote boot, PCMCIA, etc. It is important that this specification define a boot scheme
`that is generic and flexible enough to allow booting from virtually any existing IPL
`device, and for the definition of future IPL devices as well.
`
`5
`
`5
`
`

`
`1.4 Terms
`
`To avoid confusion and to be consistent with the Plug and Play BIOS Specification,
`definitions of some of the terminology used in this document are listed below.
`
`ATA
`An Advanced Technology Attachment drive, also known as an IDE drive, is a hard
`drive with the interface built-in.
`
`ASCIIZ
`An ASCIIZ string is simply a string of ASCII characters terminated by a NULL (0
`byte).
`
`BAID
`A BIOS Aware IPL Device is any device that can boot an O/S, but requires the BIOS
`to have specific code to support it. Some examples are: the first floppy drive, the first
`hard drive, ATAPI CD-ROM, PCMCIA, embedded network adapter, etc.
`
`BCV
`A Boot Connection Vector is a pointer that points to code inside the option ROM that
`will perform device initialization, detect if a peripheral (such as a SCSI hard drive) is
`attached, and optionally hook INT 13h. The BCV resides in a PnP option ROM
`Expansion Header. An example of an option ROM with a BCV is a PnP ISA SCSI
`controller.
`
`BDA
`The BIOS Data Area is a data storage area in RAM. The BDA is used by the BIOS to
`manage the various peripherals and resources in the system. The BDA starts at
`segment address 0040h.
`
`BEV
`A Bootstrap Entry Vector is a pointer that points to code inside an option ROM that
`will directly load an O/S. The BEV resides in a PnP option ROM Expansion Header.
`An example of an option ROM with a BEV is a PnP ISA ethernet controller.
`
`BIOS
`The Basic Input/Output System is the software embedded on a chip located on the
`computer’s main board. The BIOS executes POST to test and initialize the system
`components and then loads (boots) the O/S. The BIOS also handles the low-level
`input/output to the various peripheral devices connected to the computer.
`
`6
`
`6
`
`

`
`Boot Device
`A Boot Device is any device that must be initialized prior to loading the O/S. This
`includes the primary input device (keyboard), the primary output device (display), and
`the initial program load device (floppy drive, hard drive, etc.). An IPL device is one
`form of a boot device.
`
`CDR
`Conflict Detection and Resolution is a method by which a PnP BIOS first detects the
`resource requirements for PnP cards, and then allocates them in a conflict-free way.
`
`CSN
`A Card Select Number is a number that uniquely identifies a PnP ISA card and is used
`to communicate exclusively to that card. The CSN is assigned by the PnP BIOS to
`each PnP ISA card in the system.
`
`DDIM
`The Device Driver Initialization Model is a method of initializing an option ROM
`whereby the option ROM is first copied to shadow RAM, then its initialization vector
`is called with the shadow RAM write-enabled. When the option ROM completes
`initialization it may dispose of code not needed at run-time by re-sizing the ROM
`memory footprint. Finally, after the option ROM returns and the BIOS regains
`control, the ROM is write-protected.
`
`DV
`A Disconnect Vector is a pointer that points to code inside the option ROM that will
`perform clean-up after the Boot Connection Vector has already been called. The DV
`resides in a PnP option ROM Expansion Header. An example of an option ROM with
`a DV is a PnP ISA SCSI controller.
`
`IPL Device
`An Initial Program Load Device is any device in the system that can boot and load an
`O/S. In standard AT machines, this is the floppy drive or hard drive.
`
`Legacy Card
`A Legacy Card is a standard ISA card that contains no PnP compatible configurability,
`and no PnP Expansion Header.
`
`NV
`Non-Volatile memory is memory that is retained even when the power has been shut
`off. The most common type of NV memory on a PC is the CMOS RAM that is used
`to store system configuration information.
`
`O/S
`An Operating System is loaded from an IPL device when that device is selected for
`booting.
`
`7
`
`7
`
`

`
`PFA
`A PCI Function Address is a unique number assigned to a PCI function on a PCI
`device. The PFA consists of a function number, a device number, and a bus number.
`
`PnP
`Plug and Play is a term used to identify anything defined by the Plug and Play BIOS
`specification or the Plug and Play ISA specification. The term will typically be used
`to reference some device or behavior that is specific to PnP technology.
`
`PnP Cards
`PnP Cards consist of any cards that contain an option ROM with a PnP Expansion
`Header.
`
`POST
`The Power-On Self Test is the part of the BIOS that takes control immediately after the
`computer is turned on. POST initializes the computer hardware so that an O/S can be
`loaded.
`
`Setup
`The system Setup program is the part of the BIOS that is executed after a user
`specified <Hot Key> is pressed during the BIOS initialization. Setup allows the user
`to set up and configure the system as well as select the IPL Priority of the system.
`
`8
`
`8
`
`

`
`2.0 Overview
`
`2.1 Description
`
`The BIOS Boot Specification defines a feature within the BIOS that creates and
`maintains a list of all the IPL devices found in the system and stores this list in NV
`memory. IPL devices come in three flavors: BAID, PnP Card, and Legacy. Only
`BAIDs and PnP Cards are enumerated. Legacy devices are not supported for several
`reasons. First, they tend to take control of the boot process altogether making them
`rather unfriendly. Second, they provide no means for identifying themselves as an IPL
`device. Finally, the BIOS cannot selectively boot from one of several Legacy IPL
`devices in a system.
`
`The BIOS Boot Specification provides one basic feature, the IPL Priority. The IPL
`Priority is a user-specified priority of IPL devices that is arranged in Setup. This boot
`order is similar to the common feature of boot A: then C: or vice versa, but supports
`additional IPL devices. Also, the number of IPL devices in the system may vary from
`one power-on to another. Each time the user turns on the system all IPL devices in the
`system are enumerated.
`
`Additionally, the BIOS Boot Specification defines the BCV Priority. The BCV
`Priority is a user-specified priority list of INT 13h Device Controllers that is arranged
`in Setup. This list specifies the order that the controllers will be called to install their
`INT 13h drive support during POST.
`
`If an IPL device fails to load an O/S, the BIOS regains control and attempts to boot
`from the next available IPL device. This procedure will continue until all possible IPL
`devices have been exhausted. Only then will the BIOS display a message that an O/S
`cannot be found, wait for a key stroke, and then invoke INT 19h again. This method
`ensures that the BIOS has intelligently made every attempt to boot.
`
`The BIOS Boot Specification encompasses the boot process of both PnP and non-PnP
`systems. The support for PnP Cards wherever mentioned is only pertinent to systems
`which include PnP support in their BIOS. A standard AT compatible system (also
`called a Legacy system) is much simpler than one with a PnP BIOS because it only
`supports BAIDs. A Legacy system does not need to provide any dynamic IPL device
`enumeration or configuration, nor does it support PnP Cards in their native mode.
`This is because the number of IPL devices in such a system will never change.
`
`9
`
`9
`
`

`
`3.0 IPL Devices
`
`3.1 Requirements for IPL Devices
`
`An IPL device can be virtually any device that has the ability to load and execute an
`O/S.
` This includes floppy drives, hard drives, CD-ROM drives, PCMCIA
`controllers/cards, PnP Cards, Legacy cards, and could, in the future, include virtually
`any devices such as serial ports, parallel ports, etc. An IPL device falls into one of
`three categories: BAID, Legacy IPL Device, or PnP Card. There are two varieties of
`PnP Cards, BCV devices and BEV devices.
`
`One of the key points of concern about an IPL device is that it be able to return back to
`the BIOS with an error if the O/S load fails. The BIOS Boot Specification defines INT
`18h as the recovery vector for failed boot attempts. For example, if a PnP ISA
`network card was configured to boot from the network, but the network cable wasn’t
`attached, the card’s option ROM should signal to the BIOS that it cannot boot by
`invoking INT 18h.
`
`If a Legacy card’s option ROM code hooks INT 19h during its initialization call it
`controls the boot process. If a Legacy card hooks INT 18h, the boot failure recovery
`will not work. For this reason, it is recommended that all future Legacy boot devices
`include the PnP Expansion Header and its associated support in their option ROMs so
`that their priority in the booting process can be controlled.
`
`3.1.1 IPL Table
`
`Each BAID and BEV device must have corresponding entries in the IPL Table. An
`IPL Table for a typical PC would have two BAID entries, one for diskette drive A: and
`one for hard drive C:, and one for each BEV device found. A sample IPL Table is
`shown in section 4.1.
`
`The information stored in the IPL Table consists of identification information, pointers
`to description strings, and pointers to handlers that will initiate an O/S load. The IPL
`Table and BCV Table data structure is defined in detail in Appendix A.
`
`10
`
`10
`
`

`
`3.1.2 Product Name String
`
`The Plug and Play BIOS Specification defines fields in the PnP Expansion Header for
`optional description strings. Vendors of PnP Cards must have meaningful strings in
`the Product Name String and Manufacturer String fields of the PnP Expansion Header.
`The Product Name String is particularly important since it will be displayed to the user
`as an identifier for that device. Although the only current limitation to these strings is
`that they be terminated by a NULL (0 byte), it is declared here that only the first 32
`characters (bytes) of the Product Name String are significant. Characters beyond 32
`will not be displayed. This is a reasonable length to provide the user with a unique
`name for that device. Product Name Strings shorter than 32 will be displayed in their
`entirety.
`
`3.2 BAIDs
`
`BAIDs include the first floppy drive, the first hard drive, and any other bootable
`device that has specific code in the BIOS to support it. A BAID is able to launch a
`bootstrap only because the BIOS has built-in support as part of the INT 19h service
`routine. Some examples of this might be an ATAPI compatible CD-ROM drive or a
`PCMCIA card/controller. BAIDs do not have option ROMs, nor can they function
`without specific code embedded in the BIOS.
`
`Each BAID will have an entry in the IPL Table. This entry will contain the following
`information: the device type, a device sub-type, a pointer to a description string, and a
`pointer to code that will attempt to boot from the device. The INT 19h handler will
`read this table and be able to boot from any one of these devices without having to
`know what type of device it is. The table consists of a contiguous array of data
`structures of which each corresponds to a particular IPL device.
`
`Note that only the first floppy drive and the first hard drive are considered IPL devices.
`The main reason why a system cannot boot from other drives is that the boot sector
`code specifically addresses only these drives (00h for floppy and 80h for hard drive)
`when INT 13h is called to load the O/S. See Appendix D for recommended changes
`to the O/S boot sector that could solve this problem.
`
`11
`
`11
`
`

`
`3.3 Devices with PnP Expansion Headers
`
`All IPL devices with option ROMs must contain a valid option ROM header that
`resides between system memory addresses C0000h and EFFFFh on a 2k boundary and
`begins with 55AAh. A Device’s booting can only be controlled if it has a PnP
`Expansion Header. The Expansion Header, whose address resides within the standard
`option ROM header at offset +1Ah, contains important information used to configure
`the device. It also contains pointers to code in the device’s option ROM (BCV or
`BEV) that the BIOS will call to boot from the device. See Appendix A for the
`structure of the PnP Expansion Header. There are two ways an IPL device with a PnP
`Expansion Header can be booted. It must contain a BCV or a BEV.
`
`A BEV device, typically a network card, is booted by the BIOS making a far call
`directly to its BEV. If the device fails to boot, it executes an INT 18h which returns
`control back to the BIOS. BEV devices behave much like BAIDs in that they are
`selectively bootable.
`
`A BCV device, typically a SCSI controller, is not directly bootable. Rather, it merely
`adds its drives to the system by hooking into the BIOS’ INT 13h services and
`appending drive numbers to any existing drives. Since only drive 80h is bootable, a
`BCV would only be able to boot one of its drives if it installed before any other drives
`in the system. For this reason, it is necessary to control the order that all drives are
`installed into the system, including on-board ATA drives and those controlled by
`Legacy devices such as older SCSI controllers. The only way to control a BCV
`device’s drives in the boot order is by allowing the user to specify the order of
`initialization among ATA, BCV, and Legacy option ROMs. This will be discussed in
`detail in section 5.0.
`
`3.4 Legacy IPL Devices
`
`This is a standard ISA card with a valid option ROM that resides in system memory
`address space between C0000h and EFFFFh on a 2k boundary. An example of this
`type of device is a Legacy SCSI hard drive controller with a bootable ROM installed.
`Legacy IPL devices do not contain PnP Expansion Headers in their option ROMs.
`
`Option ROMs are detected during the BIOS’ scan and their initialization vectors are
`called. During initialization, devices may hook INT 19h so that they will gain control
`when the BIOS issues INT 19h to boot the system. Or, they may hook INT 18h so that
`if all other IPL devices in the system fail to boot they will take over. Or, they may
`simply hook INT 13h and only respond to calls that reference their drive number. In
`any case, the first two methods provide no consistent way for the BIOS to regain
`control if the device fails to boot.
`
`12
`
`12
`
`

`
`Legacy IPL devices will be allowed to take control of the system (via hooking
`interrupts) in both Legacy and PnP systems. The Plug and Play BIOS specification
`recommends that Legacy devices that hook a bootstrap interrupt such as INT 19h, 18h,
`or 13h have the interrupt re-captured by the BIOS. This is not done because grabbing
`an interrupt vector back after a device has hooked it can produce unpredictable results.
`Further, by allowing the card to take control, the behavior of these Legacy cards will
`be the same on both PnP and Legacy machines.
`
`Legacy IPL devices are not enumerated or handled in any special way. Their behavior
`will be largely unknown by the BIOS. If a Legacy IPL device traps INT 19h it takes
`control of the boot process. This is acceptable because it is consistent with what
`Legacy systems do now. If a Legacy IPL device traps INT 13h, it becomes the local
`hard drive from the BIOS’ perspective since it would then respond to INT 13h
`function calls executed in the INT 19h handler.
`
`13
`
`13
`
`

`
`3.5 Identifying IPL Devices
`
`The large variety of possible IPL devices dictates that a generic methodology be
`implemented so that all existing and future devices can be made bootable with a
`minimum of difficulty. All IPL devices in the system need to be enumerated during
`POST, but before INT 19h. All IPL devices fall into one of three categories: BAID,
`PnP Card, or Legacy.
`
`IPL Device
`First floppy drive
`First ATA Hard drive
`PCI ATA card w/ drive
`ATAPI CD-ROM drive
`PCMCIA controller w/ bootable card
`Ethernet controller w/ code embedded in BIOS
`PnP Token Ring card
`PnP ethernet card
`Non-PnP card w/ PnP Expansion Header
`
`PnP SCSI card w/ drive
`
`3.5.1 BAIDs
`
`Type
`BAID
`BAID
`BAID
`BAID
`BAID
`BAID
`PnP (BEV)
`PnP (BEV)
`PnP
`(BEV
`BCV)
`PnP (BCV)
`
`or
`
`All BAIDs are automatically identified because the BIOS has specific code to support
`them. In addition, each BAID has a corresponding entry in the IPL Table.
`
`3.5.2 PnP Expansion Header
`
`A PnP Card is defined by having a PnP Expansion Header in its option ROM. Any
`IPL device with an option ROM can contain the PnP Expansion Header, including PCI
`and ISA devices. If a PnP Expansion Header exists, the device will be treated as a
`PnP Card. If it is a BEV device it will be included in the IPL Priority. If it is a BCV
`device the BCV will be called. The PnP Expansion Header method of identifying boot
`devices with option ROMs is expected to become the future standard.
`
`3.5.3 PCI Devices
`
`From the standpoint of booting, most PCI IPL devices with option ROMs behave just
`like Legacy IPL devices. Currently, most PCI SCSI controllers will typically hook
`INT 13h and most PCI network cards typically hook either INT 19h or INT 18h in
`order to be an IPL device. It is recommended that all future PCI devices with option
`ROMs employ the PnP Expansion Header method for booting so that they may enjoy
`the benefits of appearing on a boot menu and allowing users to select its boot order.
`
`14
`
`14
`
`

`
`PCI devices without option ROMs are either not an IPL device, or they behave like a
`BAID. For example, a PCI ATA controller will not have an option ROM, but will
`become the system ATA controller and utilize the BIOS’ INT 13h services to interface
`to attached ATA drives.
`
`The address space for option ROMs conforming to the Device Driver Initialization
`Model (DDIM), such as PCI, shall be write-enabled both when their initialization
`vector is called, and when their BCV is called.
`
`3.5.4 Identical IPL Devices
`
`In an implementation of the BIOS Boot Specification, the system BIOS may choose to
`distinguish between identical IPL devices so that the user will be able to choose the
`correct device, given a menu of selections. For instance, the system BIOS may
`recognize that two identical PnP SCSI controllers are present in the system and
`distinguish them by numbering them, by displaying their CSN, or some other method.
`Currently, no specific method is recommended nor defined here. Recognizing and
`dealing with identical devices is optional and not required for BIOS Boot Specification
`compliance.
`
`15
`
`15
`
`

`
`4.0 IPL Priority
`
`Once all BAIDs and BEV devices in the system have been identified and enumerated,
`the BIOS needs to decide in which order they will be selected for booting. This is
`handled by the IPL Priority.
`
`The IPL Priority consists of an array of ordinal values, one for each BAID and BEV
`device found in the system at POST. An IPL Priority ordinal value is the index of a
`BAID or BEV device entry in the IPL Table. The priority for IPL devices is
`configurable by the user by editing the IPL Priority in Setup. The order the user
`selects is then stored in NV memory so that it can be retrieved by the BIOS at INT 19h
`time. The IPL Priority specifies not only the number of BAIDs and BEV devices in
`the system, but their order of booting as well.
`
`When the INT 19h handler gains control, the first IPL device in the IPL Priority is
`used to attempt to boot. If that fails, the next device is tried, and so on until all devices
`in the IPL Priority have been tried. At that point an error message will be displayed
`since all attempts to boot have been exhausted.
`
`4.1 Maintaining the IPL Priority
`
`Since the ordinal values in the IPL Priority are simply the index of the IPL device in
`the IPL Table, no information is stored as to the specific IPL device that the ordinal
`value represents. Here we assume that the number of BAIDs in a system does not
`change because the BIOS contains the code for them. The BIOS recognizes only a
`change in the number of BEV devices, and not a change in the type of BEV devices.
`
`If the user changes the BEV devices they have in their system without changing the
`total number of BEV devices, the BIOS will not detect this and will keep the previous
`IPL Priority. For example, if there is a PnP ISA ethernet card in a system and the user
`removes it and installs a different PnP ISA ethernet card, the IPL Priority would not
`change because the BIOS does not track individual BEV devices. It merely tracks the
`number of them and their order in the IPL Priority. The IPL Table would contain an
`entry for the new PnP ethernet card in the same location as where the old one was
`before. Again, as long as the total number of BEV devices doesn’t change, the BIOS
`uses the last order that was stored in NV memory.
`
`16
`
`16
`
`

`
`The way the IPL Priority is constructed is by taking the range of ordinal values for
`BAIDs and BEV devices, and storing them in NV memory in the IPL Priority order.
`The maximum number of IPL devices supported is implementation specific, and is
`defined at BIOS build time. The number of BAIDs also does not change. The number
`of BEV devices that were detected at the last boot is stored in NV memory so that a
`change in this number can be recognized by the BIOS. If the number of BEVs found
`during POST differs from the number found at last boot as indicated by the value
`stored in NV memory, the BIOS should either reset the IPL Priority automatically to
`reflect the changes, or prompt the user to enter Setup.
`
`When the system boots for the first time, or if the NV memory is corrupted, a default
`IPL Priority is created. The default IPL Priority consists of the BAIDs followed by the
`BEV devices found in the system. The BEV devices are placed at the end of the IPL
`Priority in the order that they are found. Optionally, the user can be prompted to enter
`Setup.
`
`The IPL Priority remains in effect until either the user changes it or the number of
`BEV devices in the system changes. However, the IPL Priority could change in a
`system with more than one BEV device if the order the BEV devices were found by
`the PnP BIOS changed. This seems odd at first to have the IPL Priority change and
`the user not be notified. But ultimately, if the user is changing boot devices they will
`probably want to manually edit the IPL Priority anyway. This caveat saves a lot of
`potential consumption of NV memory that would be used to store unique serial
`numbers for each BEV device. Additionally, BIOS code space is saved by not
`tracking individual BEV devices as opposed to simply enumerating the existing ones
`without reference to what type of device they are.
`
`IPL Table
`Floppy A:
`Hard Drive C:
`CD-ROM
`BEV #1
`BEV #2
`
`0
`1
`2
`3
`4
`
`567
`
`IPL Priority
`2
`3
`4
`1
`0
`3 4 1 2 0
`
`5
`
`6
`
`7
`
`When INT 19h is executed, the BIOS will process the IPL Priority shown above in the
`following order: BEV #1, BEV #2, Hard Drive C:, CD-ROM, Floppy A:.
`
`17
`
`17
`
`

`
`4.2 IPL Priority Pseudocode
`
`The following pseudocode describes an example of managing the IPL Priority during
`POST.
`
`Created at BIOS build time:
`• First few IPL Table entries are filled in by the BAIDs.
`• maxIPLCount = Number of entries in IPL Table.
`• baidCount = Number of BAIDs in the system.
`• maxBEVCount = (maxIPLCount - baidCount).
`• The NV memory space for the IPL Priority is reserved.
`
`Assumptions:
`• The default for the IPL Priority will automatically be created during POST in case
`the NV memory gets corrupted.
`• nvBEVCount = number of BEV devices found last time - stored in NV memory.
`• postBEVCount = number of BEV devices found this time.
`
`Execution at POST time:
`• All option ROMs with a PnP Expansion Header are identified and their
`initialization entry points are called.
`• Additional IPL Table entries are filled in with the BEV devices found.
`IF (NV memory is corrupted)
`•
`• Set default IPL Priority by first placing the BAIDs, and then adding in the
`BEVs in the order they were found.
`
`• ELSE
`• The IPL Priority is retrieved from NV memory.
`• deltaBEVCount = (nvBEVCount - postBEVCount).
`IF (deltaBEVCount != 0)
`•
`IF (deltaBEVCount > 0)
`•
`• FOR (i = 0; i != deltaBEVCount; ++i)
`• Add a new BEV device to the end of IPL Priority.
`
`• ELSE
`• For (i = 0; i != deltaBEVCount; --i)
`• Delete the BEV device nearest the end of IPL Priority.
`
`• ENDIF
`• Save the postBEVCount in NV memory as nvBEVCount.
`• Save the new IPL Priority in NV memory.
`(Optional) - Display a message that the IPL Priority changed and
`•
`allow the user to enter Setup to reconfigure the IPL Priority.
`• ENDIF
`• ENDIF
`Invoke INT 19h.
`•
`
`18
`
`18
`
`

`
`5.0 BCV Priority
`
`5.1 Introduction
`
`In order to fully manipulate the order that IPL devices attempt to boot, it is necessary
`to control the order of installation of devices utilizing INT 13h. Since many INT 13h
`devices can be managed by one controller, we need to control the order that the
`controllers’ INT 13h support is installed. The need to manage this ordering arises out
`of the currently limited booting capabilities

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket