This patent application relates in general to the field of computing devices, and more particularly to a method and system for automating support for computers.
Personal computer systems have become increasingly common in businesses and households. Although the term “personal computer” implies a generic device, “personal computers” generally have a wide diversity of hardware and software components. For instance, different personal computers may have processors and buses of different speeds, hard drive and RAM memories of different sizes, and peripheral devices interfaced with different types of interface cards, such as audio devices. Further, a large array of manufacturers produce computer components so that in a given personal computer, even components having substantially similar operating characteristics may have important differences based on each component's manufacturer specification.
With respect to software, generally all personal computers have a common need for an operating system that coordinates the operation of hardware components. However, each individual personal computer may have one of many possible operating systems. For instance, Microsoft products have evolved from its original Disk Operating System (“DOS”) to Windows systems, including Windows 3.1, Windows 95, Windows 98, Windows CE and Windows NT. In addition to these Microsoft operating systems, other types of operating systems are available, such as different versions of Unix, including Linux.
In addition to this wide diversity of operating systems, personal computers may operate a large number of different types of software applications. A given software application may interact in different manners with different operating systems. Thus, even with substantially similar hardware components, personal computers having different software may operate in substantially different manners.
Computer users can experience difficulties in system operation for many reasons. Lack of knowledge, hardware faults, software incompatibilities, and many other causes can lead to problems for the computer user. Given the wide range of hardware and software available (which implies an even greater range of hardware/software combinations that a user can experience), it is difficult to determine if the computer has a problem.
This situation is further complicated by the fact that personal computers do not have good mechanisms to automatically determine if the hardware/software system is having a problem. While certain operating systems contain code that help sense some types of problems with specific pieces of hardware, such mechanisms may be insufficiently uniform for determining if the operating system has a problem. Indeed, a common symptom of an operating system problem is a failure to boot, in which case the OS cannot be counted on to help. Another common symptom of an operating system problem is a hang, in which case the operating system becomes unresponsive to the keyboard and mouse for a wide variety of possible causes. It should be noted that this type of problem can be caused by pieces of software which have been installed on top of the operating system, such as an application or driver, or some incompatibility between pieces of software that have been loaded. A system that was operational may stop functioning at some later point due to software incompatibilities.
Another issue is the lack of a uniform mechanism for the user to invoke assistance. If the user has a question or the system has a problem, or at least the user perceives a problem, there is currently no uniform mechanism to get the system to attempt to provide assistance to the user. Although there are various types of help available to the user, they rely on one or more working input devices, such as a mouse and/or a keyboard, and a sufficient level of user knowledge to be able to navigate to one of a variety of information sources on the system and on a global information source such as the internet.
Therefore, a need has arisen for a method and system for identifying and resolving personal computer system problems that is accessible through a uniform fail-safe mechanism regardless of the functional state of the operating system and other software, and can be implemented on a wide variety of operating systems.
A further need exists for a method and system that detects when an operating system has failed to boot or has hung and can take appropriate corrective actions.
A further need exists for such a system that includes a monitoring system that communicates with the operating system and vice versa, and that is capable of doing so with a wide variety of different operating systems.
A further need exists for such a standard mechanism that will attempt to resolve operating system hang conditions regardless of whether the assistance has been requested by the user during boot or otherwise, and regardless of whether the user has made multiple requests for assistance.
In accordance with the present disclosure, a method and system is provided that substantially eliminates or reduces disadvantages and problems associated with previously developed methods and systems for identifying computer system problems. A monitoring system detects problems with a computer system and aides in identifying and resolving the problems. The current level of functionality of the computer system is determined, and technical support is provided for the computer system in accordance with the functionality of the computer system.
For example, in one embodiment, a user initiates operating system monitoring by pressing a service button to indicate a problem with the computer system. The pressing of the service button initiates support functions, such as the initiation of a service application, at an appropriate time. The support functions allow testing of the computer system by the monitoring system. The service button initiates a watchdog timer that acts as a hang detection timer. An operating system hang-up error is identified if the hang detection timer remains uncleared after a predetermined hang detection time. Detection of a computer failure results in the system following a predetermined reboot protocol, such as that described in co-pending U.S. application Ser. No. 09/377,726, which is incorporated herein by reference.
More specifically, in one embodiment a method for automated support is provided in a computer system having a service button and a controller chip set. The method includes the steps of pressing the service button, setting a first bit in a general purpose input register in the controller chip set to generate a first interrupt signal in response to the pressing step, receiving the first interrupt and determining whether the computer system is booting, and if the system is booting then initiating a service application routine in a first manner, or if the system is not booting then initiating a service application routine in a second manner.
A method is also provided for automated support of a computer system having a controller chip set including the steps of pressing a service button, setting a bit in a general purpose input register in the chip set, generating a first interrupt of a first type as a result of the bit being set, and initiating a service application in a manner dependent on whether the computer system is booting or not.
A computer system is also provided having a processor with at least one timer, a controller chip set, a system BIOS, and an operating system for communicating with components of the computer system through the BIOS. A service button is coupled with a general purpose input register in the chip set for setting the register for generating a first interrupt. The system further includes an interrupt handler that is coupled to the input register for receiving the first interrupt and processing it in a manner dependent on whether the computer system is in a booting state or a non-booting state.
A computer system having a system BIOS and an operating system is also provided, wherein the computer system includes a service button coupled to a general purpose input register in a controller chip set for setting a bit in the register to generate a first interrupt signal. An interrupt handler in the system BIOS receives the first interrupt signal and initiates a second interrupt signal to the operating system to initiate a service application if the computer system is not in a booting state. If the computer is in a booting state the bit remains set, and code contained within the operating system checks the status of the bit later during the booting sequence and initiates the service application if the bit has been set.
The present invention provides many important technical advantages. One important technical advantage is integrated support for detecting problems associated with computer systems. One such advantage is a robust user interface that is simple and uncomplicated to use. For instance, a user with a question or problem simply pushes a single service button. Pressing the service button generates an interrupt directly into the chip set to alert the monitoring system that service is requested by the user. The direct interface of the service button to the chip set enhances reliability and simplicity, as the user's input to the service button does not have to rely on the operation of computer components, such as a keyboard or mouse. Additionally, a user may press the service button at any time to seek assistance. The means by which pressing of the service button initiates a service application ensures that the service application will be run at the appropriate time, regardless of when the service button is pressed, and regardless of whether it is pressed multiple times. Further, the system and method of the present invention can be easily implemented with a variety of different operating systems.
A more complete understanding of the present invention and advantages thereof may be acquired by referring to the following description taken in conjunction with the accompanying drawings, in which like reference numbers indicate like features, and wherein:
Preferred embodiments of the present invention are illustrated in the Figures, like numeral being used to refer to like and corresponding parts of the various drawings.
A healthy operating system monitors hardware and software operations on a computer system At times, the operating system detects difficulties or problems with the computer system and provides notice of the difficulties or problems to the computer system user. Help systems generally associated with the operating system can help to resolve difficulties or problems either automatically or through user interaction, such as by asking questions. However, when the operating system itself has a problem or there are software incompatibilities, it is difficult for the operating system to address those problems. Frequently, the operating system either shuts down or hangs up without providing further notice of the problem to the computer system user.
To improve computer system problem detection, identification and resolution, a monitoring system associated with the computer system's BIOS monitors operating system functionality. The monitoring system detects operating system boot failures and various types of operating system hang-ups. Once a problem is detected, remedial action is automatically taken to recover a failed computer system using a uniform mechanism that takes advantage of operational aspects of the computer system. For instance, a single push of a service button provides an interrupt to the computer system chip set for automatically invoking the highest available level of user assistance as determined by computer system health and state. The service button may be pressed by a user while the computer system is in POST, booting, in service mode or in normal mode. When the service button is pressed, the BIOS sets a bit in a general purpose input register in the controller chip set and generates an interrupt. State-sensitive interrupt handler code in BIOS takes appropriate action, and may communicate to the operating system, depending upon the state of computer system as represented by certain CMOS bits. Further, the interrupt handler code ensures that only appropriate action is taken regardless of the number of times the service button is successively pressed. The manner in which the service button invokes user assistance will now be described in more detail with reference to
Referring now to
Computer system 10 includes a service button 26 available for a computer user to press. Service button 26 provides a robust user interface that enables a user to initiate the problem detection and identification process. Service button 26 generates an interrupt into the computer system chip set to, for instance, initiate a service application. Monitor state machine 20 detects pressing of the service button and launches the service application at an appropriate time, or monitors the system behavior to detect computer system problems. Monitor state machine 20 monitors the functioning of operating system 12 with a watchdog or “hang detection” timer 19. When the service button is pressed, hang detection timer 19 is initiated, and is later cleared by an application run after completion of the calling up and booting of operating system 12 or service mode operating system 22. If the application does not clear hang detection timer 19 within a predetermined period of time, monitoring state machine 20 determines that an operating system hang-up has occurred. BIOS 16 then recognizes an operating system problem and initiates a predetermined reboot protocol, such as that described in co-pending U.S. application Ser. No. 09/377,726, which is incorporated herein by reference.
As indicated above, the service button provides a standard mechanism through which a user can invoke assistance. Referring now to
As shown in
At step 108, the SMI handler determines whether the computer system is booting by examining the appropriate bit in the CMOS register. If the system is currently booting, the general purpose input bit remains set while the system continues its boot sequence. A hang detection timer is also set at step 110, but the SMI handler takes no further action. When the system completes its boot sequence, or at a predetermined point in the booting sequence where it is known that hardware and software tested and run up to that point in the boot sequence are generally operational, such as when the user is prompted for a login ID, the operating system is directed to check the status of the service button bit at step 111. If the service button bit has been set, indicating that the button was pressed during boot, the operating system will launch a service application at step 122, otherwise it will resume normal operations (step 112). In one embodiment, a background task such as a service application launcher associated with the operating system, which is run as part of the normal boot process, checks the service button bit. If the service button bit is set, the service application launches the service application.
If, at step 108, the SMI handler determines that the system is not booting, the SMI handler initiates a hang detection timer at step 116. This hang detection timer could be the same timer as would be set in step 110 above or a different timer. The value to which the timer is set, however, will be different depending on whether the service button was pressed during boot or otherwise. If pressed during boot it will be set to a higher value, representing the longer amount of time required to allow the system to complete the boot cycle and launch the service application. If not pressed during boot, the timer will be set to a lower value, representing the shorter amount of time required to allow the system to process the interrupt (described below) and start the service application.
If the system is not booting, the SMI handler code in the BIOS subsequently communicates with the operating system by causing an interrupt at step 118. In one embodiment, this interrupt is a system control interrupt (SCI) that is serviced in operating system execution space. To initiate the SCI, the SMI handler sets an output bit 204 in an output register in the GPIO. As shown in
Regardless of whether the service button was pressed during boot or otherwise, if the service application starts correctly, as determined at step 126, the service button bit and hang detection timer are cleared at step 128. In one embodiment, the service application notifies the service application launcher and instructs it to clear the service button bit and the hang detection timer. If the service application has not started correctly (the timer has reached zero before being cleared), it may indicate an operating system hang-up or, at minimum, that it is incapable of properly starting the service application. Thus, the system begins to follow a predetermined reboot protocol in step 130, such as that described in detail in co-pending U.S. application Ser. No. 09/377,726, which is incorporated herein by reference. Finally, once the SMI has been fully serviced the SMI handler reenables SMI generation at step 132 so that subsequent pressing of the service button will cause another interrupt and initiate servicing as described above.
Thus, the system and method of the present invention provide a unique way in which to invoke user assistance in a uniform fail-safe way. The manner in which the code in the BIOS execution space communicates with the operating system and vice versa enables invocation of a service request that is operating system independent, and provides a monitoring system that is outside of the operating system so as to be able to monitor the operating system itself Further, the system and method described above enables a user to invoke assistance regardless of the state of the operating system (i.e. during booting or otherwise, or when the operating system is hung).
Although the present invention has been described in detail, it should be understood that various changes, substitutions and alterations can be made hereto without departing from the spirit and scope of the invention as defined by the appended claims.
This application is a continuation of application Ser. No. 09/413,422, filed Oct. 6, 1999, now U.S. Pat. No. 6,606,716 which is incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
4253178 | Kolaczia | Feb 1981 | A |
4268904 | Suzuki et al. | May 1981 | A |
4356545 | West | Oct 1982 | A |
4438458 | Munscher | Mar 1984 | A |
4491914 | Sujaku | Jan 1985 | A |
4627060 | Huang et al. | Dec 1986 | A |
4635187 | Baron et al. | Jan 1987 | A |
4788658 | Hanebuth | Nov 1988 | A |
4809280 | Shonaka | Feb 1989 | A |
4916699 | Ohashi | Apr 1990 | A |
4964077 | Eisen et al. | Oct 1990 | A |
5010551 | Goldsmith et al. | Apr 1991 | A |
5017030 | Crews | May 1991 | A |
5060135 | Levine et al. | Oct 1991 | A |
5196993 | Herron et al. | Mar 1993 | A |
5214695 | Arnold et al. | May 1993 | A |
5224024 | Tu et al. | Jun 1993 | A |
5228655 | Garcia et al. | Jul 1993 | A |
5276805 | Hamaguchi | Jan 1994 | A |
5287448 | Nicol et al. | Feb 1994 | A |
5287505 | Calvert et al. | Feb 1994 | A |
5325521 | Koyama et al. | Jun 1994 | A |
5346410 | Moore, Jr. | Sep 1994 | A |
5348408 | Gelardi et al. | Sep 1994 | A |
5353240 | Mallory et al. | Oct 1994 | A |
5355357 | Yamamori et al. | Oct 1994 | A |
5356099 | Sereboff | Oct 1994 | A |
5367667 | Wahlquist et al. | Nov 1994 | A |
5374018 | Daneshvar | Dec 1994 | A |
5375800 | Wilcox et al. | Dec 1994 | A |
5381526 | Ellson | Jan 1995 | A |
5388032 | Gill et al. | Feb 1995 | A |
5390324 | Burckhartt et al. | Feb 1995 | A |
5392095 | Siegel | Feb 1995 | A |
5398333 | Schieve et al. | Mar 1995 | A |
5410447 | Miyagawa et al. | Apr 1995 | A |
5422751 | Lewis et al. | Jun 1995 | A |
5423605 | Liu | Jun 1995 | A |
5432927 | Grote et al. | Jul 1995 | A |
5443237 | Stadtmauer | Aug 1995 | A |
5450576 | Kennedy | Sep 1995 | A |
5454080 | Fasig et al. | Sep 1995 | A |
5455933 | Schieve et al. | Oct 1995 | A |
5471674 | Stewart et al. | Nov 1995 | A |
5483437 | Tang | Jan 1996 | A |
5503484 | Louis | Apr 1996 | A |
5513319 | Finch et al. | Apr 1996 | A |
5522572 | Copeland et al. | Jun 1996 | A |
5526180 | Rausnitz | Jun 1996 | A |
5530847 | Schieve et al. | Jun 1996 | A |
5537585 | Blickenstaff et al. | Jul 1996 | A |
5537618 | Boulton et al. | Jul 1996 | A |
5547154 | Kirchoff et al. | Aug 1996 | A |
5547272 | Paterson et al. | Aug 1996 | A |
5564054 | Bramnick et al. | Oct 1996 | A |
5592362 | Ohgami et al. | Jan 1997 | A |
5596481 | Liu et al. | Jan 1997 | A |
5596482 | Horikoshi | Jan 1997 | A |
5627964 | Reynolds et al. | May 1997 | A |
5649200 | Leblang et al. | Jul 1997 | A |
5668992 | Hammer et al. | Sep 1997 | A |
5678002 | Fawcett et al. | Oct 1997 | A |
5680640 | Ofek et al. | Oct 1997 | A |
5689253 | Hargreaves et al. | Nov 1997 | A |
5689706 | Rao et al. | Nov 1997 | A |
5694293 | Seto et al. | Dec 1997 | A |
5701495 | Arndt et al. | Dec 1997 | A |
5708776 | Kikinis | Jan 1998 | A |
5708812 | Van Dyke et al. | Jan 1998 | A |
5724224 | Howell et al. | Mar 1998 | A |
5727163 | Bezos | Mar 1998 | A |
5732268 | Bizzarri | Mar 1998 | A |
5748877 | Dollahite et al. | May 1998 | A |
5759644 | Stanley | Jun 1998 | A |
5768370 | Maatta et al. | Jun 1998 | A |
5775822 | Cheng | Jul 1998 | A |
5778372 | Cordell et al. | Jul 1998 | A |
5790796 | Sadowsky | Aug 1998 | A |
5796579 | Nakajima et al. | Aug 1998 | A |
5797281 | Fox | Aug 1998 | A |
5803416 | Hanson et al. | Sep 1998 | A |
5805882 | Cooper et al. | Sep 1998 | A |
5809248 | Vidovic | Sep 1998 | A |
5809511 | Peake | Sep 1998 | A |
5818635 | Hohn et al. | Oct 1998 | A |
5819274 | Jackson, Jr. | Oct 1998 | A |
5825355 | Palmer et al. | Oct 1998 | A |
5825506 | Bednar et al. | Oct 1998 | A |
5826839 | Chen | Oct 1998 | A |
5832522 | Blickenstaff et al. | Nov 1998 | A |
5835344 | Alexander | Nov 1998 | A |
5845136 | Babcock | Dec 1998 | A |
5852545 | Pan-Ratzlaff | Dec 1998 | A |
5854828 | Kocis et al. | Dec 1998 | A |
5860001 | Cromer et al. | Jan 1999 | A |
5860002 | Huang | Jan 1999 | A |
5860012 | Luu | Jan 1999 | A |
5861884 | Fujioka | Jan 1999 | A |
5881236 | Dickey | Mar 1999 | A |
5884073 | Dent | Mar 1999 | A |
5894571 | O'Connor | Apr 1999 | A |
5904327 | Cheng | May 1999 | A |
5905632 | Seto et al. | May 1999 | A |
5906506 | Chang et al. | May 1999 | A |
5909544 | Anderson, II et al. | Jun 1999 | A |
5939694 | Holcomb et al. | Aug 1999 | A |
5953533 | Fink et al. | Sep 1999 | A |
5955797 | Kim | Sep 1999 | A |
5960189 | Stupek, Jr. et al. | Sep 1999 | A |
5960204 | Yinger et al. | Sep 1999 | A |
5960411 | Hartman et al. | Sep 1999 | A |
5963743 | Amberg et al. | Oct 1999 | A |
5974546 | Anderson | Oct 1999 | A |
5978911 | Knox et al. | Nov 1999 | A |
5983369 | Bakoglu et al. | Nov 1999 | A |
5991543 | Amberg et al. | Nov 1999 | A |
5995757 | Amberg et al. | Nov 1999 | A |
6006344 | Bell, Jr. | Dec 1999 | A |
6012154 | Poisner | Jan 2000 | A |
6014744 | McKaughan et al. | Jan 2000 | A |
6023267 | Chapuis et al. | Feb 2000 | A |
6029257 | Palmer | Feb 2000 | A |
6029258 | Ahmad | Feb 2000 | A |
6032157 | Tamano et al. | Feb 2000 | A |
6034869 | Lin | Mar 2000 | A |
6038597 | Van Wyngarden | Mar 2000 | A |
6047261 | Siefert | Apr 2000 | A |
6049342 | Nielson et al. | Apr 2000 | A |
6049454 | Howell et al. | Apr 2000 | A |
6050833 | Danzyger et al. | Apr 2000 | A |
6056136 | Taber et al. | May 2000 | A |
6061788 | Reynaud et al. | May 2000 | A |
6061810 | Potter | May 2000 | A |
6065136 | Kuwabara | May 2000 | A |
6104874 | Branson et al. | Aug 2000 | A |
6108697 | Raymond et al. | Aug 2000 | A |
6112320 | Dien | Aug 2000 | A |
6113050 | Rush | Sep 2000 | A |
6166729 | Acosta et al. | Dec 2000 | A |
6167383 | Henson | Dec 2000 | A |
6167532 | Wisecup | Dec 2000 | A |
6170065 | Kobata et al. | Jan 2001 | B1 |
6182212 | Atkins et al. | Jan 2001 | B1 |
6182275 | Beelitz et al. | Jan 2001 | B1 |
6199204 | Donohue | Mar 2001 | B1 |
6202207 | Donohue | Mar 2001 | B1 |
6226412 | Schwab | May 2001 | B1 |
6236901 | Goss | May 2001 | B1 |
6247126 | Beelitz et al. | Jun 2001 | B1 |
6256620 | Jawahar et al. | Jul 2001 | B1 |
6263215 | Patton et al. | Jul 2001 | B1 |
6272484 | Martin et al. | Aug 2001 | B1 |
6279109 | Brundridge | Aug 2001 | B1 |
6279125 | Klein | Aug 2001 | B1 |
6279156 | Amberg et al. | Aug 2001 | B1 |
6298443 | Colligan et al. | Oct 2001 | B1 |
6298457 | Rachlin et al. | Oct 2001 | B1 |
6331936 | Hom et al. | Dec 2001 | B1 |
6356977 | Ofek et al. | Mar 2002 | B2 |
6367035 | White | Apr 2002 | B1 |
6385737 | Benignus et al. | May 2002 | B1 |
6393586 | Sloan et al. | May 2002 | B1 |
6438684 | Mitchell et al. | Aug 2002 | B1 |
6449735 | Edwards et al. | Sep 2002 | B1 |
6601040 | Kolls | Jul 2003 | B1 |
6606716 | Vrhel et al. | Aug 2003 | B1 |
6665758 | Frazier et al. | Dec 2003 | B1 |
6892331 | Da Palma et al. | May 2005 | B2 |
20030204792 | Cahill et al. | Oct 2003 | A1 |
Number | Date | Country |
---|---|---|
2065939 | Jul 1981 | GB |
2329266 | Mar 1999 | GB |
2356271 | May 2001 | GB |
WO 9300628 | Jan 1993 | WO |
WO 9408289 | Apr 1994 | WO |
WO 9709676 | Mar 1997 | WO |
WO 9818086 | Apr 1998 | WO |
Number | Date | Country | |
---|---|---|---|
20040128496 A1 | Jul 2004 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 09413422 | Oct 1999 | US |
Child | 10636315 | US |