US20160321132A1 - Receiving an update code prior to completion of a boot procedure - Google Patents
Receiving an update code prior to completion of a boot procedure Download PDFInfo
- Publication number
- US20160321132A1 US20160321132A1 US15/204,679 US201615204679A US2016321132A1 US 20160321132 A1 US20160321132 A1 US 20160321132A1 US 201615204679 A US201615204679 A US 201615204679A US 2016321132 A1 US2016321132 A1 US 2016321132A1
- Authority
- US
- United States
- Prior art keywords
- electronic device
- code
- fault
- network stack
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0709—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0736—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0769—Readable error formats, e.g. cross-platform generic formats, human understandable formats
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Definitions
- An electronic device can include various modules that include machine-readable instructions, such as a boot code (e.g. Basic Input/Output System code or Unified Extensible Firmware Interface (UEFI) code), an operating system, an application, and so forth.
- boot code e.g. Basic Input/Output System code or Unified Extensible Firmware Interface (UEFI) code
- UEFI Unified Extensible Firmware Interface
- FIG. 1 is a block diagram of an electronic device that incorporates some implementations
- FIG. 2 is a flow diagram of a module recovery process, in accordance with some implementations.
- FIG. 3 is a block diagram of an electronic device according to further implementations.
- a module (including machine-readable instructions) in an electronic device can exhibit a fault due to various causes.
- the fault can be due to corruption caused by malware (e.g. virus or other type of malicious code).
- a fault can also be caused by corruption in various data structures used by the module. There can be other causes of faults in a module.
- Example modules in an electronic device can include any one or a combination of the following: a boot code (e.g. Basic Input/Output System (BIOS) code or Unified Extensible Firmware Interface (UEFI) code), an operating system, a device driver, an application, and so forth.
- BIOS Basic Input/Output System
- UEFI Unified Extensible Firmware Interface
- a fault in a module of the electronic device can cause malfunction of the electronic device, or may lead to reduced performance of the electronic device. For example, if the boot code or operating system of the electronic device were to crash, then the electronic device may no longer be useable, since the electronic device would not be able to start properly. As another example, if a device driver were to exhibit a fault, then access to a corresponding hardware device of the electronic device may no longer be possible. Failure of an application may lead to an inability of the user to use the application for performing desired tasks.
- BIOS Basic Input/Output System
- UEFI Unified Extensible Firmware Interface
- a user may attempt to update the faulty module (by either replacing the module or repairing the module) using an update module (update code) provided on a storage medium such as a hard disk drive, a Universal Serial Bus (USB) storage medium, or other removable medium.
- update module update code
- a storage medium such as a hard disk drive, a Universal Serial Bus (USB) storage medium, or other removable medium.
- USB Universal Serial Bus
- a preboot network stack of the electronic device can be used for retrieving, over a network, an update module for recovering the faulty module.
- the preboot network stack can be part of a management subsystem, where the preboot network stack is independent of a network stack that is associated with an operating system of the electronic device.
- a “network stack” can include network communication layers that allow communications over a network.
- a network can be a wired network, a wireless network, or a combination of wired and wireless networks.
- a preboot context refers to a state of the electronic device prior to completion of a boot procedure and prior to loading of an operating system.
- the boot procedure of an electronic device involves executing boot code (e.g. BIOS code), and loading the operating system of the electronic device.
- a preboot network stack refers to a network stack that is capable of operating both in the preboot context and after successful booting of the electronic device and loading of the operating system.
- FIG. 1 is a block diagram of an example electronic device 100 that includes a fault manager 102 , an operating system (OS) 104 , and a network stack 106 that is associated with the OS 104 .
- OS operating system
- the network stack 106 is referred to as an “OS-associated network stack”.
- OS-associated network stack Although the network stack 106 is depicted as being outside of the OS 104 , it is noted that the network stack 106 can be considered to be part of the OS 104 in some implementations.
- the electronic device 100 further includes a management subsystem 108 , which has another network stack 110 that is independent of the OS-associated network stack 106 .
- This network stack 110 can be referred to as a preboot network stack as discussed above.
- the management subsystem 108 is used for performing various management tasks with respect to the electronic device 100 .
- the management subsystem 108 can perform its management tasks using out-of-band network connectivity. If the network connectivity associated with the OS 104 (using the OS-associated network stack 106 ) is considered the in-band network connectivity (in other words, this network connectivity is used for performing the normal operations of the electronic device that involve network communications), then the out-of-band network connectivity refers to a separate connectivity that can be maintained without involving the OS-associated network stack 106 .
- the electronic device 100 includes a physical network interface 112 , which can be a network interface card or some other type of physical network interface. Both the network stack 106 and network stack 110 can communicate through the physical network interface 112 over a network 114 . Although just one physical network interface is depicted in FIG. 1 , note that in alternative examples, multiple physical network interfaces can be present.
- Examples of various management tasks that can be performed using the management subsystem 108 can include any one or combination of the following: transmitting information of the electronic device 100 in response to a query from a remote management server, downloading of malware signatures from the remote management server, power cycling the electronic device in response to a request from the remote management server, performing tasks to quarantine the electronic device upon detection of infection by viruses or other malware, and so forth.
- the management subsystem 108 (and in particular the network stack 110 in the management subsystem 108 ) can also be used by the fault manager 102 for the purpose of obtaining an update module 118 from a remote network site 116 (which includes a server computer) for updating (or recovering) a faulty module in the electronic device 100 .
- Updating (or recovering) a faulty module can refer to replacing or repairing the faulty module using the update module.
- the fault manager 102 can detect a fault of a module (such as the OS 104 or some other module in the electronic device 100 ). In response to detecting the fault, the fault manager 102 can use the network stack 110 of the management subsystem 108 to access, over the network 114 , the remote network site 116 , for retrieving the update module 118 at the network site 116 . The retrieved update module 118 can be used for recovering the faulty module in the electronic device 100 .
- a module such as the OS 104 or some other module in the electronic device 100 .
- the ability of the management subsystem 108 to perform network communications using its network stack 110 (which is independent of the OS-associated network stack 106 ), allows retrieval of the update module 118 over the network 114 even if the electronic device 100 cannot boot properly.
- the faulty module to be recovered can be the OS 104 or boot code.
- the network stack 110 of the management subsystem 108 also provides greater flexibility since the network stack 110 does not have to rely upon use of a specific remote boot protocol, such as the Preboot Execution Environment (PXE) protocol.
- PXE communications can be restricted to communications between PXE clients and PXE servers within a secure network, such as a private network of an enterprise (e.g. business concern, educational organization, government agency, etc.).
- the network stack 110 of the management subsystem 108 supports communications in a greater variety of environments for the purpose of retrieving the update module 118 at the network site 116 .
- the greater variety of environments can include an enterprise environment and a public environment (such as the world wide web).
- the electronic device 100 further includes a processor (or multiple processors) 118 , and a storage medium (or storage media) 120 .
- the fault manager 102 and OS 104 are executable on the processor(s) 118 .
- other modules in the electronic device 100 can also be executable on the processor(s) 118 .
- FIG. 2 is a flow diagram of a module recovery process 200 according to some implementations.
- the process 200 can be performed by the fault manager 102 , in some examples.
- the process 200 detects (at 202 ) a fault of a particular module in the electronic device 100 .
- the detection of the fault can be performed within the electronic device 100 without input from any remote server.
- the fault manager 102 can start a timer whenever the particular module is started—failure of the particular module to complete loading and execution within a predefined time interval of the timer is an indication of fault of the particular module.
- a faulty module can issue an exception or other message that is received by the fault manager 102 .
- remote server involvement does not have to be employed for performing fault detection of the particular module.
- the process 200 accesses (at 204 ) the network site 116 using network communication through the network stack 110 of the management subsystem 108 , which is independent of the OS-associated network stack 106 .
- the access of the network site 116 using the network stack 110 of the management subsystem 108 can be performed in the preboot context.
- the process 200 receives (at 206 ) the update module 118 from the network site 116 , which can be used to update the faulty particular module. Updating the faulty particular module includes replacing the particular module and/or repairing the particular module.
- FIG. 3 is a block diagram of an electronic device 100 ′ according to alternative implementations. Components in the electronic device 100 ′ that are the same as components of the electronic device 100 are assigned the same reference numerals.
- the electronic device 100 ′ includes a management engine 302 , which can be implemented as an integrated circuit controller chip, such as an application specific integrated circuit (ASIC) chip, programmable gate array (PGA) chip, microcontroller, microprocessor, and so forth.
- the management engine 302 is an implementation of the management subsystem 108 of FIG. 1 .
- An application programming interface (API) 304 is provided to allow the fault manager 102 to access services of the management engine 302 .
- a service that can be accessed by the fault manager 102 using the API 304 is the out-of-band network connectivity (including the network stack 110 ) supported by the management engine 302 , which allows the fault manager 102 to retrieve an update module (e.g. 118 in FIG. 1 ) from the remote network site 116 without having to rely on the OS-associated network stack 106 .
- the API 304 includes various functions or routines that can be called by the fault manager 102 for accessing the services of the management engine 302 .
- the network stack 110 in the management engine 302 has a Hypertext Transfer Protocol (HTTP) layer 306 , which allows the management engine 302 to perform HTTP communications over a network, such as the network 114 of FIG. 1 .
- HTTP defines various requests and responses that can be communicated by the HTTP layer 306 .
- the HTTP requests can be used for obtaining information (such as the update module 118 in FIG. 1 ) from a network entity (such as a server computer at the network site 116 ).
- the network stack 110 can include a component according to another protocol for managing request-response communications (or other types of communications) over a network.
- the network stack 110 further includes a Transmission Control Protocol/Internet Protocol (TCP/IP) stack 308 , which has a TCP layer and an IP layer.
- TCP/IP Transmission Control Protocol/Internet Protocol
- An IP layer is used to communicate IP packets that have source and destination IP addresses to allow for the packets to be routed through a network to a destination.
- the TCP layer provides for reliable, ordered delivery of data between network entities.
- OS-associated network stack 106 can include similar layers as the network stack 110 in the management engine 302 .
- the electronic device 100 ′ also includes a non-volatile memory 310 , such as flash memory or other type of memory.
- the non-volatile memory 310 can be used to store BIOS code 312 and management engine code 314 .
- the BIOS code 312 can be considered firmware (which includes machine-readable instructions) that is executable by the processor(s) 118 of the electronic device 100 ′, such as to perform boot tasks.
- the fault manager 102 can be part of the BIOS code 312 . In other examples, the fault manager 102 is separate from the BIOS code 312 .
- the management engine code 314 can also be considered firmware that is executable in the management engine 302 .
- the management engine code 314 can provide various services that are offered by the management engine 302 , such as services relating to management tasks that are performed by the management engine 302 .
- the management engine code 314 can be embedded in a non-volatile storage medium that is part of the management engine 302 .
- Machine-readable instructions of various modules described above are loaded for execution on a processing circuit (such as the processor(s) 118 or management engine 102 in FIG. 1 or 3 ).
- Data and instructions are stored in respective storage devices, which are implemented as one or more computer-readable or machine-readable storage media.
- the storage media include different forms of memory including semiconductor memory devices such as dynamic or static random access memories (DRAMs or SRAMs), erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks; other magnetic media including tape; optical media such as compact disks (CDs) or digital video disks (DVDs), or other types of storage devices.
- DRAMs or SRAMs dynamic or static random access memories
- EPROMs erasable and programmable read-only memories
- EEPROMs electrically erasable and programmable read-only memories
- flash memories such as fixed, floppy and removable disks
- magnetic media such as fixed, floppy and removable disks
- optical media such as compact disks (CDs) or digital video disks (DVDs), or other
- the instructions discussed above can be provided on one computer-readable or machine-readable storage medium, or alternatively, can be provided on multiple computer-readable or machine-readable storage media distributed in a large system having possibly plural nodes.
- Such computer-readable or machine-readable storage medium or media is (are) considered to be part of an article (or article of manufacture).
- An article or article of manufacture can refer to any manufactured single component or multiple components.
- the storage medium or media can be located either in the machine running the machine-readable instructions, or located at a remote site from which machine-readable instructions can be downloaded over a network for execution.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
In some examples, fault of a code in an electronic device is detected. In response to detecting the fault, an update code is retrieved using a network stack from a network site over a network to update the code that has experienced the fault, during a state of the electronic device prior to completion of a boot procedure of the electronic device.
Description
- This is a continuation of U.S. application Ser. No. 14/391,427, filed Oct. 9, 2014, which is a national stage application under 35 U.S.C. §371 of PCT/US2012/047978, filed Jul. 24, 2012, which are both hereby incorporated by reference in their entirety.
- An electronic device can include various modules that include machine-readable instructions, such as a boot code (e.g. Basic Input/Output System code or Unified Extensible Firmware Interface (UEFI) code), an operating system, an application, and so forth. When a module in the electronic device exhibits a fault, the electronic device may cease to operate properly.
- Some embodiments are described with respect to the following figures:
-
FIG. 1 is a block diagram of an electronic device that incorporates some implementations; -
FIG. 2 is a flow diagram of a module recovery process, in accordance with some implementations; and -
FIG. 3 is a block diagram of an electronic device according to further implementations. - A module (including machine-readable instructions) in an electronic device can exhibit a fault due to various causes. In some examples, the fault can be due to corruption caused by malware (e.g. virus or other type of malicious code). A fault can also be caused by corruption in various data structures used by the module. There can be other causes of faults in a module.
- Example modules in an electronic device can include any one or a combination of the following: a boot code (e.g. Basic Input/Output System (BIOS) code or Unified Extensible Firmware Interface (UEFI) code), an operating system, a device driver, an application, and so forth. Note that UEFI code is provided as a replacement for traditional BIOS code. In the ensuing discussion, reference to “BIOS code” is intended to refer to either traditional BIOS code or UEFI code. A fault in a module of the electronic device can cause malfunction of the electronic device, or may lead to reduced performance of the electronic device. For example, if the boot code or operating system of the electronic device were to crash, then the electronic device may no longer be useable, since the electronic device would not be able to start properly. As another example, if a device driver were to exhibit a fault, then access to a corresponding hardware device of the electronic device may no longer be possible. Failure of an application may lead to an inability of the user to use the application for performing desired tasks.
- In response to a fault of a module, a user may attempt to update the faulty module (by either replacing the module or repairing the module) using an update module (update code) provided on a storage medium such as a hard disk drive, a Universal Serial Bus (USB) storage medium, or other removable medium. However, in cases where a storage medium that has an update module is not readily available, it can be difficult for the user to recover the faulty module.
- In accordance with some implementations, rather than having to restore a faulty module using code on a storage medium, a preboot network stack of the electronic device can be used for retrieving, over a network, an update module for recovering the faulty module. The preboot network stack can be part of a management subsystem, where the preboot network stack is independent of a network stack that is associated with an operating system of the electronic device. A “network stack” can include network communication layers that allow communications over a network. A network can be a wired network, a wireless network, or a combination of wired and wireless networks.
- Using the preboot network stack, retrieval of an update module can be performed in a preboot context of the electronic device. A preboot context refers to a state of the electronic device prior to completion of a boot procedure and prior to loading of an operating system. The boot procedure of an electronic device involves executing boot code (e.g. BIOS code), and loading the operating system of the electronic device. By being able to use the preboot network stack to retrieve an update module, the ability to recover a faulty module does not have to rely on proper operation of boot code or an operating system in the electronic device.
- Although reference is made to a “preboot network stack,” it is noted that such network stack, which is independent of the operating system-associated network stack, can also be used to perform communication (including communication to retrieve an update module) after booting of the electronic device has completed and the operating system has been loaded. Thus, a preboot network stack refers to a network stack that is capable of operating both in the preboot context and after successful booting of the electronic device and loading of the operating system.
-
FIG. 1 is a block diagram of an exampleelectronic device 100 that includes afault manager 102, an operating system (OS) 104, and anetwork stack 106 that is associated with theOS 104. In the ensuing discussion, thenetwork stack 106 is referred to as an “OS-associated network stack”. Although thenetwork stack 106 is depicted as being outside of theOS 104, it is noted that thenetwork stack 106 can be considered to be part of theOS 104 in some implementations. - The
electronic device 100 further includes amanagement subsystem 108, which has anothernetwork stack 110 that is independent of the OS-associatednetwork stack 106. Thisnetwork stack 110 can be referred to as a preboot network stack as discussed above. - The
management subsystem 108 is used for performing various management tasks with respect to theelectronic device 100. By using thenetwork stack 110 that is independent of the OS-associatednetwork stack 106, themanagement subsystem 108 can perform its management tasks using out-of-band network connectivity. If the network connectivity associated with the OS 104 (using the OS-associated network stack 106) is considered the in-band network connectivity (in other words, this network connectivity is used for performing the normal operations of the electronic device that involve network communications), then the out-of-band network connectivity refers to a separate connectivity that can be maintained without involving the OS-associatednetwork stack 106. - As further depicted in
FIG. 1 , theelectronic device 100 includes aphysical network interface 112, which can be a network interface card or some other type of physical network interface. Both thenetwork stack 106 andnetwork stack 110 can communicate through thephysical network interface 112 over anetwork 114. Although just one physical network interface is depicted inFIG. 1 , note that in alternative examples, multiple physical network interfaces can be present. - Examples of various management tasks that can be performed using the
management subsystem 108 can include any one or combination of the following: transmitting information of theelectronic device 100 in response to a query from a remote management server, downloading of malware signatures from the remote management server, power cycling the electronic device in response to a request from the remote management server, performing tasks to quarantine the electronic device upon detection of infection by viruses or other malware, and so forth. - In accordance with some implementations, the management subsystem 108 (and in particular the
network stack 110 in the management subsystem 108) can also be used by thefault manager 102 for the purpose of obtaining anupdate module 118 from a remote network site 116 (which includes a server computer) for updating (or recovering) a faulty module in theelectronic device 100. Updating (or recovering) a faulty module can refer to replacing or repairing the faulty module using the update module. - The
fault manager 102 can detect a fault of a module (such as theOS 104 or some other module in the electronic device 100). In response to detecting the fault, thefault manager 102 can use thenetwork stack 110 of themanagement subsystem 108 to access, over thenetwork 114, theremote network site 116, for retrieving theupdate module 118 at thenetwork site 116. The retrievedupdate module 118 can be used for recovering the faulty module in theelectronic device 100. - The ability of the
management subsystem 108 to perform network communications using its network stack 110 (which is independent of the OS-associated network stack 106), allows retrieval of theupdate module 118 over thenetwork 114 even if theelectronic device 100 cannot boot properly. In fact, the faulty module to be recovered can be theOS 104 or boot code. - The
network stack 110 of themanagement subsystem 108 also provides greater flexibility since thenetwork stack 110 does not have to rely upon use of a specific remote boot protocol, such as the Preboot Execution Environment (PXE) protocol. PXE communications can be restricted to communications between PXE clients and PXE servers within a secure network, such as a private network of an enterprise (e.g. business concern, educational organization, government agency, etc.). - In contrast, the
network stack 110 of themanagement subsystem 108 supports communications in a greater variety of environments for the purpose of retrieving theupdate module 118 at thenetwork site 116. The greater variety of environments can include an enterprise environment and a public environment (such as the world wide web). - The
electronic device 100 further includes a processor (or multiple processors) 118, and a storage medium (or storage media) 120. Thefault manager 102 and OS 104 are executable on the processor(s) 118. Although not shown, other modules in theelectronic device 100 can also be executable on the processor(s) 118. -
FIG. 2 is a flow diagram of amodule recovery process 200 according to some implementations. Theprocess 200 can be performed by thefault manager 102, in some examples. Theprocess 200 detects (at 202) a fault of a particular module in theelectronic device 100. In some implementations, the detection of the fault can be performed within theelectronic device 100 without input from any remote server. For example, thefault manager 102 can start a timer whenever the particular module is started—failure of the particular module to complete loading and execution within a predefined time interval of the timer is an indication of fault of the particular module. In other examples, a faulty module can issue an exception or other message that is received by thefault manager 102. Using techniques according to some implementations, remote server involvement does not have to be employed for performing fault detection of the particular module. - In response to detecting the fault, the
process 200 accesses (at 204) thenetwork site 116 using network communication through thenetwork stack 110 of themanagement subsystem 108, which is independent of the OS-associatednetwork stack 106. The access of thenetwork site 116 using thenetwork stack 110 of themanagement subsystem 108 can be performed in the preboot context. In response to the access, theprocess 200 receives (at 206) theupdate module 118 from thenetwork site 116, which can be used to update the faulty particular module. Updating the faulty particular module includes replacing the particular module and/or repairing the particular module. -
FIG. 3 is a block diagram of anelectronic device 100′ according to alternative implementations. Components in theelectronic device 100′ that are the same as components of theelectronic device 100 are assigned the same reference numerals. - The
electronic device 100′ includes amanagement engine 302, which can be implemented as an integrated circuit controller chip, such as an application specific integrated circuit (ASIC) chip, programmable gate array (PGA) chip, microcontroller, microprocessor, and so forth. Themanagement engine 302 is an implementation of themanagement subsystem 108 ofFIG. 1 . - An application programming interface (API) 304, or some other type of interface, is provided to allow the
fault manager 102 to access services of themanagement engine 302. In accordance with some implementations, a service that can be accessed by thefault manager 102 using theAPI 304 is the out-of-band network connectivity (including the network stack 110) supported by themanagement engine 302, which allows thefault manager 102 to retrieve an update module (e.g. 118 inFIG. 1 ) from theremote network site 116 without having to rely on the OS-associatednetwork stack 106. TheAPI 304 includes various functions or routines that can be called by thefault manager 102 for accessing the services of themanagement engine 302. - In
FIG. 3 , thenetwork stack 110 in themanagement engine 302 has a Hypertext Transfer Protocol (HTTP)layer 306, which allows themanagement engine 302 to perform HTTP communications over a network, such as thenetwork 114 ofFIG. 1 . HTTP defines various requests and responses that can be communicated by theHTTP layer 306. The HTTP requests can be used for obtaining information (such as theupdate module 118 inFIG. 1 ) from a network entity (such as a server computer at the network site 116). In other examples, instead of using HTTP, thenetwork stack 110 can include a component according to another protocol for managing request-response communications (or other types of communications) over a network. - The
network stack 110 further includes a Transmission Control Protocol/Internet Protocol (TCP/IP)stack 308, which has a TCP layer and an IP layer. An IP layer is used to communicate IP packets that have source and destination IP addresses to allow for the packets to be routed through a network to a destination. The TCP layer provides for reliable, ordered delivery of data between network entities. - It is noted that the OS-associated
network stack 106 can include similar layers as thenetwork stack 110 in themanagement engine 302. - The
electronic device 100′ also includes anon-volatile memory 310, such as flash memory or other type of memory. Thenon-volatile memory 310 can be used to storeBIOS code 312 andmanagement engine code 314. TheBIOS code 312 can be considered firmware (which includes machine-readable instructions) that is executable by the processor(s) 118 of theelectronic device 100′, such as to perform boot tasks. In some examples, thefault manager 102 can be part of theBIOS code 312. In other examples, thefault manager 102 is separate from theBIOS code 312. - The
management engine code 314 can also be considered firmware that is executable in themanagement engine 302. Themanagement engine code 314 can provide various services that are offered by themanagement engine 302, such as services relating to management tasks that are performed by themanagement engine 302. In other examples, themanagement engine code 314 can be embedded in a non-volatile storage medium that is part of themanagement engine 302. - Machine-readable instructions of various modules described above (including the
fault manager 102,OS 104,application 316,BIOS code 312, andmanagement engine code 314 ofFIG. 1 or 3 ) are loaded for execution on a processing circuit (such as the processor(s) 118 ormanagement engine 102 inFIG. 1 or 3 ). - Data and instructions are stored in respective storage devices, which are implemented as one or more computer-readable or machine-readable storage media. The storage media include different forms of memory including semiconductor memory devices such as dynamic or static random access memories (DRAMs or SRAMs), erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks; other magnetic media including tape; optical media such as compact disks (CDs) or digital video disks (DVDs), or other types of storage devices. Note that the instructions discussed above can be provided on one computer-readable or machine-readable storage medium, or alternatively, can be provided on multiple computer-readable or machine-readable storage media distributed in a large system having possibly plural nodes. Such computer-readable or machine-readable storage medium or media is (are) considered to be part of an article (or article of manufacture). An article or article of manufacture can refer to any manufactured single component or multiple components. The storage medium or media can be located either in the machine running the machine-readable instructions, or located at a remote site from which machine-readable instructions can be downloaded over a network for execution.
- In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some or all of these details. Other implementations may include modifications and variations from the details discussed above. It is intended that the appended claims cover such modifications and variations.
Claims (20)
1. An electronic device comprising:
an operating system;
a first network stack associated with the operating system;
a second network stack;
a processor;
a storage medium storing instructions executable on the processor to:
detect fault of a code in the electronic device,
in response to detecting the fault, access a network site using network communication through the second network stack during a state of the electronic device prior to completion of a boot procedure of the electronic device, and
in response to the access, receive an update code to update the code that has experienced the fault.
2. The electronic device of claim 1 , wherein the instructions are executable on the processor to perform the detecting of the fault without input from any remote server.
3. The electronic device of claim 1 , wherein the code that has experienced the fault includes code of the operating system.
4. The electronic device of claim 1 , wherein the code that has experienced the fault includes boot code.
5. The electronic device of claim 1 , wherein the code that has experienced the fault includes an application code or a device driver.
6. The electronic device of claim 1 , further comprising a controller chip that includes the second network stack.
7. The electronic device of claim 1 , wherein the second network stack has an Internet Protocol (IP) layer and Transmission Control Protocol (TCP) layer, the IP and TCP layers to perform the network communication to retrieve the update code.
8. The electronic device of claim 7 , wherein the second network stack further includes a Hypertext Transfer Protocol (HTTP) layer to perform the network communication to retrieve the update code.
9. The electronic device of claim 1 , further comprising an application programming interface to allow the instructions to access the second network stack.
10. The electronic device of claim 1 , wherein the instructions are part of a Basic Input/Output System (BIOS) code.
11. A method comprising:
detecting, in an electronic device, fault of a code; and
in response to detecting the fault, retrieving, by the electronic device, an update code for updating the code that has experienced the fault, using a first network stack that is separate from a second network stack associated with an operating system in the electronic device, wherein the update code is retrieved using the first network stack from a network site over a network during a state of the electronic device prior to completion of a boot procedure of the electronic device.
12. The method of claim 11 , wherein the update code is retrieved using the first network stack prior to loading of the operating system.
13. The method of claim 12 , wherein retrieving the update code using the first network stack is performed without using the second network stack associated with the operating system.
14. The method of claim 11 , further comprising:
updating the code that has experienced the fault using the update code, wherein the updating includes replacing or repairing the code that has experienced the fault using the update code.
15. The method of claim 11 , wherein the code that has experienced the fault is selected from among boot code and code of the operating system.
16. The method of claim 11 , wherein the first network stack comprises a Hypertext Transfer Protocol (HTTP) layer that is separate from an HTTP layer of the second network stack.
17. The method of claim 11 , wherein the detecting of the fault is performed without input from any remote server.
18. A non-transitory machine-readable storage medium storing instructions that upon execution cause an electronic device to:
detect fault of a code; and
in response to detecting the fault, retrieve an update code for updating the code that has experienced the fault, using a first network stack during a state of the electronic device prior to completion of a boot procedure of the electronic device, the first network stack being separate from a second network stack that is associated with an operating system in the electronic device, wherein the update code is retrieved using the first network stack from a network site over a network prior to loading of the operating system in the electronic device.
19. The non-transitory machine-readable storage medium of claim 18 , wherein the detecting of the fault is performed without input from any remote server.
20. The non-transitory machine-readable storage medium of claim 18 , wherein the update code is retrieved using the first network stack during a state of the electronic device prior to completion of a boot procedure of the electronic device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/204,679 US9864651B2 (en) | 2012-07-24 | 2016-07-07 | Receiving an update code prior to completion of a boot procedure |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/047978 WO2014018017A1 (en) | 2012-07-24 | 2012-07-24 | Receiving an update module by accessing a network site |
US201414391427A | 2014-10-09 | 2014-10-09 | |
US15/204,679 US9864651B2 (en) | 2012-07-24 | 2016-07-07 | Receiving an update code prior to completion of a boot procedure |
Related Parent Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2012/047978 Continuation WO2014018017A1 (en) | 2012-07-24 | 2012-07-24 | Receiving an update module by accessing a network site |
US14/391,427 Continuation US9405613B2 (en) | 2012-07-24 | 2012-07-24 | Receiving an update module by accessing a network site |
Publications (2)
Publication Number | Publication Date |
---|---|
US20160321132A1 true US20160321132A1 (en) | 2016-11-03 |
US9864651B2 US9864651B2 (en) | 2018-01-09 |
Family
ID=49997659
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/391,427 Expired - Fee Related US9405613B2 (en) | 2012-07-24 | 2012-07-24 | Receiving an update module by accessing a network site |
US15/204,679 Active 2032-09-03 US9864651B2 (en) | 2012-07-24 | 2016-07-07 | Receiving an update code prior to completion of a boot procedure |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/391,427 Expired - Fee Related US9405613B2 (en) | 2012-07-24 | 2012-07-24 | Receiving an update module by accessing a network site |
Country Status (6)
Country | Link |
---|---|
US (2) | US9405613B2 (en) |
CN (1) | CN104254845B (en) |
DE (1) | DE112012006736T5 (en) |
GB (1) | GB2517094B (en) |
TW (1) | TWI556097B (en) |
WO (1) | WO2014018017A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220335131A1 (en) * | 2021-04-15 | 2022-10-20 | Dell Products, L.P. | Systems and methods for secure management of components of information handling systems |
US20230362234A1 (en) * | 2022-05-04 | 2023-11-09 | Microsoft Technology Licensing, Llc | Method and system of managing resources in a cloud computing environment |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10740021B1 (en) * | 2018-03-29 | 2020-08-11 | Veritas Technologies Llc | Systems and methods for recovery of computing environments via a replication solution |
US11928028B2 (en) * | 2022-07-14 | 2024-03-12 | Dell Products, L.P. | Exception handler for dynamic remediation of fatal errors |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090086620A1 (en) * | 2007-09-28 | 2009-04-02 | Allied Telesis Holdings K.K. | Method and apparatus for preventing network conflict |
US20100325495A1 (en) * | 2009-06-22 | 2010-12-23 | Talla Ramanjaneyulu Y | Systems and method for transaction stall detection and propagating the result in a multi-core architecture |
US20120159235A1 (en) * | 2010-12-20 | 2012-06-21 | Josephine Suganthi | Systems and Methods for Implementing Connection Mirroring in a Multi-Core System |
US8549345B1 (en) * | 2003-10-31 | 2013-10-01 | Oracle America, Inc. | Methods and apparatus for recovering from a failed network interface card |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6314455B1 (en) * | 1999-02-24 | 2001-11-06 | International Business Machines Corporation | Data processing system and method for permitting a server to remotely initiate a client's boot block recovery |
US7363480B1 (en) * | 2005-06-30 | 2008-04-22 | American Megatrends, Inc. | Method, system, and computer-readable medium for updating the firmware of a computing device via a communications network |
US8381297B2 (en) * | 2005-12-13 | 2013-02-19 | Yoggie Security Systems Ltd. | System and method for providing network security to mobile devices |
US9021590B2 (en) * | 2007-02-28 | 2015-04-28 | Microsoft Technology Licensing, Llc | Spyware detection mechanism |
US8223630B2 (en) * | 2007-04-24 | 2012-07-17 | At&T Intellectual Property I, L.P. | System for monitoring operations of an ENUM system |
US8527622B2 (en) * | 2007-10-12 | 2013-09-03 | Sap Ag | Fault tolerance framework for networks of nodes |
KR100947286B1 (en) * | 2007-10-31 | 2010-03-16 | 한국전자통신연구원 | Wireless sensor network management device and method |
US8055892B2 (en) | 2008-07-18 | 2011-11-08 | International Business Machines Corporation | Provision of remote system recovery services |
US8935789B2 (en) * | 2008-07-21 | 2015-01-13 | Jayant Shukla | Fixing computer files infected by virus and other malware |
US8667583B2 (en) * | 2008-09-22 | 2014-03-04 | Microsoft Corporation | Collecting and analyzing malware data |
US9015843B2 (en) * | 2010-12-03 | 2015-04-21 | Microsoft Corporation | Predictive malware threat mitigation |
-
2012
- 2012-07-24 CN CN201280072837.6A patent/CN104254845B/en not_active Expired - Fee Related
- 2012-07-24 DE DE112012006736.3T patent/DE112012006736T5/en not_active Ceased
- 2012-07-24 GB GB1418418.8A patent/GB2517094B/en not_active Expired - Fee Related
- 2012-07-24 WO PCT/US2012/047978 patent/WO2014018017A1/en active Application Filing
- 2012-07-24 US US14/391,427 patent/US9405613B2/en not_active Expired - Fee Related
-
2013
- 2013-07-24 TW TW102126471A patent/TWI556097B/en not_active IP Right Cessation
-
2016
- 2016-07-07 US US15/204,679 patent/US9864651B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8549345B1 (en) * | 2003-10-31 | 2013-10-01 | Oracle America, Inc. | Methods and apparatus for recovering from a failed network interface card |
US20090086620A1 (en) * | 2007-09-28 | 2009-04-02 | Allied Telesis Holdings K.K. | Method and apparatus for preventing network conflict |
US20100325495A1 (en) * | 2009-06-22 | 2010-12-23 | Talla Ramanjaneyulu Y | Systems and method for transaction stall detection and propagating the result in a multi-core architecture |
US20120159235A1 (en) * | 2010-12-20 | 2012-06-21 | Josephine Suganthi | Systems and Methods for Implementing Connection Mirroring in a Multi-Core System |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220335131A1 (en) * | 2021-04-15 | 2022-10-20 | Dell Products, L.P. | Systems and methods for secure management of components of information handling systems |
US11841951B2 (en) * | 2021-04-15 | 2023-12-12 | Dell Products L.P. | Systems and methods for secure management of components of information handling systems |
US20230362234A1 (en) * | 2022-05-04 | 2023-11-09 | Microsoft Technology Licensing, Llc | Method and system of managing resources in a cloud computing environment |
Also Published As
Publication number | Publication date |
---|---|
TWI556097B (en) | 2016-11-01 |
DE112012006736T5 (en) | 2015-04-23 |
GB2517094A (en) | 2015-02-11 |
GB2517094B (en) | 2020-07-15 |
WO2014018017A1 (en) | 2014-01-30 |
TW201411339A (en) | 2014-03-16 |
GB201418418D0 (en) | 2014-12-03 |
CN104254845A (en) | 2014-12-31 |
CN104254845B (en) | 2017-09-05 |
US9405613B2 (en) | 2016-08-02 |
US20150074457A1 (en) | 2015-03-12 |
US9864651B2 (en) | 2018-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9769250B2 (en) | Fight-through nodes with disposable virtual machines and rollback of persistent state | |
US20060143431A1 (en) | Method to provide autonomic boot recovery | |
US7089449B1 (en) | Recovering a system that has experienced a fault | |
US8037290B1 (en) | Preboot security data update | |
US9813443B1 (en) | Systems and methods for remediating the effects of malware | |
US9864651B2 (en) | Receiving an update code prior to completion of a boot procedure | |
EP1907927A1 (en) | Methods, apparatus and program products for downloading a boot image of file from a boot file server in a secure manner | |
WO2011093971A1 (en) | Systems and methods for sharing the results of computing operations among related computing systems | |
US8725995B1 (en) | Systems and methods for updating system-level services within read-only system images | |
US8955092B2 (en) | Systems and methods for eliminating redundant security analyses on network data packets | |
US10409999B2 (en) | Communication between key manager and storage subsystem kernel via management console | |
US20230140209A1 (en) | System and method for secure access to a distributed virtual firmware network drive | |
US20200278873A1 (en) | Device and Method for Remote Management of Information Handling Systems | |
WO2013126046A1 (en) | Maintaining system firmware images remotely using a distribute file system protocol | |
US8060773B1 (en) | Systems and methods for managing sub-clusters within a multi-cluster computing system subsequent to a network-partition event | |
US10223092B2 (en) | Capturing and deploying applications using maximal and minimal sets | |
US11736500B2 (en) | System and method for device quarantine management | |
US9501649B2 (en) | Systems and methods for determining potential impacts of applications on the security of computing systems | |
US10338845B1 (en) | Self-erasing portable storage devices | |
US11489712B1 (en) | Systems and methods for efficient configuration file management and distribution by network management systems | |
US11516079B1 (en) | Network initialization communication storage system | |
US12265623B2 (en) | Firmware protection using multi-chip storage of firmware image | |
US12204417B2 (en) | Improving restoration of firmware data | |
US11175981B1 (en) | Systems and methods for dynamic self correcting secure computer systems | |
JP2020017821A (en) | External information reception and distribution device, data transmission method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LIU, JON;ALI, VALIUDDIN Y.;WANG, LAN;REEL/FRAME:039104/0078 Effective date: 20120723 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |