Abstract:
A system ( 100 ) and a method ( 500 ) for managing boot errors. When errors occur during boot, the errors may be recorded in non-volatile storage ( 115 ). The errors in the non-volatile storage ( 115 ) may be retrieved, decoded, and displayed in a form more understandable to the user. Also, tie errors may be analyzed to efficiently detect and correct the causes of the errors. In addition, the analysis may be used to prevent errors altogether.

Description:
FIELD OF THE INVENTION 
   This invention relates generally to managing boot errors. More specifically, this invention relates to system and method to logging and processing boot errors of one or more data processing systems. 
   BACKGROUND OF THE INVENTION  
   Before a typical computer can execute software applications, the computer must load an operating system from a disk to its working memory, which is typically random access memory (“RAM”). This function is carried out through “boot-strapping”, otherwise simply known as “booting” the computer. Booting automatically occurs when the computer is powered on. Booting may also occur when a user resets the computer. 
   One of the functions performed during booting is the Power On Self Test (“POST”), which is a part of the computer&#39;s Basic Input/Output System (“BIOS”). The POST initializes the internal hardware components of the computer such as timers, Direct Memory Access (“DMA”) controllers, memory controllers, I/O devices, video hardware, and the like. As part of its initialization, POST performs a reliability test to check that the computer&#39;s components are functioning correctly. 
   If POST completes without errors, the hardware components are initialized and the operating system is loaded from a persistent storage such as a hard disk. At this point, the computer may be utilized. However, if errors do occur during the booting process, a message related to each boot error may be displayed. If the boot error is serious enough, booting may terminate altogether. 
   At least one drawback with the typical booting is that the boot errors are not saved. Accordingly, the errors cannot be collected and later analyzed. Also the user may miss the error messages altogether if the user is not immediately present when the boot errors occur. Another drawback is that the error messages may be difficult to understand. For example, the error message may simply be an error number. Such error messages often require a secondary source, such as a user&#39;s manual, to decode the error message. In another example, the error message may not be displayed in user&#39;s native language. In general, the boot errors of a typical data processing system are difficult to process. 
   SUMMARY OF THE INVENTION  
   According to an embodiment of the present invention, a boot error manager for a data processing system includes an error log module configured to log one or more boot errors of the data processing system in a non-volatile storage and an error processing module configured to process the one or more boot errors stored in the non-volatile storage. 
   According to another embodiment of the present invention, a method to manage boot errors of a data processing system includes logging boot errors of the data processing system in a non-volatile storage and processing the boot errors stored in the non-volatile storage. 

   
     BRIEF DESCRIPTION OF THE FIGURES 
     Features of the present invention are described in part with reference to the following figures, in which: 
       FIG. 1  illustrates a block diagram of a boot error manager according to an embodiment of the present invention; 
       FIG. 2  illustrates a storage scheme to log boot errors to a non-volatile storage according to an embodiment of the present invention; 
       FIG. 3  illustrates a block diagram of an error processing module according to an embodiment of the present invention; 
       FIG. 4  illustrates a localization scheme according to an embodiment of the present invention; 
       FIG. 5  illustrates a flow diagram of a method to manage boot errors of a data processing system according to an embodiment of the present invention; and 
       FIG. 6  illustrates a flow diagram of the boot error processing steps according to an embodiment of the present invention 
   

   DETAILED DESCRIPTION 
   For simplicity and illustrative purposes, the principles of the present invention are described by referring mainly to exemplary embodiments thereof. However, it should be understood that the same principles are equally applicable to and may be implemented in many data processing systems where errors may occur, and that any such variation does not depart from the true spirit and scope of the present invention. 
   Moreover, in the following detailed description, references are made to the accompanying figures, which illustrate specific embodiments in which the present invention may be practiced. Electrical, mechanical, logical and structural changes may be made to the embodiments without departing from the spirit and scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense and the scope of the present invention is defined by the appended claims and their equivalents. 
   In one embodiment of the present invention, boot errors from a data processing system are managed. The boot errors are logged to a non-volatile storage and processed. Examples of non-volatile storage include flash memory, hard disk, floppy disk, and the like. It should be understood that many other types of non-volatile storages may be used. By using a non-volatile storage, the logged errors may be retrieved and analyzed for troubleshooting purposes at a later time. For example, historical and/or statistical analysis may be performed on the logged errors. 
     FIG. 1  illustrates a block diagram of a boot error manager  100  according to an embodiment of the present invention. As shown in  FIG. 1 , the boot error manager  100  includes an error log module  110 , a non-volatile storage  115 , and an error processing module  120 . The error log module  110  may be configured to log/record any errors generated by a data processing system during a boot process. In one embodiment, the error log module  110  may be part of the BIOS which includes instructions to write to the non-volatile storage  115  in case of errors, in another embodiment, the error log module  110  may monitor bus activities of the data processing system and may copy the boot errors to the non-volatile storage  115  whenever the errors occur. Other options exist to monitor and record booting errors. Again, many types of non-volatile storage may be used including flash memory, hard disk, floppy disk and the like. 
     FIG. 2  illustrates a storage scheme  200  to log boot errors to the non-volatile storage  115  according to an embodiment of the present invention. As shown in  FIG. 2 , a format of the boot error information stored in the non-volatile storage  115  includes an error code  220  and a time stamp  230  corresponding to each recorded error. Example error codes  220  include “Primary IDE Channel Failure”, “Secondary IDE Channel Failure”, and so on. In addition to the error code  220 , a time of the error occurrence is recorded in the time stamp  230 . The time stamp  230  corresponds to specific time point during a POST time line  240 . 
   Referring back to  FIG. 1 , the error processing module  120  may be configured to process the boot errors stored in the non-volatile storage  115 . In an embodiment of the present invention, the error processing module  120  may retrieve the boot errors from the non-volatile storage  115 , decode the boot errors, and display the decoded boot errors. The error processing module  120  may also display the boot error in one or more languages. The error processing module  120  may further analyze the boot errors so that errors are efficiently detected and corrected and potential errors are avoided. 
     FIG. 3  illustrates a block diagram of an error processing module  120  according to an embodiment of the present invention. As shown in  FIG. 3 , the error processing module  120  includes a retrieval module  310 , a decode module  320 , a display module  330 , a localization module  340 , and an analysis module  350 . The retrieval module  310  may be configured to retrieve the boot errors from the non-volatile storage  115 . 
   The decode module  320  may be configured to decode the boot errors retrieved by the retrieval module  310 . The decode module  320  may decode the errors according to one or more data processing system types. In other words, the decode module  320  may account for variances that exist across different data processing systems. The variance in data processing system types may be due to a variety of factors such as the operating system (WINDOWS, Unix, etc.), vendors (DELL, GATEWAY, etc.), by models, and the like. In an embodiment of the present invention, the decode module  320  may account for the variances by accessing one or more tables which include the boot error information for different data processing system types (not shown). The tables, such as text files, binary files, databases, and the like may be updated by the decode module  320  and/or by external entities. In this way, boot error decoding information may be updated as new data processing systems are introduced and old data processing systems are modified or deleted. 
   The display module  330  may be configured to display the errors decoded by the decode module  320 . As will be discussed shortly, the display module  330  may also be configured to display interpreted error messages from the localization module  340  and the analysis results from the analysis module  350 . 
   The localization module  340  may be configured to interpret the decoded error messages from the decode module  320  in one or more languages, the interpreted error messages may be displayed by the display module  330 . For example, the error messages may be displayed in English for an English speaker and in French for a French speaker. In an embodiment of the present invention, the localization module  340  may provide translations by accessing one or more tables (text files, binary files, databases, and the like) which include error messages in various languages corresponding to the boot errors (not shown). The tables may be updated by the localization module  340  and/or by external entities. In this way, localization information may be updated as more languages are added and existing languages are modified or deleted. 
     FIG. 4  illustrates a localization scheme  400  according to an embodiment of the present invention. As shown in  FIG. 4 , a display  400 -E displays the messages in English while a display  400 -F displays the messages in French. It should be understood that the messages may be displayed in many other languages. 
   Referring back to  FIG. 3 , the analysis module  350  may be configured to analyze the boot errors retrieved from the non-volatile storage  115 . The types of analysis may include historical and statistical. For example, using historical data, the errors may be analyzed to determine a trend of errors. It may be that certain components tend to fail at a certain lifetime stage of the data processing system. In another example, statistical analysis may be performed to determine most problematic components or combination of components. It should be understood that other types of analysis may be performed. The analysis information may also be interpreted by the localization module  340  and then displayed by the display module  330  in the user&#39;s native language. 
   The analysis information may be useful. For example, the information may be used to take proactive actions, such as scheduling component replacements, so that down time due to components failures is minimized. For a vendor, another use of the analysis is to determine the type and length of warranties to provide for different data processing systems. Again, these are but a few of the uses of the analysis performed. 
   Note that the error log module  110 , the retrieval module  310 , the decode module  320 , the display module  330 , the localization module  340 , and the analysis module  350  may all reside in a single data processing system such as a standalone desktop computer. Note also that one or more of the modules may reside in a data processing system separate from data processing system(s) where other modules reside. The modules may be connected to each other such as through a network. 
   At one extreme, all modules may reside in a single data processing system. In this instance, the data processing system may have the capability to log, display, and analyze its own boot errors as well as boot errors of other data processing systems. The data processing system may be capable of analyzing its own boot errors even if one or more of the boot errors are fatal, i.e. the booting did not complete. In one embodiment, the analysis module  350  may be part of the data processing system&#39;s BIOS, and the user may access the analysis module  350  by interrupting the normal boot process, for example, by using function keys of a keyboard. Once the analysis module  350  is activated, the results of the previous boot attempt(s) may be retrieved, decoded, analyzed, localized, and displayed. 
   On the other hand, the modules may be distributed over different physical data processing systems and connected with each other over a network. For example, a first data processing system may include the error log module  110  and a second data processing system may include the retrieval module  310 , the decode module  320 , the display module  330 , the localization module  340 , and the analysis module  350 . In this manner, the first data processing system is able to log the boot errors of itself or the errors of other data processing systems, and the second data processing system is able to decode, display, interpret, and analyze boot errors recorded by the first data processing system. 
   In one embodiment, each individual module may itself be spread into multiple data processing systems. For example, a first part of the error log module  110  may reside in one data processing system and may direct the error codes to a network connection. A second part of the error log module  110 , residing in another data processing system, may listen to the messages from the network connection and record the errors to the non-volatile storage  115 . 
   It is important to note that the modules may be implemented in many forms. For example, one or more of the error log module  110 , the retrieval module  310 , the decode module  320 , the display module  330 , the localization module  340 , and the analysis module  350  may be implemented as instructions in BIOS, as software applications, as dedicated firmware, in hardware, and any combination thereof. 
     FIG. 5  illustrates a flow diagram of a method  500  to manage boot errors of a data processing system according to an embodiment of the present invention. As shown in  FIG. 5 , the method  500  includes logging boot errors of the data processing system in a non-volatile storage  115  (step  510 ) and processing the boot errors stored in the non-volatile storage  115  (step  520 ). Again, non-volatile storage includes flash memory, hard disk, floppy disk, and the like. 
     FIG. 6  illustrates a flow diagram of the boot error processing step  520  according to an embodiment of the present invention. As shown in  FIG. 6 , the processing step  520  includes retrieving (step  610 ) the boot errors from the non-volatile storage  115 , decoding (step  620 ) the boot errors retrieved in the retrieving step  610 , and displaying (step  630 ) the boot errors decoded in the decoding step  620 . 
   In one embodiment of the present invention, the processing  520  step may alternately include interpreting (step  640 ) the boot errors decoded in the decoding step  620  into one or more languages and the displaying step  630  may display the interpreted messages. In another embodiment, the processing  520  step may alternately include analyzing (step  650 ) the boot errors retrieved in the retrieving step  610  and the displaying step  630  may display the analysis results. In yet another embodiment, the analysis results may be interpreted in the interpreting step  640  and displayed in the displaying step  630 . As discussed above, the types of analysis include historical, statistical, and the like. 
   Note that the steps of the method  500  may be modified or deleted and other steps may be added and not depart from the scope of the invention. 
   The method  500  may exist in a variety of forms both active and inactive. For example, they may exist as software program(s) comprised of program instructions in source code, object code, executable code or other formats. Any of the above may be embodied on a computer readable medium, which include storage devices and signals, in compressed or uncompressed form. Exemplary computer readable storage devices include conventional data processing system RAM (random access memory), ROM (read only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), flash memory, and magnetic or optical disks or tapes. 
   Exemplary computer readable signals, whether modulated using a carrier or not, are signals that a data processing system hosting or running the computer program may be configured to access, including signals downloaded through the Internet or other networks. Concrete examples of the foregoing include distribution of the program(s) on a CD ROM or via Internet download. In a sense, the Internet itself, as an abstract entity, is a computer readable medium. The same is true of computer networks in general. 
   While the invention has been described with reference to the exemplary embodiments thereof, it should be understood that various modifications to the described embodiments of the invention without departing from the true spirit and scope of the invention. The terms and descriptions used herein are set forth by way of illustration only and are not meant as limitations. In particular, although the method of the present invention has been described by examples, the steps of the method may be performed in a different order than illustrated or simultaneously. It should be understood that these and other variations are possible within the spirit and scope of the invention as defined in the following claims and their equivalents.