throbber
United States Patent
`
`[19]
`
`[11] Patent Number:
`
`5,854,905
`
`Garncy
`
`[45] Date of Patent:
`
`*Dcc. 29, 1998
`
`USOO5854905A
`
`[54] EXTENSIBLE BIOS FOR BOOT SUPPORT
`OF ])]T‘V[(‘/‘]T,S ON ]V[U[,T[P[,E
`HIERARCHICAL BUSES
`
`[75]
`
`Inventor:
`
`John I. Carney, Aloha, Oreg.
`
`[73] Assignee:
`*
`N '
`oticez
`
`Intel Corporation, Santa Clara, Calif.
`Th‘
`'
`d
`'
`d
`1S patent issue
`on a continue pr0s-
`ecutioii application filed under 37 CFR
`l.53(_d), and is subject to the twenty year
`Patent
`ts“-11 Pf0"i5i0H5 Of 35 U~S~C~
`l54(a)(2)-
`
`,
`S91)‘ 3’ 1996
`
`[21] Appl. No; 707,333
`,
`Fflcd:
`[22]
`Int. cifi
`[51]
`U_S_ CL ................ N
`[52]
`[58] Field of Search
`
`G06F 9/24
`395/234; 395/652
`
`395/281, 652,
`395/200.51, 200.52, 651, 284. 553
`References Cited
`U.S. PATENT DOCUMENTS
`.. 711/200
`4/1991 Fogg, Jr. et al.
`.
`235/382
`9/1995 Clark
`11/1995 Bealkowski eféii.
`395/700
`
`[56]
`
`5,008,816
`5,448,045
`5,465,357
`
`5,546,585
`8/1996 Soga
`. 395/700
`
`5,680,556
`10/’l997 Begun et al.
`. 395/3'l’l
`
`395/200.01
`5,680,597 10/1997 Chang
`. 393/830
`5,689,726
`ll/l997 Lin ..
`
`,
`_
`_
`Primary Exarmner—Ayaz R. Slieikli
`A55i5mm E"'”’m”e"_Pa“1 R- Myers
`Attorney, Agent‘, or F/7rm—Blal<ely, Sokoloff, Taylor &
`Zatman LLP
`‘
`-
`ABSTRACT
`)7]
`An extensible BIOS [or a computer system to manage
`3001-up of an arbitrary number of devices connected over an
`arbitrary number of buses and bridges of varying type. The
`extensible BIOS identifies all bridges or buses connected to
`he system and then initializes each and everv bus or bridge.
`The extensible BIOS identifies boot devices as resident on
`‘:11!
`,1H,1l1‘d11w_d brldgcs and buses, and they detects and
`initializes drivers on the. identified boot devices. According
`0 ‘he Se§’1°.“.°“ fJ“dlP“:’;“y.°f "E0: b°°"“P Thin “Om,
`Elillgiieli ielszelilir b::>o)t(-Tip E1:l31fl::.1'1€):I‘lT'1:ne?(l:eI1:::l:]l3c:(,?S
`irovides that the hierarchy of buses and bridges and boot
`devices connected to them may be altered while still recog-
`nizing all boot relevant devices, buses and bridges regard-
`ess of the nature of the alteration.
`
`15 Claims, 9 Drawing Sheets
`
`PC1 3/05
`
`820
`
`d
`_
`new_e ewce £2
`
`I
`
`—>
`
`“System Bios
`
`510
`
`I
`
`”eW—eb”d9e Q, E
`
`5td_bndge_In,~;fl€ _ 5b
`
`5
`
`new bootdev
`—
`
`Q,
`
`5
`
`417
`
`boat
`
`812 _
`_~
`
`,
`
`7
`
`ed€,V_b0m«_,0
`
`826 I
`
`3
`
`K
`2
`_7®fifi£ ___ "'EfiE"j
`ROMB/'05
`830A
`:
`I1EW_E0'EV/Ce
`'
`,2 — '1
`
`new_ebr/dge
`
`, ~5a
`834 : I
`7
`T
`1 43:
`
`edev_B0at[0
`
`fig I
`
`i
`
`.
`
`,
`
`7
`
`0001
`
`Volkswagen 1009
`
`0001
`
`Volkswagen 1009
`
`

`
`U.S. Patent
`
`Dec. 29, 1998
`
`Sheet 1 of 9
`
`5,854,905
`
`Memory Address
`5PM?
`10
`
`[/0 Address Space
`20
`
`Extended
`
`Memory
`30
`
`Keyboard Contra//er
`3.5
`
`Floppy Contro//er
`A7
`
`Hard Disk Contro//er
`
`E
`
`Keyboard §_Q
`
`0002
`
`

`
`U.S. Patent
`
`Dec. 29, 1998
`
`Sheet 2 of 9
`
`5,854,905
`
`
`
`msfioom.msfidm
`
`.§.:Q»\.B>Cm>\
`
`mmE8§s§<
`
`»as«Q.
`
`an\§§....%Emsfiex
`
`S.«M5Em:
`
`mmntnsaqm
`
`%|w
`
`86.:
`
`..m\§.E8
`
`NM
`
`NSq.§§swim
`
`§mmbtnctoa
`
`0003
`
`

`
`U.S. Patent
`
`89919:2GeD
`
`Sheet 3 of 9
`
`5,854,905
`
`
`
`mBE8mmfimwoq
`
`
`
`mm>tQ«._oEm>\
`
`ElmE8«same
`
`»asSE
`
`R«M5Em}.
`
`
`
` ISmmm&%mm84EEmafimy.msssammmncfitqe
`
`mmmm§\§cGmEs
`
`Qm.E\_hmbtmukw
`
`NSmEtéswim
`
`
`
`W.ass.§\am3%?.§&-e.EsqE&.e-Esq
`
`mmw§%EElmEam332%ElmEém32.9
`
`mmEmofimkhcoummHSKmmncm.
`
`
`
`
`
`3EastEamm,%mumS.uE\mm.«mmEm:ucoummREaEm:ES3E8§§§VEQEm:
`
`
`
`
`
`
`
`0004
`
`

`
`U.S. Patent
`
`Dec. 29, 1998
`
`5,854,905
`
`System B105
`
`POST Code
`
`5_oz_2
`
`CPU, Memory and
`Northbric/ge Initia/ization
`Code £12
`
`Southbridge
`Initialization
`Code
`§2_0
`
`Boot Device ID,
`Selection and Policy
`Management Code
`
`|//deg
`Expansion
`5105 _5_9g
`
`Network
`Expans,-on
`3105 Q5
`
`0005
`
`

`
`U.S. Patent
`
`Dec. 29, 1998
`
`Sheet 5 of 9
`
`5,854,905
`
`
`
`Emcmqxmown:
`
`mm.8.3
`
`NMmosm.§§EQI
`
`Embesmz90
`
`
`
`newE8wasseam
`
`
`
`comcmsmEeéme
`
`%.was
`
`mm8.sm.84%:
`
`
`
`:o.E§._.u.£E§..:E.§<
`
`QR%S
`
`II
`
`wmo.€3.\_mEEm%.Em.%=
`
`mwwtsqqumm9.mmfimemtm.Eflmxm
`
`EmE.Em\mm8.:me8%
`
`
`
`mmEmsmmmemz\§\oqfl~E.\umm.e.EuEm
`
`mm\_mE%E|§m:
`
`3:$§\EE
`
`
`
`:o.cm.~.%.£E.mmhtqsaommm.88
`
`mm.%8I
`
`
`
`amwhen.§.tQmmlmwhenWWmung94mung
`
`
`
`«SBEmmxm§EQngmofimx§.:QEm\3.QQ\u..>mS.tQ«EQEm:
`
`
`
`
`
`0006
`
`

`
`U.S. Patent
`
`Dec. 29, 1998
`
`Sheet 6 of 9
`
`5,854,905
`
`4MWBMWA
`
`
`
`38%m§§E....%.E
`
`
`
`%mmhtmutmcmm
`
`NINW8.5%:3:
`
`Emmhtnmname
`
`mm938.3%
`
`
`
`qwmmgmgngmtmmhtm.
`
`EwfimEsq
`
`EX5/st/ng BUS 602
`
`0007
`
`

`
`U.S. Patent
`
`Dec. 29, 1998
`
`Sheet 7 of 9
`
`5,854,905
`
`Generic Bridge Header .7000
`
`FIG. Z4
`
`Partial PC! Expansion ROM Header
`
`Data structure signature, the string ”PC[R ”
`Vendor identification
`
`Device Identification
`
`Pointer to l/ita/ Product DA TA
`
`PC! data structure Re v/'5/on
`
`Class Code
`
`Description
`Expansion ROM identification byte #0
`Expansion ROM identification byte #1
`2h-J7/1 Reserved (processor architecture unique data)
`18h-19/7
`Pointer to PC] data structure
`
`value
`55/7
`
`xx
`xx
`
`Length
`1 Byte
`1 Byte
`
`0008
`
`

`
`U.S. Patent
`
`Dec. 29, 1998
`
`Sheet 8 of 9
`
`5,854,905
`
`MQ
`
`Qbgmuéum
`
`Q
`
`musmnmugmc
`
`SECa.
`
`
`
`HWwflm%.:%.%=EmSwim
`
`am
`
`
`
`9:25I;mumIEm..E~:m%.E:Em
`
`
`
`IEm.\_mEo8:>_m:
`
`0009
`
`

`
`U.S. Patent
`
`Dec. 29, 1998
`
`Sheet 9 of 9
`
`5,854,905
`
`NEW_EBRIDGE
`
`900
`
`INITIALIZE BRIDGE
`
`CONTROLLER
`
`device = 1st device
`
`/v0
`
`De vices
`
`7
`
`,5
`
`R0
`detected
`7
`
`N0
`
`9
`
`is ROM
`
`an extensible
`ROM
`
`Cali ROM. new_ edivce
`
`940
`
`Copy ROM to
`RAM
`
`Ca/i ROM.
`new_ ebridge
`
`985
`
`Call new_ ebootdev
`of system B105
`
`995
`
`FIG. 9
`
`0010
`
`

`
`5,854,905
`
`1
`EXTENSIBLE BIOS FOR BOOT SUPPORT
`OF DEVICES ON MULTIPLE
`HIERARCHICAL BUSES
`BACKGROUND OF THE INVENTION
`1. Field of the Invention
`
`The present invention relates generally to the managing of
`boot devices in computer systems, and specifically to
`extending BIOS to manage boot-up from an unlimited
`variety of hoot devices that can appear dynamically within
`a computer system.
`2. Description of Related Art
`In typical personal computer (PC) systems, the manage-
`ment of boot devices and the sequence of booting is con-
`trolled through fixed code contained within Basic Input/
`Output System (BIOS) Read-Only Memory (ROM). The
`BIOS ROM predetermines how devices can be connected in
`the particular computer system and which types of devices
`can be supported by the BIOS. Some additional expansion
`BIOS ROM code can be introduced into a computer system
`on an add-in card, but only for a limited set of boot devices:
`i.e. local hard disks, network accessed hard disks, and video
`display adapters. The system BIOS ROM assumes that the
`boot devices are always connected to the system in the same
`way, i.e. via the same hardware interface(s) located at the
`same memory I/O address range(s). This requires that hard-
`ware interfaces for boot devices be standardized and
`unchanging so that the BIOS code to control these devices
`can support them. For example, video controllers have been
`required to support VGA interfaces for many years in order
`to allow BIOS code to continue to function even though
`more efficient hardware interfaces are used by operating
`system control software. The advent of new buses and boot
`devices has required either continued support of previous
`standardized hardware interfaces or new expansion BIOS
`code that understands the new hardware interfaces. The
`
`Industry Standard Architecture (ISA) bus provided a simple
`means of connecting boot devices and thus only required
`simple software to recognize and initialize its boot devices.
`However, computer systems have advanced to a stage where
`boot devices can now be connected through a variety of
`newer and different buses, such as Peripheral Component
`Interconnect (PCI) buses. Many of these new buses allow
`interconnection to other buses through “bridge” devices.
`These bridge devices must be typically programmed ahead
`of time to allow access to other devices connected through
`the bridge. The wide variety of possible hardware connec-
`tions requires much more complex software in order to
`recognize and initialize these devices upon boot than do ISA
`bus connections. Providing this more complex software
`code in one monolithic system BIOS is typically not pos-
`sible due to storage constraints of a typical BIOS which has
`a fixed capacity.
`Further, other new buses, such as PCMCIA, allow devices
`to be connected and disconnected at any time by the end user
`of the PC and allows devices to be configured at any
`memory address range convenient
`to the software that
`controls them. Thus boot devices maybe located at different
`memory and I/O address ranges from one instance of
`boot-up to another. Additional bridge devices that can be
`connected by the end user fL1rther complicate the variety of
`hardware connections possible. Finally, other new buses,
`like the Universal Serial Bus (USB), allow attaching boot
`devices like keyboards and mice in novel ways that cannot
`be supported with previous traditional BIOS code.
`One attempted approach to supporting these new buses
`and devices involved providing only operating system sup-
`
`2
`port which occurs during run-time of the operating system
`but not providing any support through BIOS during boot-up
`before run-time of the operating system. However,
`this
`approach undesirably prohibits being able to use these
`devices as boot devices. Another attempted approach for
`supporting these new buses was to include additional code
`in the system BIOS that individually supported all possible
`hardware combinations. However,
`this approach is only
`reasonable when the number of possible connections is
`relatively small.
`Thus, there is a need to simply and efliciently account for
`all possible boot devices connected through different type
`buses and in an arbitrary connection topology. To minimize
`and simplify the code needed in the system BIOS, there
`arises a need to provide a mechanism to also carry BIOS
`code unique to a new bus along with a bridge device for
`connecting the new bus or along with a boot device on the
`new bus.
`
`SUMMARY
`
`The present invention provides an extensible BIOS in a
`computer system that can manage booting of an arbitrarily
`large number of devices connected to the computer system
`through multiple bridges of varying types for multiple buses.
`The extensible BIOS will identify a bridge that may
`newly appear on a computer system between particular
`instances of computer boots or computer resets. The exten-
`sible BIOS will also initialize the newly added bridge. The
`extensible BIOS also identifies what boot devices are
`present on a particular bus for the bridge that has been
`initialized. Once the boot devices have been identified, the
`extensible BIOS detects code for those boot devices. The
`extensible BIOS then initializes the driver code and accord-
`ing to boot device selection and priority information allows
`use of the selected boot devices during boot-up.
`The extensible BIOS provides that
`the identifying of
`bridges, initializing of bridges, boot device identification
`and driver detection can be performed recursively, such that
`every new bridge encountered is traversed to locate more
`bridges and their associated boot devices if any until the
`entire topology is accounted for.
`The extensible BIOS is composed of a number of code
`modules, each with their own code to carry out the opera-
`tions and functions of the extensible BIOS.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 shows handling of I/O devices in a typical com-
`puter system.
`FIG. 2 shows the architecture of typical personal coni-
`puter system.
`FIG. 3 shows the architecture of an extended personal
`computer system which would utilize an extensible BIOS.
`FIG. 4 shows the modules of a typical current BIOS.
`FIG. 5 shows the modules of an extensible BIOS accord-
`ing to one embodiment of the present invention.
`FIG. 6 shows the modules of a generic bridge block
`according to one embodiment the present invention.
`FIG. 7 shows partial PCI expansion ROM header and PCI
`data structure as can be utilized in various embodiments of
`the present invention.
`FIG. 8 shows the interrelationship of the code modules
`and describes the working of the invention according to the
`embodiment employed in Appendices 1 and 2.
`FIG. 9 is a flowchart of the recursion methodology of
`detecting and initializing devices through the system topol-
`ogy when starting with a particular bridge.
`
`0011
`
`

`
`5,854,905
`
`3
`DETAII.ED DESCRIPTION OF THE
`INVENTION
`
`FIG. 1 illustrates how controllers for typical personal
`computer system Input/Output (I/O) devices are accessed
`through memory address spaces. Such a computer system
`usually includes a display 80, keyboard 60, a hard disk drive
`50 and a floppy disk drive 70. The memory of Intel processor
`based computer systems is typically divided into two
`address spaces. There is an I/O address space 20 that
`contains control and status registers, and then a memory
`address space 10 that handles program execution and data,
`as well as display (video) and other controllers. The con-
`trollers keyboard controller 25, floppy controller 27 and hard
`disk controller 29, for the keyboard 60, floppy 70 and hard
`disk 50, respectively, are found in the I/O address space 20
`since these devices are not memory intensive, and do not
`require constant updating. The display 80 has a video
`controller (not shown) that has some registers in I/O address
`space whereas video memory is located in memory address
`space that is usually mapped into the memory address space
`10. The display 80 may be mapped either into extended
`memory 30, which on Intel based personal computers, is
`addressed above 1 Megabyte (MB) or can be mapped into
`low memory 40 which is addressed under 1 MB.
`The Basic Input/Output System (BIOS) usually resides in
`the upper portion of low memory 40 between 640 kilobytes
`and 1 MB, but is also mapped into extended memory 30 to
`provide a starting memory address to be used upon system
`reset. Therefore,
`the smaller the BIOS component of a
`system, the greater the memory space available to code and
`data during operation of the system. The functions of the
`BIOS, relevant to boot-up, are to (1) respond to power-on/
`reset of the computer, (2) provide the reset vector that is
`mapped into the CPU’s physical memory address range, (3)
`recognize the presence of boot devices, (4) initialize the
`drivers/controllers supporting those boot devices and (5)
`provide functionality for interaction with the user for com-
`puter setup (e.g. asking the user which device to boot from
`or the order of boot-up). These functions can be achieved
`through control software and are referred to as boot relevant
`functions since they must occur prior to the loading of an
`operating system.
`FIG. 2 shows the architecture of a typical personal com-
`puter system in accordance with accepted practice. A main
`system bus 2, such as a Peripheral Component Interconnect
`(PCI) bus, connects together all the main components of a
`computer system. A CPU 12 of the computer system is
`isolated from the system bus 2 by a “Northbridge” 100
`which essentially mates the CPU for read and write access
`to memory 22 (usually RAM). The Northbridge 100 also
`mates the CPU 12 for read and write access to the system bus
`2 for interaction with I/O devices located elsewhere in the
`system.
`The system also has a “Southbridge” 200 which isolates
`the keyboard 60, the floppy 70 and the hard disk 50 from the
`system bus 2 and provides a lower cost way to connect these
`standard devices to the system bus 2 using, for example, an
`Industry Standard Architecture (ISA) bus. The Southbridge
`200 is also used in systems having high performance archi-
`tectures (such as 32-bit addressing) to free the high perfor-
`mance system bus from dealing directly with add-in devices
`such as modems or network cards, by connecting to the
`lower performance (16—bit) ISA bus 4. The lower perfor-
`mance ISA bus 4 connects directly to the modems and
`network cards that are older in design and cannot
`take
`advantage of high performance 32-bit addressing. The
`
`4
`Southbridge 200 contains controllers for the floppy 60, hard
`disk 50 and keyboard 70 as well as an ISA bus controller.
`Southbridge 200 frequently connects all the typical boot
`relevant devices such as hard drives and other bootable
`drives resident on networks through a network card 250. The
`video controller 40, is often a high performance add-in card
`connected via the system bus 2. These devices are well-
`known in the art and are described only for background. The
`present invention assumes use of existing mechanisms of
`BIOS for those devices on buses that are well known in the
`art. Mechanisms, in addition to those used previously, are
`required to implement a general extensible BIOS and also to
`provide support for new devices on new buses.
`BIOS is fixed code which is permanently stored in a ROM
`30 (or flash, EPROM etc.). Ordinarily, BIOS has two inde-
`pendent components, a system BIOS and one or more
`expansion BIOS such as the video BIOS (handling the
`display and output features of the system). The system
`BIOS, which is a feature of the motherboard,
`is most
`relevant to the present invention since several of the mecha-
`nisms of the system BIOS will be utilized in the extensible
`BIOS. The system BIOS has rudimentary mechanisms to
`recognize the video BIOS, for instance, or another expan-
`sion BIOS that exists on the bus. But the system BIOS is
`assumed to know the entire bus environment in advance of
`boot-time such that an expansion BIOS,
`if it
`is to be
`recognized, must be found on bridges and buses known to
`the system BIOS.
`the typical system BIOS will have
`For booting,
`preinstalled, hardwired code that knows about the South-
`bridge and configures it to establish the well known boot
`device interfaces such as keyboard controller, hard disk
`controller, floppy disk controller. The BIOS checks for the
`existence of a video expansion BIOS and initializes it if
`present. A memory check is then performed with the results
`thereof displayed on the video display. The system BIOS
`then checks that
`the hard disk 50 and floppy disk 70
`controllers are present at their pre-specified addresses and
`initializes their drivers. A search for additional expansion
`BIOS code is then performed. When the network card 250,
`which connects out to network disk drives, is introduced into
`a system,
`the network card 250 will
`typically be pre-
`packaged with an expansion BIOS that contains the network
`boot code. The network boot code is not typically included
`in the system BIOS. On personal computers of recent
`vintage, the boot device driver code has been limited to
`support for a keyboard, a hard disk or floppy disk that is
`already connected into the PC or that is a permanent feature
`of the computer. Thus, the BIOS knows well in advance
`what devices it is looking for, how in the system topology
`they are connected (for example, on an ISA bus) and what
`the order of boot-up will be. On a PC, the system BIOS
`usually provides a way for the user to change the boot drive
`from the hard disk back to the floppy and vice versa.
`However, the disk drives chosen must be known to the BIOS
`prior to the user changing the order, and consequently, prior
`to next boot instance. If the BIOS had to contain code that
`anticipated all of the various boot devices that could exist at
`any given boot instance,
`the BIOS would be large and
`complex, and would have to be upgraded whenever a new
`type of boot device or bus is added to a personal computer.
`Though auto-detection of disk drive parameters is known in
`the art of BIOS, auto-detection only works on drives to
`determine drive characteristics such as the number of tracks
`or number of heads. Such auto-detection, as currently
`employed, has not been able to determine presence of novel
`new disks/disk controllers on potentially novel new buses
`within a system.
`
`0012
`
`

`
`5,854,905
`
`5
`FIG. 3 illustrates a personal computer system of the type
`envisioned by the present invention. The system of FIG. 3
`includes all the components of the personal computer of
`FIG. 2. It should be understood that components common to
`FIGS. 2 and 3 not mentioned below operate in substantially
`the same way as described for FIG. 2, and thus,
`their
`description will not be repeated. An extended bridge may be
`resident on newer personal computers that wish to take
`advantage of the ability to access dynamically added or
`configured devices such as PCMCIA devices. For instance,
`PCI—bus based systems may have a PCI—to—PCI bridge that
`can connect a secondary PCI bus, (not shown) wherein the
`system BIOS of such a computer would already contain
`code to recognize the PCI-to-PCI bridge. 'Ihe system BIOS,
`in most PCI systems, already contains code providing the
`ability to program the bridge such that previously standard-
`ized boot devices resident on the secondary PCI bus can be
`recognized through the bridge. However,
`it
`is possible
`within the PCI environment to have multiple layers of or a
`hierarchy of bridges that connect to a multitude of different
`buses. These bridges may be of a type dissimilar to a PCI
`bridge. Thus over a secondary PCI bus,
`there may be a
`CardBus bridge which is a bridge to a CardBus adapter, and
`ultimately to a CardBus. The system BIOS will not typically
`contain code to enable a Card Bus bridge nor to be able to
`recognize and configure boot devices found on a CardBus.
`If the BIOS were to take account of all such possible
`dissimilar buses or bridges, it would be impractically large
`and expensive. Further, when a new bus or bridge is
`invented, an older BIOS would not contain the code to
`access them. PCI bridge recognition is made economical
`only because the system in which it operates, as described
`herein, already has a PCI bus as its primary system bus.
`Thus, the boot devices on the PCI bus appear as standardized
`devices typically found at well known memory and I/O
`address ranges which BIOS is capable of enabling.
`FIG. 3 shows an extended dissimilar bus topology. The
`extended bridge 300 mates two Point—to—Point PCMCIA
`Sockets 301 and 302 to the system bus 2. The sockets 301
`and 302 can have one or more interconnects wherein cards,
`such as the hard disk controller card 310 and bus adapter
`card 320, may be mounted. The topology of the system
`becomes arbitrarily complex by having an add-in bus 6 that
`is added through the bus adapter 320. The add-in bus 6 may
`be a Universal Serial Bus (USB), which is quite different
`from a PCI bus and requires diiferent control and status
`mechanisms. If add-in bus 6 is a USB then bus adapter 320
`would be a USB Controller. Since a BIOS for an ordinary
`PCI system is ill-equipped to interact with such a rich variety
`of buses, bridges and boot devices, the bridges will contain
`BIOS support of their own to handle configuration tasks.
`Several boot relevant devices are shown in FIG. 3 con-
`nected to the add-in bus 6 via a bridge for add-in bus 330.
`In the case where add-in bus 6 is a USB, bridge 330 could
`become a USB hub capable of interconnecting several
`additional devices. A second keyboard 75, a second hard
`disk 55 and second floppy disk 65 may all be connected to
`the system through add-in bus 330 and will need support
`from the system BIOS if they are to be used for boot-up. An
`oft-used feature of PCMCIA card sockets is the connecting,
`for example, of a third hard disk 57 via a hard disk controller
`card 310. Adding an extra hard drive with PCMCIA in this
`manner is very simple for a user and can happen frequently.
`Typically, a computer system has software to recognize the
`change in status of the socket, identify that a hard disk
`controller card has been added and provide access to the data
`on the hard disk. Such functionality however is frequently
`
`6
`only provided during the run-time of the computer system,
`after boot-up has already occurred and the operating system
`is loaded, and is not a feature/function of the system BIOS.
`The number of boot relevant devices in a system as shown
`in FIG. 3 now comes to seven. Thus a system BIOS would
`be larger (data/code) than a BIOS of a typical system with
`only 3 or so boot devices as in FIG. 2. Such a BIOS would
`be wasteful and unduly expensive, since these extra boot
`devices may not be present in the system at the next boot
`instance which means that a large portion of system BIOS is
`unused at that next instance of boot.
`
`Further, the number of boot relevant devices that can be
`present in a hierarchical structure of buses and bridges is
`virtually unlimited; FIG. 3 exemplifies only a simple hier-
`archy. One skilled in the art will readily appreciate that
`add-in buses can contain yet more bridges to connect more
`buses and consequently, connect more boot devices.
`Thus, an extensible BIOS is provided to extend the system
`BIOS itself to include code that will traverse the entire
`hierarchy of bridges and buses, initialize those bridges and
`buses, [Ind and detect boot devices within the system and
`allow boot-up of any detected boot devices. First, an over-
`view of the system BIOS as typically employed today will
`be described since the extensible BIOS in one embodiment
`extends the mechanisms of BIOS to recognize any boot
`relevant device however and wherever it is connected in
`system topology. The extensible BIOS allows system BIOS
`to recognize any type of bridge or new bus that may
`dynamically be present from one instance of boot to the
`next, without unduly expanding the system BIOS code in a
`monolithic fashion for each type of bus or bridge.
`Traditionally, plug-and-play mechanisms, while recogniz-
`ing the existence of new devices, do so only after the
`operating system is running such that the new device may
`only be used after the operating system is loaded. Windows
`’95TM (a product of Microsoft Corporation), for example,
`eliminates the use of BIOS after the operating system takes
`control post boot-up by providing native drivers to replace
`BIOS functions. But
`these mechanisms are too general-
`purpose and do not allow pre-operating system boot-up from
`devices that it only later recognizes
`FIG. 4 illustrates the code contained within a typical
`BIOS. In a typical BIOS, there are a set of routines that
`handle events after reset and power—on of the computer but
`before the invocation of an operating system (such as Disk
`Operating System (DOS)). This set of routines that boot the
`computer system prior to loading the operating system is
`known as Power—On—Self—Test (POST). Certain devices
`within the computer system must always be started and in a
`particular order to maintain functionality and accessibility
`throughout the boot-up process. For instance prior to even
`testing the memory (RAM), there is a need to invoke the
`video BIOS routines so that when the memory test does run,
`the user can monitor its progress through a display device.
`POST code 500, as shown on FIG. 4, contains several
`subroutines. First, the CPU is initialized. Next any initial-
`ization of the Northbridge takes place. The presence of a
`video expansion BIOS is detected and the video display
`controller is initialized. The memory is tested and initialized
`next with results displayed to the end user via the video
`display controller. This sequence of events occurs every time
`there is a power on, also known as a cold boot, or in some
`systems also upon a reset, also known as a warm boot. The
`CPU, memory and Northbridge initializations are grouped
`together as code block 510 in FIG. 4 since they are con-
`secutively executed. There is also code 520 to initialize the
`
`0013
`
`

`
`5,854,905
`
`7
`Southbridge, and on PCI systems, code 580 to operate a PCI
`bridge. The extensible BIOS proposed in the present inven-
`tion does not need to modify these sections of l’OS'I‘ code in
`order to initialize the system. Akeyboard will typically also
`be detected and its BIOS driver, keyboard driver code 560,
`initialized before any other expansion BIOS is detected. This
`allows the expansion BIOS to make use of the keyboard for
`user input if required. The typical BIOS will also have code
`that handles and performs boot device support operations,
`shown in FIG. 4 such as Boot Device ID, selection and
`policy management code 530. The focus of extensible BIOS
`is on (1) generic identification and initialization of bridge
`devices and buses,
`generic identification and initializa-
`tion of boot devices, and (3) attaching BIOS device drivers
`for these generic boot devices to the system BIOS for boot.
`The typical system BIOS will have several embedded
`device drivers to handle the I/O functions of particular
`well-known devices such as the hard disk or floppy. FIG. 4
`shows that there is hard disk driver code 540, floppy disk
`driver code 550, keyboard driver code 560 and system clock
`code 570. This list is only exemplary and not exhaustive of
`BIOS function so as not to obscure the invention.
`Current practice for system BIOS does allow for expan-
`sion BIOS code for video controllers and hard disk control-
`lers. FIG. 4 shows Video Expansion BIOS 590, which is a
`specialized BIOS “expansion” module, and is not in any way
`equivalent
`to the extensible BIOS provided for in the
`embodiments of the present invention. Each new device type
`may have its ow11 expansion BIOS, but the current practice
`limits the types of boot relevant devices that can have
`expansion BIOS support within the system BIOS. The
`practice for hard disk support allows for locally connected
`hard disks and network connected hard disks. FIG. 4 also
`shows Network Expansion BIOS 595 which allows BIOS to
`find networked hard disks. However,
`those are the only
`expansion BIOS opportunities possible in current practice.
`The expansion BIOS of current practice do not accommo-
`date novel controllers that may be located on dissimilar
`buses with previously non-accessible multiple boot relevant
`devices present. Such boot devices are non-accessible in that
`they are arbitrarily connected to the system and may appear
`on a bus which cannot be recursed into by the system BIOS
`for the purpose of detecting boot-up devices.
`FIG. 5 shows the extensible BIOS of an embodiment of
`the present invention. The CPU, Northbridge and Memory
`Initialization and Southbridge Initialization codes 510 and
`520, respectively, described with FIG. 4 operate in the same
`way as with the typical BIOS and will not be described
`again. The present
`invention provides for additions,’
`modifications to the system BIOS to support the extensible
`BIOS. These additions are contained in system extensible
`BIOS support 530 and a PCI extensible BIOS 521.
`System extensible BIOS support 530 includes three pro-
`cedures or code “modules”—new_ebootdev 536, Std_
`bridge_init 534 and boot 532. These modules are shown in
`Appendix 1 and are described below. The module new_
`ebootdev 536 is called when a new extensible boot device is
`identified. This procedure allows the system BIOS to deter-
`mine via its boot device policy whether a boot device will be
`used for the current instance of boot-up. The module new_
`ebootdev 536 is passed three parameters: entry, type and a
`pointer to boot device parameters. The “entry” parameter
`contains the memory address for an entry point for the new
`boot device’s I/O functions which are used to perform any
`I/O with the new boot device. The type parameter contains
`a value indicating the type of the new boot device, e.g.,
`0=bridge,
`I=hard disk, 2=floppy disk, 3=keyboard,
`4=mouse, 5=network disk, and 6=video display controller.
`
`8
`The pointer to device parameters (“device params”) con-
`tain a memory address for a block of memory filled with data
`specifically used by the new boot device’s boot I/O proce-
`dure. The “device params” memory address is passed to the
`boot I/O entry point for each I/O request. The device params
`data is used to allow the boot I/O procedure to manipulate
`the boot device and distinguish it from other boot devices on
`the same or different buses/bridges. Returning the “type”
`parameter of the new boot device allows the boot device
`policy (not shown) to determine whether to use the new boot
`device for the current instance of boot-u p. If the boot device
`will be used, the system BIOS saves the entry point and
`“device params” for use during boot I/O requests for the
`boot device.
`
`The module Std_bridge_init 534 is called internally by
`system BIOS to initialize a standard bridge, such as a PCI
`bridge as a starting point in recursing the bus and boot
`device topology. The module Std_bridge_init 534 initial-
`izes any PCI bridges known to the system BIOS. Instead of
`using monolithic code contained within the system BIOS,
`this embodiment shows that
`the same extensible BIOS
`apparatus and methodology is used. In particular, the module
`new_ebridge 524 is called for the PCI bridge. The module
`new_ebridge 524, when executed, recursively traverses the
`system topology (i.e. any and all buses, bridges and devices
`that are connected).
`The module boot 532 is a modification of the normal
`BIOS boot code module a11d allows extensible BIOS boot
`I/O procedures to be used instead of internal system BIOS
`I/O routines. These extensible BIOS boot I/O procedures
`must be used for any extensible BIOS boot devices selected
`by the system BIOS policy for this instance of system
`boot-up.
`Internal system BIOS I/O routines can only
`manipulate s

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