Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
BIOSS WITH OPROM MANAGERS
Document Type and Number:
WIPO Patent Application WO/2023/009146
Kind Code:
A1
Abstract:
BIOS for a computing device having internal and external PCIe devices includes an OpROM manager having a selectively enabled update feature. Upon boot-up of the computing device, the BIOS to copy to an execution database of the computing device an OpROM from each external PCIe device and an OpROM for each internal PCIe device from BIOS. With the update feature enabled, the OpROM manager provides for each PCIe device a latest version number of corresponding OpROM from versions stored in the execution database and an update database of the computing device to a remote OpROM monitor which maintains a database of a most recently certified OpROM for each PCIe device for the BIOS. For each PCIe device, if the most recently certified OpROM has a version number more recent than the latest OpROM version number, the OpROM manager copies the most recently certified OpROM to the update database.

Inventors:
HUANG TSUE-YI (TW)
FENG KANG-NING (TW)
HUNG MING CHANG (TW)
Application Number:
PCT/US2021/044067
Publication Date:
February 02, 2023
Filing Date:
July 30, 2021
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD DEVELOPMENT CO (US)
International Classes:
G06F8/65; G06F9/44
Foreign References:
US10430181B12019-10-01
US20040030877A12004-02-12
US20130074061A12013-03-21
Attorney, Agent or Firm:
CARTER, Daniel J. et al. (US)
Download PDF:
Claims:
CLAIMS

1. A basic input/output system (BIOS) for a computing device having internal and external PCIe devices, the BIOS comprising: an option ROM (OpROM) manager having a selectively enabled update feature, upon boot-up of the computing device, the BIOS to copy to an execution database of the computing device an OpROM from each external PCIe device and an OpROM for each internal PCIe device from BIOS, with the update feature enabled, the OpROM manager to: for each PCIe device, provide a latest version number of corresponding OpROM from versions stored in the execution database and an update database of the computing device to a remote OpROM monitor which maintains a database of a most recently certified OpROM for each PCIe device for the BIOS; and for each PCIe device, if the most recently certified OpROM has a version number more recent than the latest OpROM version number, copy the most recently certified OpROM to the update database.

2. The BIOS of claim 1 , if enabled, the OpROM manager to: for each PCIe device, if a most recently certified OpROM is stored in the update database, overwrite the corresponding OpROM in the execution database with the most recently certified OpROM from the update database; and execute the corresponding OpROM in the execution database to initialize each internal and external PCIe device.

3. The BIOS of claiml , the execution database in a volatile memory and update database in a nonvolatile memory of the computing device.

4. The BIOS of claim 1 , for each PCIe device, when the update database includes a corresponding earlier OpROM version, copying a most recently certified OpROM to the update database includes overwriting the earlier OpROM version.

5. The BIOS of claim 1 , with the update feature disabled, if the boot-up is an initial boot-up of the BIOS, the OpROM manager to: for each PCIe device, provide a latest version number of corresponding OpROM stored in the execution database to the remote OpROM monitor; and if a most recently certified OpROM of at least one PCIe device has a version number more recent than the latest OpROM version number, the OpROM manager to: provide a message to a user of the computing device listing the at least one PCIe device for which a more recently certified OpROM is available and recommending the user to enable the update feature; and execute the corresponding OpROM in the execution database to initialize each internal and external PCIe device; and if no PCIe devices have a most recently certified OpROM with a version number more recent than the latest OpROM version number, the OpROM manager to: execute the corresponding OpROM in the execution database to initialize each internal and external PCIe device.

6. The BIOS of claim 1 , with the update feature disabled, the OpROM manager to: check whether any PCIe devices have been changed; if at least one PCIe device has been changed, the OpROM manager to: for each PCIe device, provide a latest version number of corresponding OpROM stored in the execution database to the remote OpROM monitor; and if a most recently certified OpROM of at least one PCIe device has a version number more recent than the latest OpROM version number, the OpROM manager to: provide a message to a user of the computing device listing the at least one PCIe device for which a more recently certified OpROM is available and recommending the user to enable the update feature; and execute the corresponding OpROM in the execution database to initialize each internal and external PCIe device; and if no PCIe devices have been changed, the OpROM manager to: execute the corresponding OpROM in the execution database to initialize each internal and external PCIe device.

7. A computing device comprising: an execution option ROM (OpROM) database in a volatile memory; an updated OpROM database in a nonvolatile memory; and a basic input/output system (BIOS) including an OpROM manager having a selectively enabled update feature, upon boot-up of the computing device, the BIOS to copy to an execution database of the computing device an OpROM from each external PCIe device and an OpROM for each internal PCIe device from BIOS, with the update feature enabled, the OpROM manager to: for each PCIe device, provide a latest version number of corresponding OpROM from versions stored in the execution database and an update database of the computing device to a remote OpROM monitor which maintains a database of a most recently certified OpROM for each PCIe device for the BIOS; and for each PCIe device, if the most recently certified OpROM has a version number more recent than the latest OpROM version number, copy the most recently certified OpROM to the update database.

8. The computing device of claim 7, wherein the OpROM manager is to: for each PCIe device, if a most recently certified OpROM is stored in the update database, overwrite the corresponding OpROM in the execution database with the most recently certified OpROM from the update database; and execute the corresponding OpROM in the execution database to initialize each internal and external PCIe device.

9. A method of operating a basic input/output system (BIOS) to manage option ROM (OpROM) updates of PCIe devices of a computing device, the method comprising: upon boot-up of the computing device, copying to an execution database of the computing device an OpROM from each external PCIe device and an OpROM for each internal PCIe device from BIOS; and with an update feature enabled, to: for each PCIe device, providing a latest version number of corresponding OpROM from versions stored in the execution database and an update database of the computing device to a remote OpROM monitor which maintains a database of a most recently certified OpROM for each PCIe device for the BIOS; and for each PCIe device, if the most recently certified OpROM has a version number more recent than the latest OpROM version number, copying the most recently certified OpROM to the update database.

10. The method of claim 9, further including: for each PCIe device, if a most recently certified OpROM is stored in the update database, overwriting the corresponding OpROM in the execution database with the most recently certified OpROM from the update database; and executing the corresponding OpROM in the execution database to initialize each internal and external PCIe device.

11. The method of claim 9, further including: when the update database includes a corresponding earlier OpROM version, copying a most recently certified OpROM to the update database includes overwriting the earlier OpROM version.

12. The method of claim 9, further including: with the update feature disabled, if the boot-up is an initial boot-up of the

BIOS: for each PCIe device, providing a latest version number of corresponding OpROM stored in the execution database to the remote OpROM monitor; and if a most recently certified OpROM of at least one PCIe device has a version number more recent than the latest OpROM version number: providing a message to a user of the computing device listing the at least one PCIe device for which a more recently certified OpROM is available and recommending the user to enable the update feature; and executing the corresponding OpROM in the execution database to initialize each internal and external PCIe device.

13. The method of claim 12, further including: if no PCIe devices have a most recently certified OpROM with a version number more recent than the latest OpROM version number: executing the corresponding OpROM in the execution database to initialize each internal and external PCIe device.

14. The method of claim 9 with the update feature disabled and if the boot-up is not an initial boot-up, the method further including: checking if any PCIe devices have been changed; and if at least one PCIe device has been changed: for each PCIe device, providing a latest version number of corresponding OpROM stored in the execution database to the remote OpROM monitor; and if a most recently certified OpROM of at least one PCIe device has a version number more recent than the latest OpROM version number: providing a message to a user of the computing device listing the at least one PCIe device for which a more recently certified OpROM is available and recommending the user to enable the update feature; and executing the corresponding OpROM in the execution database to initialize each internal and external PCIe device.

15. The method of claim 14, further including: if no PCIe devices have been changed: executing the corresponding OpROM in the execution database to initialize each internal and external PCIe device.

Description:
BIOSs WITH OpROM MANAGERS

Background

[0001] In computing, BIOS (Basic Input/Output System) is firmware which is the first software to run during a booting process (power-on/startup) of a computing device. BIOS initializes and tests system hardware components and loads a boot loader from a storage which initializes an operating system. Hardware initialized during the booting process include PCIe (Peripheral Component Interconnect Express) devices, where such PCIe devices may be integrated within the computing device (e.g., as chips on a motherboard), so-called “internal” PCIe devices, or included as expansion cards, so-called “external” PCIe devices. PCIe devices may include devices such as WLAN (wireless local area network) devices, sound cards, and a graphics card, for example. Each PCIe device, both internal and external, has a corresponding Option ROM (OpROM), which is firmware executed by BIOS during startup to initialize the PCIe device. Typically, OpROM for internal PCIe devices is stored in BIOS, while OpROM for external PCIe devices is stored on the expansion card.

Brief Description of the Drawings

[0002] FIG. 1 is a block and schematic diagram generally illustrating a BIOS including an OpROM manager for a computing device, according to one example. [0003] FIG. 2A is a table generally illustrating OpROM version status, according to one example.

[0004] FIG. 2B is a table generally illustrating recommended authenticated OpROM version updates, according to one example.

[0005] FIG. 3 is a block and schematic diagram generally illustrating a computing device including a BIOS having an OpROM manager, according to one example.

[0006] FIG. 4 is a flow diagram illustrating operation of a BIOS including an OpROM manager, according to one example of the present disclosure.

[0007] FIG. 5 is a flow diagram illustrating operation of a BIOS including an OpROM manager, according to one example of the present disclosure.

Detailed Description

[0008] In the following detailed description, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration specific examples in which the disclosure may be practiced. It is to be understood that other examples may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present disclosure is defined by the appended claims. It is to be understood that features of the various examples described herein may be combined, in part or whole, with each other, unless specifically noted otherwise.

[0009] As used herein, a basic input/output system (BIOS) refers to hardware or hardware and instructions to initialize, control, or operate a computing device prior to execution of an operating system (OS) of the computing device. Instructions included within a BIOS may be software, firmware, microcode, or other programming that defines or controls functionality or operation of a BIOS. In one example, a BIOS may be implemented using instructions, such as platform firmware of a computing device, executable by a processor. A BIOS may operate or execute prior to the execution of the OS of a computing device. A BIOS may initialize, control, or operate components such as hardware components of a computing device and may load or boot the OS of computing device.

[0010] In some examples, a BIOS may provide or establish an interface between hardware devices or platform firmware of the computing device and an OS of the computing device, via which the OS of the computing device may control or operate hardware devices or platform firmware of the computing device. In some examples, a BIOS may implement the Unified Extensible Firmware Interface (UEFI) specification or another specification or standard for initializing, controlling, or operating a computing device.

[0011] In examples, during a booting process (power-on/startup) of a computing device, a BIOS initializes and tests system hardware components and loads a boot loader from a storage which initializes an operating system. Flardware initialized during the booting process may include PCIe (Peripheral Component Interconnect Express) devices, where such PCIe devices may be integrated within the computing device (e.g., as chips on a motherboard), so-called “internal” PCIe devices, or included as expansion cards, so-called “external” PCIe devices. PCIe devices may include devices such as a WLAN (wireless local area network) devices, sound cards, and graphics cards, for example.

[0012] Each PCIe device, both internal and external, has a corresponding Option ROM (OpROM), which is firmware executed by BIOS during startup to initialize the PCIe device. Typically, BIOS is configured for a specific computing device (e.g., a specific motherboard and chipset) so that OpROM of internal PCIe devices is stored in BIOS, while OpROM for external PCIe devices is stored in memory (e.g., Flash ROM) on the expansion card. Over time, updated versions of OpROM for PCIe devices may be issued by PCIe device vendors to fix issues with the PCIe devices or to implement new features or changes. For similar reasons, the computing device manufacturer (Enterprise) may provide updated versions of BIOS.

[0013] With regard to external PCIe devices, currently, a user of a computing device must be aware of when updated versions of vendor OpROM become available. To update the OpROM, the user must download the updated version of vendor OpROM using an IHV toolkit (Independent Hardware Vendor toolkit) provided by the vendor. Because the updated OpROM version and IHV toolkit are not certified by the computing device Enterprise, there is no guarantee that the downloaded OpROM and/or IHV toolkit is secure such that the Flash ROM may potentially be corrupted during the user-performed update process.

[0014] For internal PCIe devices having their corresponding OpROM stored in BIOS, a user must wait for an Enterprise BIOS update in order to update the OpROM with the latest Vendor versions. In addition to waiting for a BIOS update, BIOS OpROM may potentially be corrupted during such update. Furthermore, when BIOS is updated, existing versions of OpROM of external PCIe devices may not be compatible with the updated version of BIOS which may potentially result in malfunctioning of the external PCIe cards. In such cases, since multiple external PCIe devices may be simultaneously malfunctioning, a user may mistakenly believe the problem lies with the BIOS and, thus, have the perception of a bad user experience with the Enterprise, even though the problem resides with the OpROM of the external PCIe devices (which is provided by the PCIe device vendor).

[0015] In accordance with one example of the present disclosure, as will be described in greater detail below, a BIOS for a computing device is disclosed, wherein the BIOS includes an OpROM manager which, upon boot-up of the computing device, checks a current version of OpROM of each PCIe device (both internal and external) against a most recent authenticated version of OpROM for the current BIOS version. For each PCIe device, if a more recent authenticated version is available, the OpROM manager uses the more recent OpROM version to initialize the PCIe device. In examples, the OpROM manager communicates with an OpROM monitor remote from the computing device, wherein the remote OpROM monitor maintains a database of the most recent authenticated version of OpROM for each for each vendor PCIe device for each version of each different BIOS provided by an Enterprise providing the computing device. In one example, the remote OpROM monitor is provided by the Enterprise providing the computing device. [0016] In examples, for each PCIe device, when a more up-to-date authenticated version of OpROM than what is currently being employed by the computing system is available (e.g., based on the Vendor ID, product ID, and BIOS version), the OpROM manager downloads the more up-to-date, authenticated version of OpROM from the remote OpROM monitor to an “update” database in a nonvolatile memory of the computing device. In examples, after checking for a most up-to-date authenticated OpROM version for each PCIe device, the OpROM manager scans the BIOS, each external PCIe card, and the Updated OpROM database and, for each PCIe device, copies the most up-to-date version of OpROM to an execution database in a memory of the computing device (e.g., a volatile memory). In one example, as part of the boot process, the BIOS then executes the OpROM stored in the execution database to initialize each PCIe device (wherein the OpROM stored in the execution database represents the most up-to-date Enterprise-certified OpROM version for each PCIe device).

[0017] A BIOS including an OpROM manager, in accordance with the present disclosure, automatically updates and executes the most up-to-date, Enterprise- certified version of OpROM for each PCIe device for the version of BIOS employed by the corresponding computing device, thereby ensuring optimal performance of each PCIe device and eliminating reliance of OpROM updates being recognized and performed by a user and the potential for using unverified (not secure) OpROM and IHV toolkits. Additionally, a BIOS with an OpROM manager, in accordance with the present disclosure, updates OpROM of internal PCIe devices without having to wait for the BIOS to be updated. Furthermore, by downloading updated versions of vendor OpROM into an Updated OpROM database in a nonvolatile memory, which is separate from PCIe card memory (e.g., Flash ROM), a BIOS in accordance with the present disclosure eliminates the potential for corruption of on-card memory.

[0018] FIG. 1 is a block and schematic diagram generally illustrating a BIOS 20, including an OpROM manager (OM) 22, for a computing device, such as computing device 30, in accordance with the present disclosure. Computing device 30 may be any suitable computing device or platform, such as a personal computer, a workstation, portable computer, and server, for example. In examples, computing device 30 includes at least one central processing unit (CPU), such as CPU 32, a volatile memory 34, and a nonvolatile memory 36. [0019] In examples, computing device 30 further includes a number of internal PCIe devices 38, such internal PCIe devices 38-1 to 38-n, and a number of external PCIe devices 40, such as external PCIe devices 40-1 to 40-n. In examples, internal PCIe devices 38 are integrated within computing device 30, such as on a motherboard of computing device 30, for example, whereas external PCIe devices 40 are stand-alone devices, such as cards, for example, which are installed in PCIe expansion slots, for instance. In examples, as illustrated, each internal PCIe device 38 has a corresponding OpROM 39 stored as part of BIOS 20, indicated as OpROM 39-1 to 39-n, and each external PCIe device 40 has a corresponding OpROM 41 , illustrated as OpROM 41 -1 to 41 -n, stored as part of the corresponding external PCIe device 40 (such as on a PCIe card, for example).

[0020] As described above, such OpROM is firmware for initializing the corresponding PCIe device. In examples, each PCIe device 38 and 40 (i.e., both internal and external) has a corresponding vendor ID (representing the vendor of the PCIe device, and a corresponding device ID (representing the device type of the PCIe device, e.g., a graphics card, a sound card, WLAN, etc.), with corresponding OpROM 39 and 41 each having a version number. BIOS 20 also has a version number. As described above, BIOS is typically designed to operate with a specific computing device, such as BIOS 20 being designed to operate with computing device 30, with new/updated versions of BIOS 20 designed to fix identified problem(s) with a previous version or to add/update supported features. Similarly, new versions of OpROM 39 and 41 may be designed to operate with specific BIOS versions, with new/updated versions of OpROM 39 and 41 being designed to fix identified problem(s) with a previous version or to operate with updated versions of BIOS 20.

[0021] As also described above, in examples, BIOS 20 is firmware which initializes and tests system hardware components during a booting/power-up process of computing device 30, such as by executing OpROM 39 and 40 to initialize corresponding internal and external PCIe devices 38 and 40. In examples, BIOS 20 may be a standalone chip installed within computing device 30 (e.g., on a motherboard of computing device 30). In other examples, BIOS 20 may be stored within other memory devices of computing device 30, such as nonvolatile memory 36, for example.

[0022] In one example, as will be described in greater detail below, volatile memory 34 of computing device 20 includes an execution OpROM database 44 including an OpROM 46 for each internal and external PCIe device 38 and 40, illustrated as OpROM 46-1 to 46-n, with each OpROM 46 being a copy of a most recent (i.e., up-to-date) authenticated version of OpROM for each internal and external 38 and 40 (e.g., as authenticated by the manufacturer/Enterprise supporting computing device 30). In examples, each OpROM 46-1 to 46-n is executed during by BIOS 20 during boot-up of computing device 30 to initialize the corresponding one of the internal and external PCIe devices 38 and 40. Execution OpROM database 44 may also sometime be referred to herein as DB_M.

[0023] In one example, as will also be described in greater detail below, nonvolatile memory 36 includes an updated OpROM database 48 (which may also sometimes be referred to herein as DB_NVM). In examples, updated OpROM database 48 includes a number of OpROM 50, illustrated as OpROM 50-1 to 50-n, where each OpROM 50 corresponds to a different one of the internal or external PCIe devices 38 and 40 and is an updated version of OpROM for the corresponding PCIe device 38, 40 relative to OpROM 39 or 41 respectively stored in BIOS 20 or the corresponding PCIe device 40. In examples, each OpROM 50 is a most up-to-date Enterprise-authenticated, vendor issued version of OpROM for the corresponding PCIe device 38 or 40. [0024] In examples, which are described in greater detail below, a remote OpROM verification module 60 maintains an authenticated OpROM database 62 including a most recent Enterprise-authenticated vendor-issued version of OpROM (illustrated as OpROM 64-1 to 64-n) for any number of PCIe devices, including internal and external PCIe devices 38 and 40 of computing device 30. In examples, computing devices is in communication with OpROM verification module 60 via a network, such as the Internet.

[0025] An example of the operation of BIOS 20 is described below. According to examples, upon power-up, as part of booting process, BIOS 20 copies OpROM 39-1 to 39-n for internal PCIe devices 38-1 to 38-n, and OpROM 41-1 to 41 -n of external PCIe devices 40-1 to 40-n to execution OpROM database 44 in volatile memory 34, with such copies being indicated as OpROM 46-1 to 46- n. In examples, OpROM manager 22 has a selectively enabled update feature which can be enabled/disabled by via a user-accessible setup menu. An example of operation of OpROM manager 22 when the update feature is disabled is described in greater detail below (see FIGs. 3 and 4).

[0026] When the update feature is enabled, OpROM manager 22, according to one example, provides to OpROM verification module 60 a status of a latest OpROM version for each internal and external PCIe device 38 and 40 from among OpROM 46-1 to 46-n in execution OpROM database 44 and OpROM 50-1 to 50-n in updated OpROM database 48. For example, if execution OpROM database 44 includes an earlier version of OpROM for a given PCIe device, and updated OpROM database 48 includes a more recent version of the OpROM for the given PCIe device, OpROM manager 22 provides a status of only the more recent version of OpROM to OpROM verification module 60. [0027] In one example, OpROM manager 22 provides a status of a status of a latest OpROM version for each internal and external PCIe device 38 and 40 in the form of an OpROM status table. FIG. 2A generally illustrates an example of an OpROM status table 70 provided by OpROM manager 22 to OpROM verification module 60. As illustrated, OpROM status table 70 includes an entry for each PCIe device employed by computing device, illustrated as PCIe devices 1 to n, with each PCIe device individually identified via industry standard vendor and device ID’s. For each PCIe device 1-n, OpROM status table 70 further includes a version of OpROM currently employed by BIOS 20 to initialize internal and external PCIe devices 38 and 40, where, as described above, such the currently employed OpROM versions may reside in execution OpROM database 44 and/or updated OpROM database 48. Further, in examples, table 70 provides the version of BIOS, such BIOS 20, currently employed by computing device 30.

[0028] In one example, in response to receiving OpROM status table 70,

OpROM verification module 60 compares the current OpROM version for each PCIe indicated in status table 70 with the most recent Enterprise-authenticated vendor-issued version of OpROM 64-1 to 64-n in authenticated OpROM database 62. In one example, based on such comparison, OpROM verification module 60 returns to BIOS 20 an OpROM recommendation table which includes a recommended updated OpROM version for a PCIe device when the corresponding Enterprise-authenticated OpROM version 64 in authenticated OpROM database 62 is more recent (more up-to-date) than the corresponding current OpROM version provided in OpROM status table 70.

[0029] FIG. 2B generally illustrates an example of an OpROM recommendation table 72 provided by OpROM verification module 60 to OpROM manager 22 of BIOS 20. As illustrated, similar to OpROM status table 70, OpROM recommendation table 72 includes an entry for each PCIe device employed by computing device, illustrated as PCIe devices 1 to n, but, for each PCIe device, additionally includes a recommended OpROM version to which to upgrade when the corresponding Enterprise-authenticated OpROM version 64 in authenticated OpROM database 62 is more recent (more up-to-date) than the corresponding current OpROM version provided in OpROM status table 70. [0030] In the example of FIG. 2B, the most recent Enterprise-authenticated OpROM version in authenticated OpROM database 62 corresponding to the PCIe device 1 (Vendor ID 0x8086, Device ID 0x1234) of OpROM recommendation table 72 is not more recent (i.e., not updated) relative to the current OpROM version included in OpROM status table 70. As such, a recommended OpROM version for such PCIe device is not included in OpROM recommendation table 72.

[0031] Conversely, the most recent Enterprise-authenticated OpROM version in authenticated OpROM database 62 corresponding to the PCIe device n (Vendor ID 0x6409, Device ID 0x5678) is more recent (i.e., updated) relative to the current OpROM version included in OpROM status table 70. As such, a recommended OpROM version (i.e., recommended OpROM version 23.40) for replacing the current OpROM version (i.e., OpROM version 21.50) for such PCIe device is included in OpROM recommendation table 72.

[0032] Returning to FIG. 1, upon receiving OpROM recommendation table 72 from OpROM verification module 60, OpROM manager 22 determines whether there is a recommended updated OpROM version for any of the internal and external PCIe devices 38 and 40 of computing device 30. If so, OpROM manager 22 downloads each recommended updated OpROM version indicated in OpROM recommendation table 72 from authenticated OpROM database 62 to updated OpROM database 48. In examples, if an earlier OpROM version for exists in updated OpROM database 48 for a given PCIe device having a recommended updated OpROM version in OpROM recommendation table 72, OpROM manager 22 overwrites the earlier version with the recommended updated OpROM version. As a result, updated OpROM database 48 includes the most recently vendor updated and Enterprise authenticated OpROM version for each internal and external PCIe device 38 and 40 employed by computing device 30.

[0033] In examples, based on OpROM recommendation table 72, after downloading each recommended updated OpROM version from authenticated OpROM database 62, or if there were no recommended updated OpROM versions in table 72, OpROM manager 22 updates OpROM 46-1 to 46-n of execution OpROM database with corresponding more recent versions of OpROM from updated OpROM database 48. In one example, for each internal and external PCIe device 38 and 40, if a more recent OpROM version 50 is stored in updated OpROM database 48, OpROM manager 22 overwrites the corresponding outdated OpROM version 46 in execution OpROM database 44 with the more recent OpROM version 50 from updated OpROM database 48. For example, with reference to table 2 of FIG. 2B, if execution OpROM database 44 includes a version 21.50 of OpROM 46 for the PCIe device having vendor ID 0x6409 and device ID 0x5678, OpROM manager 22 overwrites such version with the updated version 23.40 of corresponding OpROM 50 from updated OpROM database 48. [0034] As a result, execution OpROM database 44 includes the most recently Enterprise-authenticated OpROM version 46 for each internal and external PCIe device 38 and 40 employed by computing device 30. Subsequently, OpROM manager 22, as part of the booting process, initializes each internal and external PCIe device 38 and 40 using its corresponding OpROM 46 in execution OpROM database 44.

[0035] FIG. 3 is a block and schematic diagram generally illustrating computing device 30 including BIOS 20 having OpROM manager 22, according to one example of the present disclosure. Computing device 30 with BIOS 20 operates similarly to that described above by FIGs. 1-2B so as to operate with internal and external PCIe devices 38 and 40 with the most up-to-date Enterprise- authenticated versions of OpROM.

[0036] In one example, OpROM verification module 60 is implemented on an Enterprise server 80 (e.g., a same Enterprise supporting computing device 30). In one example, OpROM verification module 60 communicates with any number of vendors 84, illustrated as vendors 84-1 to 84-n. Each vendor 84 provides any number of PCIe devices, such as internal and external PCIe devices 38 and 40 employed computing device 30, and provides corresponding OpROM for such devices, such as illustrated by OpROM 85-1 to 85-n and 86-1 to 86-n. As described above, over time, vendors 84 provide updated versions of such OpROM to fix problems with or to provide new features for the corresponding PCIe device. In examples, OpROM verification module 60 communicates with vendors 84 and downloads authenticated updated versions of OpROM therefrom so as to maintain authenticated OpROM database 62 with the most recent version of OpROM for each PCIe device provided by vendors 84.

[0037] FIG. 4 is a flow diagram generally illustrating a method 100 of operation a BIOS, such as BIOS 20 of computing device 30 (e.g., see FIG. 3), as described above, according to one example. Method 100 is initiated at power-up 102 of computing device in which the BIOS is installed, such as power-up of computing device 30 in which BIOS 20 is installed, where power-up initiates a booting process of computing device 30. At 104, method 100 includes the BIOS copying OpROM of internal and external PCIe devices of the computing system from BIOS and corresponding PCIe cards into an execution OpROM database in a volatile memory, such as BIOS 20 copying OpROM 39-1 to 39-n for internal PCIe devices 38-1 to 38-n, and OpROM 41-1 to 41 -n of external PCIe devices 40-1 to 40-n to execution OpROM database 44 in volatile memory 34.

[0038] At 105, method 100 queries whether an OpROM manager of the BIOS is enabled, such as OpROM manager 22 of BIOS 20. In examples, a user of the computing device, such as computing device 30, can selectively enable/disable the OpROM manager via a setup window/procedure of the BIOS, such as during a setup of BIOS 20. If the answer to the query at 105 is “yes”, method 100 proceeds to 106.

[0039] At 106, the BIOS, via the OpROM manager, generates an OpROM status table based on OpROM in the execution OpROM database and on OpROM in an updated OpROM database, such as OpROM manager 22 generating OpROM status table 70 (see FIG. 2A) based on OpROM 46-1 to 46-n in execution OpROM database 44 and on OpROM 50-1 to 50-n in updated OpROM database 48. In one example, the BIOS, such as BIOS 20 (via OpROM manager 22), provides in the status table, such as status table 70, the most up-to-date version of OpROM from the execution and updated OpROM databases, such as execution and updated OpROM databases 44 and 48, for each PCI device, such as internal and external PCIe devices 38 and 40. As such, the OpROM status table includes one OpROM version entry for each PCIe device, with such entry being the most up-to-date OpROM version for each PCIe derive (both internal and external) currently being employed by the computing device. As described in greater detail below, since execution updated OpROM database 48 includes updated versions of OpROM for internal and external PCIe devices 38 and 40, and OpROM database 44 includes the OpROM stored in BIOS 20 and external PCIe devices 40, the most up-to-date OpROM version for a given PCIe device in OpROM status table 70 may be stored in either execution OpROM database 44 or updated OpROM database 48.

[0040] At 108, the BIOS transmits the OpROM status table to a remote verification module, such as BIOS 20 transmitting OpROM status table 70 to remote OpROM verification module 60. At 110, BIOS 20 receives from the remote OpROM verification module 60 an OpROM recommendation table (see OpROM recommendation table 72 of FIG. 2B) including recommended authenticated updated OpROM versions to employ for each PCIe device, if such authenticated updated OpROM version exist. For example, with reference to FIG. 3, for each PCIe device (both internal and external devices 38 and 40), remote OpROM verification module 60 checks authenticated OpROM database 62 to see if a more recent version of OpROM exists as compared to the OpROM version for the PCIe device indicated in OpROM status table 70. If a more recent version of OpROM exists for a PCIe device, OpROM verification module 60 includes the version number such updated OpROM version for the PCIe device in the OpROM recommendation table, such as illustrated by OpROM recommendation table 72 of FIG. 2B.

[0041] At 112, method 100 queries whether an updated OpROM version exists for one or more of the external and internal PCIe devices 38 and 40. If the answer to the query is “yes”, method 100 proceeds to 114, where the BIOS, such as BIOS 20, downloads each verified updated OpROM version indicated by the OpROM verification table from authenticated OpROM database 62 of OpROM verification module 60 to updated OpROM database 48 in nonvolatile memory 36. For each PCIe device having a recommended updated OpROM version, if updated OpROM database 48 includes an earlier OpROM version, BIOS 20 overwrites the earlier OpROM version with the recommended updated OpROM version downloaded from remote OpROM verification module 60.

[0042] Method 100 then proceeds to 116, where if any OpROM 46 in execution OpROM database 44 has a corresponding updated OpROM version 50 in updated OpROM database 48, BIOS 20 overwrites the OpROM 46 in execution OpROM database 44 with the corresponding updated OpROM version 50 from updated OpROM database 48, such that for each internal and external PCIe device 38 and 40, execution OpROM database 44 includes the most up-to-date authenticated OpROM version. If the answer to the query at 112 is “no”, since there are no recommended OpROM updates from OpROM verification module 60, method 100 skips 114 and proceeds directly to 116 (where previously updated OpROM versions are copied to execution OpROM database 44). [0043] Method 100 then proceeds to 118, where BIOS 20 initializes each internal and external PCIe device 38 and 40 using the corresponding one of OpROM 46-1 to 46-n in execution OpROM database 44. In one example, if the answer to the query at 105 is “no”, meaning that the OpROM manager is selectively disabled, method 100 proceeds directly to 118. After initializing internal and external PCIe devices 38 and 40, method 100 is complete and proceeds to 120 (and repeats method 100 upon the next power-up/boot-up of computing device 30).

[0044] In examples, method 100 may additionally include queries 122 and/or 124. In one example, if the answer to the query at 105 is “no”, method 100 additionally includes 122, where it is queried whether BIOS 20 has been updated, such that computing device 30 is being booted for the first time with updated BIOS 20. In one example, BIOS 20 includes a bit which acts as a flag to indicate whether it is the first time BIOS 20 is being booted. In one example, the flag bit being “set” is indicative that this is the first time computing device 30 is being booted with updated BIOS 20. During such initial boot-up of BIOS 20, the flag bit is removed to indicate that each subsequent boot-up of BIOS 20 is not the initial boot-up. In one example, if the flag bit is not set, meaning that the answer to the query at 122 is “no”, method 100 proceeds directly to 118. If the flag bit is “set”, meaning that the answer to the query at 122 is “yes”, method 100 proceeds to method 130 illustrated by the flow diagram of FIG. 5.

[0045] In one example, if the answer to the query at 105 is “no”, method 100 additionally includes 124, where it is queried whether any internal or external PCIe devices 38 and 40 have been changed. In one example, BIOS 20 detects changes in PCI devices by scanning and recording the PCIe devices when computing device 30 is booted. On the next boot, BIOS 20 compares the currently recorded PCIe devices to the PCIe devices recorded on the previous boot to determine whether PCIe devices have been changed. The PCI devices recorded during the current boot and then saved over the PCI devices recorded during the previous boot, and the process is repeated for each boot. In other examples, BIOS 20 can detect whether PCIe devices have been changed by monitoring hardware detect pins. Both such techniques are known ways for BIOS to detect hardware changes. It is noted that any number of suitable techniques may be employed. If the answer to the query at 124 is “no”, method 100 proceeds directly to 118. If the answer to the query at 124 is ‘yes”, method 100 proceeds to method 130 illustrated by the flow diagram of FIG. 5.

[0046] FIG. 5 is a flow diagram generally illustrating a method 130 of operation a BIOS, such as BIOS 20 of computing device 30 (e.g., see FIG. 3), as described above, according to one example. Method 130 begins at 132 from either 122 or 124 of method 100 of FIG. 4. At 134, similar to 106 of method 100 of FIG. 4, OpROM manager 22 generates an OpROM status table, such as illustrated by OpROM status table 70 of FIG. 3. Flowever, since at 134 the automatic OpROM update feature of OpROM manager 22 is selectively disabled, OpROM manager 22 generates OpROM status table 70 based only on OpROM 46-1 to 46-n in execution OpROM database 44. As such, OpROM status table 70 generated at 134 includes, for each internal and external PCIe device 38 and 40, the version of the corresponding OpROM 39-1 to 39-n stored in BIOS 20 and of OpROM 41-1 to 41 -n stored in external PCIe devices 40.

[0047] At 136, OpROM manager 22 transmits the OpROM status table 70 generated at 134 to remote OpROM verification module 60. At 138, similar to that described at 110 of method 100, BIOS 20 receives from the remote OpROM verification module 60 an OpROM recommendation table (see OpROM recommendation table 72 of FIG. 2B) including recommended authenticated updated OpROM versions to employ for each PCIe device, if such authenticated updated OpROM version exist. For example, with reference to FIG. 3, for each PCIe device (both internal and external devices 38 and 40), remote OpROM verification module 60 checks authenticated OpROM database 62 to see if a more recent version of OpROM exists as compared to the OpROM version for the PCIe device indicated in OpROM status table 70. If a more recent version of OpROM exists for a PCIe device, OpROM verification module 60 includes the version number such updated OpROM version for the PCIe device in the OpROM verification table, such as illustrated by OpROM verification table 72 of FIG. 2B.

[0048] At 140, method 130 queries whether an updated OpROM version exists for one or more of the external and internal PCIe devices 38 and 40. If the answer to the query is “yes”, (meaning that OpROM recommendation table 72 includes a recommended updated OpROM version for one or more internal and external PCIe devices 38 and 40), method 140 proceeds to 142. At 142, OpROM manager 22 provides a popup message (via a monitor, not illustrated in FIGs. 1 and 3) informing a user of which PCIe devices should have corresponding OpROM updated (by indicating the Vendor ID and Device ID) and providing the version number of available OpROM update, and also recommending that the user should enable the automatic OpROM update feature (as well as providing instructions to the user for how to enable the automatic OpROM update feature via the BIOS setup menu).

[0049] Method 140 then proceeds to 118 of method 100 of FIG. 4, as indicated at 144. If the answer to the query at 140 is “no”, since there are no recommended OpROM updates from OpROM verification module 60, method 140 skips 142 and proceeds to 118 of method 100 of FIG. 4, as indicated at 144.

[0050] Although specific examples have been illustrated and described herein, a variety of alternate and/or equivalent implementations may be substituted for the specific examples shown and described without departing from the scope of the present disclosure. This application is intended to cover any adaptations or variations of the specific examples discussed herein. Therefore, it is intended that this disclosure be limited only by the claims and the equivalents thereof.