Method for the hot add of a network adapter on a system including a statically loaded adapter driver

Information

  • Patent Grant
  • 6202111
  • Patent Number
    6,202,111
  • Date Filed
    Wednesday, October 1, 1997
    27 years ago
  • Date Issued
    Tuesday, March 13, 2001
    23 years ago
Abstract
A software architecture for the hot add and swap of adapters. The software architecture allows users to replace failed components, upgrade outdated components, and add new functionality, such as new network interfaces, disk interface adapters and storage, without impacting existing users. The software architecture supports the hot add and swap of off-the-shelf adapters, including those adapters that are programmable.
Description




PRIORITY CLAIM




The benefit under 35 U.S.C. §119(e) of the following U.S. provisional application(s) is hereby claimed:


















application




Filing






Title




Ser. No.




Date











“Hardware and Software Architecture for




60/047,016




May 13,






Inter-Connecting an Environmental





1997






Management System with a Remote Interface”






“Self Management Protocol for a Fly-By-Wire




60/046,416




May 13,






Service Processor”





1997






“Hot Plug Software Architecture for Off the




60/046,311




May 13,






Shelf Operating Systems”





1997






“Computer System Hardware Infrastructure for




60/046,398




May 13,






Hot Plugging Single and Multi-Function PCI





1997






Cards Without Embedded Bridges”






“Computer System Hardware Infrastructure for




60/046,312




May 13,






Hot Plugging Multi-Function PCI Cards With





1997






Embedded Bridges”














APPENDICES




Appendix A, which forms a part of this disclosure, is a list of commonly owned copending U.S. patent applications. Each one of the applications listed in Appendix A is hereby incorporated herein in its entirety by reference thereto.




COPYRIGHT RIGHTS




A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.




BACKGROUND OF THE INVENTION




1. Field of the Invention




The field of the invention relates to I/O adapters in computer systems. More particularly, the field of invention relates to the hot add and swap of adapters on a computer system.




2. Description of the Related Technology




As enterprise-class servers, which are central computers in a network that manage common data, become more powerful and more capable, they are also becoming ever more sophisticated and complex. For many companies, these changes lead to concerns over server reliability and manageability, particularly in light of the increasingly critical role of server-based applications. While in the past many systems administrators were comfortable with all of the various components that made up a standards-based network server, today's generation of servers can appear as an incomprehensible, unmanageable black box. Without visibility into the underlying behavior of the system, the administrator must “fly blind.” Too often, the only indicators the network manager has on the relative health of a particular server is whether or not it is running.




It is well-acknowledged that there is a lack of reliability and availability of most standards-based servers. Server downtime, resulting either from hardware or software faults or from regular maintenance, continues to be a significant problem. By one estimate, the cost of downtime in mission critical environments has risen to an annual total of $4.0 billion for U.S. businesses, with the average downtime event resulting in a $140 thousand loss in the retail industry and a $450 thousand loss in the securities industry. It has been reported that companies lose as much as $250 thousand in employee productivity for every 1% of computer downtime. With emerging Internet, intranet and collaborative applications taking on more essential business roles every day, the cost of network server downtime will continue to spiral upward.




A significant component of cost is hiring administration personnel. These costs decline dramatically when computer systems can be managed using a common set of tools, and where they don't require immediate attention when a failure occurs. Where a computer system can continue to operate even when components fail, and defer repair until a later time, administration costs become more manageable and predictable.




While hardware fault tolerance is an important element of an overall high availability architecture, it is only one piece of the puzzle. Studies show that a significant percentage of network server downtime is caused by transient faults in the I/O subsystem. These faults may be due, for example, to the device driver, the device firmware, or hardware which does not properly handle concurrent errors, and often causes servers to crash or hang. The result is hours of downtime per failure, while a system administrator discovers the failure, takes some action, and manually reboots the server. In many cases, data volumes on hard disk drives become corrupt and must be repaired when the volume is mounted. A dismount-and-mount cycle may result from the lack of “hot pluggability” or “hot plug” in current standards-based servers. Hot plug refers to the addition and swapping of peripheral adapters to an operational computer system. Diagnosing intermittent errors can be a frustrating and time-consuming process. For a system to deliver consistently high availability, it must be resilient to these types of faults.




Existing systems also do not have an interface to control the changing or addition of an adapter. Since any user on a network could be using a particular adapter on the server, system administrators need a software application that will control the flow of communications to an adapter before, during, and after a hot plug operation on an adapter.




Current operating systems do not by themselves provide the support users need to hot add and swap an adapter. System users need software that will freeze and resume the communications of their adapters in a controlled fashion. The software needs to support the hot add of various peripheral adapters such as mass storage and network adapters. Additionally, the software should support adapters that are designed for various bus systems such as Peripheral Component Interconnect, CardBus, Microchannel, Industrial Standard Architecture (ISA), and Extended ISA (EISA). System users also need software to support the hot add and swap of canisters and multi-function adapter cards, which are plug-in cards having more than one adapter.




In a typical PC-based server, upon the failure of an adapter, which is a printed circuit board containing microchips, the server must be powered down, the new adapter and adapter driver installed, the server powered back up and the operating system reconfigured.




However, various entities have tried to implement the hot plug of these adapters to a fault tolerant computer system. One significant difficulty in designing a hot plug system is protecting the circuitry contained on the adapter from being short-circuited when an adapter is added to a powered system. Typically, an adapter contains edge connectors which are located on one side of the printed circuit board. These edge connectors allow power to transfer from the system bus to the adapter, as well as supplying data paths between the bus and the adapter. These edge connectors fit into a slot on the bus on the computer system. A traditional hardware solution for “hot plug” systems includes increasing the length of at least one ground contact of the adapter, so that the ground contact on the edge connector is the first connector to contact the bus on insertion of the I/O adapter and the last connector to contact the bus on removal of the adapter. An example of such a solution is described in U.S. Pat. No. 5,210,855 to Thomas M. Bartol.




U.S. Pat. No. 5,579,491 to Jeffries discloses an alternative solution to the hot installation of I/O adapters. Here, each hotly installable adapter is configured with a user actuable initiator to request the hot removal of an adapter. The I/O adapter is first physically connected to a bus on the computer system. Subsequent to such connection a user toggles a switch on the I/O adapter which sends a signal to the bus controller. The signal indicates to the bus controller that the user has added an I/O adapter. The bus controller then alerts the user through a light emitting diode (LED) whether the adapter can be installed on the bus.




However, the invention disclosed in the Jeffries patent also contains several limitations. It requires the physical modification of the adapter to be hotly installed. Another limitation is that the Jeffries patent does not teach the hot addition of new adapter controllers or bus systems. Moreover, the Jeffries patent requires that before an I/O adapter is removed, another I/O adapter must either be free and spare or free and redundant. Therefore, if there was no free adapter, hot removal of an adapter is impossible until the user added another adapter to the computer system.




A related technology, not to be confused with hot plug systems, is Plug and Play defined by Microsoft and PC product vendors. Plug and Play is an architecture that facilitates the integration of PC hardware adapters to systems. Plug and Play adapters are able to identify themselves to the computer system after the user installs the adapter on the bus. Plug and Play adapters are also able to identify the hardware resources that they need for operation. Once this information is supplied to the operating system, the operating system can load the adapter drivers for the adapter that the user had added while the system was in a non-powered state. Plug and Play is used by both Windows 95 and Windows NT to configure adapter cards at boot-time. Plug and Play is also used by Windows 95 to configure devices in a docking station when a hot notebook computer is inserted into or removed from a docking station.




Therefore, a need exists for improvements in server management which will result in continuous operation despite adapter failures. System users must be able to replace failed components, upgrade outdated components, and add new functionality, such as new network interfaces, disk interface adapters and storage, without impacting existing users. Additionally, system users need a process to hot add their legacy adapters, without purchasing new adapters that are specifically designed for hot plug. As system demands grow, organizations must frequently expand, or scale, their computing infrastructure, adding new processing power, memory, mass storage and network adapters. With demand for 24-hour access to critical, server-based information resources, planned system downtime for system service or expansion has become unacceptable.




SUMMARY OF THE INVENTION




Embodiments of the inventive software architecture allows users to replace failed components, upgrade outdated components, and add new functionality, such as new network interfaces, disk interface adapters and storage, without impacting existing users. The software architecture supports the hot add and swap of off-the-shelf adapters, including those adapters that are programmable.




One embodiment of the invention includes a method of hot adding a network adapter to an operational computer including a plurality of bus slots, comprising: executing a statically loaded adapter driver which accepts a request packet to initialize a network adapter adding a programmable network adapter, which is connected to a plurality of I/O devices, to one of the bus slots, executing a configuration manager which configures the configuration space of the programmable network and initializing the programmable network adapter so that I/O is communicated between the added programmable network adapter and the operational computer.




Another embodiment of the invention includes a method of hot adding a network adapter to an operational computer including a plurality of bus slots, comprising: executing a statically loaded adapter driver which accepts a request packet to initialize a new network adapter, adding a network adapter to one of the bus slots having a non-powered state, executing a configuration manager which configures the adapter space of the network adapter, enabling power to the bus slot and initiating communications between the computer and the new network adapter.




Yet another embodiment of the invention includes a method of hot adding a network adapter to an operational computer including at least one canister, wherein the canister contains one or more existing network adapters, comprising: executing a statically loaded network adapter driver which accepts a suspend and a restart packet suspending all communication to the existing network adapters on a selected one of the canisters, disabling power to the selected canister, while still maintaining power to the computer, adding a new network storage adapter to the canister, enabling power to the canister, restarting communications to the existing network adapters and initiating communications between the computer and the new network adapter.











BRIEF DESCRIPTION OF THE DRAWINGS





FIG. 1

is a top-level block diagram showing a fault tolerant computer system of one embodiment of the present invention, including a mass storage adapter and a network adapter.





FIG. 2

is a block diagram showing a first embodiment of a multiple bus configuration connecting I/O adapters and a network of microcontrollers to the clustered CPUs of the fault tolerant computer system, shown in FIG.


1


.





FIG. 3

is a block diagram showing a second embodiment of a multiple bus configuration connecting canisters containing I/O adapters and a network of microcontrollers to the clustered CPUs of the fault tolerant computer system, shown in FIG.


1


.





FIG. 4

is a block diagram illustrating a portion of the fault tolerant computer system, shown in FIG.


1


.





FIG. 5

is a block diagram illustrating certain device driver components of the NetWare Operating System and one embodiment of a configuration manager which reside on the fault tolerant computer system, shown in FIG.


1


.





FIG. 6

is one embodiment of a flowchart illustrating the process by which a user performs a hot add of an adapter in the fault tolerant computer system, shown in FIG.


2


.





FIG. 7

is one embodiment of a flowchart showing the process by which a user performs a hot add of an adapter on a canister on a fault tolerant computer system, shown in FIG.


3


.





FIG. 8

is one embodiment of a flowchart showing the process by which a user performs a hot swap of an adapter on a fault tolerant computer system, shown in

FIGS. 2 and 3

.





FIGS. 9A and 9B

are flowcharts showing one process by which the configuration manager may suspend and restart I/O for hot swapping network adapters under the NetWare Operating System, shown in FIG.


8


.





FIGS. 10A

,


10


B and


10


C are flowcharts showing one process by which the configuration manager may suspend and restart I/O for mass hot swapping storage adapters under the NetWare Operating System, show in FIG.


8


.





FIG. 11

is a block diagram illustrating a portion of the Windows NT Operating System and a configuration manager which both reside on the fault tolerant computer system, shown in

FIGS. 2 and 3

.





FIG. 12

is one embodiment of a flowchart showing the process by which the Windows NT Operating System initializes the adapter (miniport) drivers shown in

FIG. 11

at boot time.





FIG. 13

is a flowchart illustrating one embodiment of a process by which a loaded adapter driver of

FIG. 12

initializes itself with the configuration manager under the Windows NT Operating System.





FIG. 14

is one embodiment of a flowchart showing the process by which the configuration manager handles a request to perform the hot add of an adapter under the Windows NT Operating System, shown in FIG.


11


.





FIG. 15

is one embodiment of a flowchart showing the process by which an adapter driver locates and initializes a mass storage adapter under the Windows NT Operating System in the hot add process shown in FIG.


14


.





FIG. 16

is one embodiment of a flowchart showing the process by which the FindAdapter( ) routine initializes an adapter during the hot add locate and initialize process of FIG.


15


.





FIG. 17

is one embodiment of a flowchart showing the process by which the configuration manager suspends and resumes the state of an adapter under the Windows NT Operating System during the hot swap shown in FIG.


8


.











DETAILED DESCRIPTION OF THE INVENTION




The following detailed description presents a description of certain specific embodiments of the present invention. However, the present invention can be embodied in a multitude of different ways as defined and covered by the claims. In this description, reference is made to the drawings wherein like parts are designated with like numerals throughout.





FIG. 1

is a block diagram showing one embodiment of a fault tolerant computer system. Typically the computer system is one server in a network of servers and is communicating with client computers. Such a configuration of computers is often referred to as a client-server architecture. A fault tolerant server is useful for mission critical applications such as the securities business where any computer down time can result in catastrophic financial consequences. A fault tolerant computer will allow for a fault to be isolated and not propagate through the system thus providing complete or minimal disruption to continuing operation. Fault tolerant systems also provide redundant components, such as adapters, so service can continue even when one component fails.




The system includes a fault tolerant computer system


100


connecting to a mass storage adapter


102


and a network adapter


104


such as for use in a Local Area Network (LAN). The mass storage adapter


102


may contain one or more of various types of device controllers: a magnetic disk controller


108


for magnetic disks


110


, an optical disk controller


112


for optical disks


114


, a magnetic tape controller


116


for magnetic tapes


118


, a printer controller


120


for various printers


122


, and any other type of controller


124


for other devices


126


. For such multi-function adapters, the controllers may be connected by a bus


106


such as a PCI bus. The peripheral devices communicate and are connected to each controller, by a mass storage bus. In one embodiment, the bus may be a Small Computer System Interface (SCSI) bus. In a typical server configuration there is more than one mass storage adapter connected to the computer


100


. Adapters and I/O devices are off-the-shelf products. For instance, sample vendors for a magnetic disk controller


108


and magnetic disks


110


include Qlogic, Intel, and Adaptec. Each magnetic hard disk may hold multiple Gigabytes of data.




The network adapter


104


typically includes a network controller


128


. The network adapter


104


, which is sometimes referred to as a network interface card (NIC), allows digital communication between the fault tolerant computer system


100


and other computers (not shown) such as a network of servers via a connection


130


. In certain configurations there may be more than one network controller adapter connected to the computer


100


. For LAN embodiments of the network adapter, the protocol used may be, for example, Ethernet (IEEE 802.3), Token Ring (IEEE 802.5), Fiber Distributed Datalink Interface (FDDI), Asynchronous Transfer Mode (ATM) or any other conventional protocol. Typically, the mass storage adapter


102


and the network adapter


104


are connected to the computer using a standards-based bus system. In different embodiments of the present invention, the standards based bus system could be Peripheral Component Interconnect (PCI), Microchannel, SCSI, Industrial Standard Architecture (ISA) and Extended ISA (EISA) architectures.





FIG. 2

shows one embodiment of the bus structure of the fault tolerant computer system


100


. A number ‘n’ of central processing units (CPUs)


200


are connected through a host bus


202


to a memory controller


204


, which allows for access to memory by the other system components. In one embodiment, there are four CPUs


200


, each being an Intel Pentium Pro microprocessor. However, many other general purpose or special purpose parts and circuits could be used. A number of bridges


206


,


208


and


209


connect the host bus to, respectively, three high speed I/O bus systems


212


,


214


, and


216


. The bus systems


212


,


214


and


216


, referred to as PC buses, may be any standards-based bus system such as PCI, ISA, EISA and Microchannel. In one embodiment of the invention, the bus system


212


is PCI. Alternative embodiments of the invention employ a proprietary bus. An ISA Bridge


218


is connected to the bus system


212


to support legacy devices such as a keyboard, one or more floppy disk drives and a mouse. A network of microcontrollers


225


is also interfaced to the ISA bus


226


to monitor and diagnose the environmental health of the fault tolerant system. A more detailed description of the microcontroller network


225


is contained in the U.S. patent application Ser. No. 08/942,402, “Diagnostic and Managing Distributed Processor System” to Johnson.




A bridge


230


and a bridge


232


connects, respectively, the PC bus


214


with PC bus


234


and the PC bus


216


with the PC bus


236


to provide expansion slots for peripheral devices or adapters. Separating the devices


238


and


240


, respectively, on PC buses


234


and


236


reduces the potential that an adapter failure or other transient I/O error affect the entire bus and corrupt data, bring the entire system down or stop the system administrator from communicating with the system. The adapter devices


238


and


240


are electrically and mechanically connected to the PC buses


234


and


236


by PC slots such as slot


241


. Hence, an adapter is “plugged” into a slot. In one embodiment of the invention, each slot may be independently powered on and off.





FIG. 3

shows an alternative bus structure embodiment of the fault tolerant computer system


100


. The two PC buses


214


and


216


contain a set of bridges


242


-


248


to a set of PC bus systems


250


-


256


. As with the PC buses


214


and


216


, the PC buses


250


-


256


can be designed according to any type of bus architecture including PCI, ISA, EISA, and Microchannel. The PC buses


250


-


256


are connected, respectively, to a canister


258


,


260


,


262


and


264


. The canisters


258


-


264


are casings for a detachable bus system and provide multiple PC slots


266


for adapters. In one embodiment, each canister may be independently powered on and off.





FIG. 4

is a block diagram illustrating hardware and software components of the computer system


100


relating to hot plugging an adapter. A hot plug user interface


302


accepts requests by a user such as a system manager or administrator to perform the hot add or a hot swap of an adapter


310


. The user interface


302


preferably communicates through an industry standard operating system


304


such as Windows NT or NetWare, to the hot plug system driver


306


and an adapter driver


308


. In an alternative embodiment of the invention, a proprietary operating system may be utilized.




The hot plug system driver


306


controls the adapter driver


308


for a hot plug operation. The hot plug system driver


306


stops and resumes the communications between the adapter


310


and the adapter driver


308


. During a hot add or swap of the adapter


310


, the hot plug hardware


312


deactivates the power to the PC slots


241


and


266


(FIGS.


2


and


3


). One embodiment of the hot plug hardware


312


may include the network of microcontrollers


225


(

FIGS. 2 and 3

) to carry out this functionality.




The adapter


310


could be any type of peripheral device such as a network adapter, a mass storage adapter, or a sound board. Typically, however, adapters involved in providing service to client computers over a network, such as mass storage, network and communications adapters, would be the primary candidates for hot swapping or adding in a fault tolerant computer system such as the computer system


100


(FIG.


1


). The adapter


310


is physically connected to the hot plug hardware by PC slots such as slots


241


and


266


(FIGS.


2


and


3


).





FIGS. 6

,


7


, and


8


illustrate a generic process by which alternative embodiments of the present invention perform the hot add and swap of devices. Some embodiments of the invention use commercial operating systems, such as Macintosh O.S., OS/2, VMS, DOS, Windows 3.1/95/98 or UNIX to support hot add and swap.




In alternative embodiments of the invention, the hot plug system executes on an I/O platform. In a first architectural embodiment of the invention, the I/O platform and its devices plug in as a single adapter card into a slot. In a second architectural embodiment of the invention, the bridge is integrated onto the motherboard, and hot plug adapters plug in behind the bridge. In a third architectural embodiment of the invention, the I/O platform is plugged in as an option to control non-intelligent devices as are recognized by skilled technologists.




In the second architectural embodiment, the I/O platform can be any industry standard I/O board such as, for example, the 1Q80960RP Evaluation Board which is executing the Ix Works operating system by WindRiver Systems, Inc. In the second architectural embodiment, a hardware device module (HDM) or adapter driver executes on the motherboard. The HDM is designed to communicate via messages with any type of operating system executing on the computer. These messages correspond to primitives which allow hot add and hot swap of adapters plugged into the motherboard.




The following sections describe embodiments of the invention operating on the computers shown in

FIGS. 2 and 3

under NetWare Operating System and Windows NT. As previously mentioned,

FIGS. 6

,


7


, and


8


illustrate a generic process by which alternative embodiments of the present invention perform the hot add and swap of devices. First, a process for hot add and swap of an adapter under the NetWare Operating System will be described according to the processes shown in

FIGS. 6

,


7


and


8


. Second, a process for hot add and swap of an adapter


310


under the Windows NT Operating System environment will be described according to the processes shown in

FIGS. 6

,


7


, and


8


.




Adapter Hot Plug with NetWare Operating System





FIG. 5

is a block diagram illustrating the system components of the NetWare Operating System and an embodiment of the software components of the invention. A configuration manager


500


is responsible for managing all or some of the adapters on the PC buses


234


and


236


(FIG.


2


), or


250


,


252


,


254


and


256


(FIG.


3


). The configuration manager


500


keeps track of the configuration information for every managed adapter located on the fault tolerant computer system


100


. The configuration manager


500


also allocates resources for every managed adapter and initializes each managed adapter's registers during a hot swap operation. The registers of an adapter


310


are components or intermediate memories whose values issues a certain action in the adapter, or whose values indicate the status of the adapter.




Novell has created two interfaces for adapter drivers to communicate with the NetWare Operating Systems (FIGS.


1


and


4


). First, Novell has provided the Open Datalink Interface (ODI) for network drivers. Second, Novell has created the NetWare Peripheral Architecture (NWPA) for mass storage adapters. Each of these interfaces will be described below.




With respect to network device drivers, such as a driver


524


, ODI was created to allow multiple LAN adapters, such as the adapter


104


to co-exist on network systems, and to facilitate the task of writing device driver software. The ODI specification describes the set of interface (

FIG. 1

) and software modules used by hardware vendors to interface with the NetWare operating system. At the core of the ODI is the link support layer (LSL)


502


. The LSL


502


is the interface between drivers and protocol stacks (not shown). Any LAN driver written to ODI specifications can communicate with any ODI protocol stack via the LSL


502


. A protocol stack is a layered communication architecture, whereby each layer has a well defined interface.




Novell has provided a set of support modules that creates the interface to the LSL


502


. These modules are a collection of procedures, macros and structures. These modules are the media support module (MSM)


504


which contains general functions common to all drivers and the topology specific modules (TSM)


506


. The TSM


506


provides support for the standardized media types of token ring, Fiber Distributed Datalink Interface (FDDI) and Ethernet. The MSM


504


manages the details of interfacing ODI multi-link interface drivers (MLID) to the LSL


502


and the NetWare Operating System. The MSM


504


typically handles all of the generic initialization and run-time issues common to all drivers. The topology specific module or TSM


506


manages operations that are unique to a specific media type. The Hardware Specific Modules (HSM) are created by each adapter vendor for each type of adapter


308


. The HSM


508


contains the functionality to initialize, reset and shutdown the adapter


308


. The HSM


508


also handles packet transmission and reception to and from each adapter


308


.




With respect to mass storage device drivers, such as a driver


526


, the NetWare Peripheral Architecture (NWPA)


510


is a software architecture developed by Novell which provides an interface for mass storage developers to interface with the NetWare operating system. The NWPA


510


is divided into two components: a host adapter module (HAM)


512


and a custom device module (CDM)


513


. The HAM


512


is a component that contains information on the host adapter hardware which is typically written by a mass storage adapter vendor. The CDM


513


is the component of the NWPA


510


that regulates the mass storage adapters


102


.




The main purpose of the Filter CDM


516


is to locate each HAM


512


, register adapter events, and process the I/O suspend and I/O restart requests from the configuration manager


500


. These commands will be discussed in greater detail below with reference to FIG.


10


.




A NetWare user interface


518


initiates the requests to the configuration manager


500


to freeze and restart communications to a specified adapter


310


. A remote Simple Network Management Protocol (SNMP) agent


520


can also start the request to freeze and resume communications to the configuration manager


500


through a local SNMP agent


522


. SNMP is one of a set of protocols called TCP/IP, which is specifically designed for use in managing computer systems. In one embodiment of the invention, the computers would be similar to the fault tolerant computer system of FIG.


1


and connected in a server network via connection


130


.





FIG. 6

is a flowchart illustrating one embodiment of the process to hot add an adapter


310


. For instance, the process shown in

FIG. 6

may be utilized by a fault tolerant computer system


100


containing the bus structure shown in FIG.


2


. The process described by

FIG. 6

is generic to various implementations of the invention. The following description of

FIG. 6

focuses on the hot add of an adapter


310


(

FIG. 4

) under the NetWare Operating System.




Starting in state


600


, a user inserts an adapter


310


into one of the PC bus slots, such as the slot


241


. At this point, the hot plug hardware


312


has not turned on the power to the adapter's slot, although the fault tolerant computer system


100


is operational. Since the adapter's slot is not powered and is physically isolated from any other devices which are attached to the bus


234


, the adapter will not be damaged by a short circuit during the insertion process, and will not create problems for the normal operation of the fault tolerant computer system


100


. Moving to state


602


, the configuration manager


500


is notified that the adapter is now in the slot, and requests the hot plug hardware


312


to supply power to the adapter's slot. In one embodiment of the invention, the hot plug hardware automatically detects the presence of the newly added adapter


310


and informs the configuration manager


500


. In another embodiment of the invention, the user notifies the hot plug hardware


312


that the adapter


310


is connected to one of the PC slots


241


. The process by which a slot


241


and adapter


238


are powered on and attached to a shared bus


234


is described in the United States application Ser. No. 08/942,402, “Diagnostic and Managing Distributed Processor System”to Johnson.




Once an adapter


310


is added to the computer system, system resources must be allocated for the adapter


310


. The configuration manager


500


then configures the newly added adapter


310


(state


604


) by writing information to the adapter's configuration space registers.




Traditionally, an adapter's resources are allocated by the Basic Input Output Services (BIOS). The BIOS are service routines which are invoked during the fault tolerant computers system's


100


start up phase. The BIOS programs the I/O ports, or memory locations of each adapter on the fault tolerant computer system


100


. However, since any newly added adapter was not present during the execution of the BIOS initialization routines, the configuration manager


500


must configure the new adapter in the same manner that another like adapter is programmed by the BIOS. The process by which the configuration space of an a newly added adapter


310


is configured is described in the United States application Ser. No. 08/941,268, “Configuration Management Method for Hot Adding and Hot Replacing Devices” to Mahalingam.





FIG. 7

is a flowchart illustrating the process hot add an adapter


310


on one of the canisters


258


-


264


. The process described by

FIG. 7

is generic to multiple embodiments of the invention. For instance, the process shown in

FIG. 7

is utilized by a fault tolerant computer system


100


containing the bus structure shown in FIG.


3


. The following description of

FIG. 7

focuses on the hot add of an adapter


310


on a canister under the NetWare Operating System.




Starting in state


700


, all devices already operating in the selected canister are located, and activity involving those adapters is suspended. In one embodiment, the SNMP agent


520


or the NetWare User Interface


518


locates all devices, and initiates the request for the suspension for every adapter, such as the adapter


310


, on the canister. The configuration manager


500


suspends the I/O for every adapter that is located on the canister which was selected by the user to receive the new card. In another embodiment, the SNMP agent


520


or the NetWare User Interface


518


requests the configuration manager to suspend the canister. The configuration manager


500


then locates all devices and suspends the I/O for each adapter located on the selected canister.




The configuration manager


500


initiates the suspension of I/O to either the NWPA


510


for the mass storage adapters


102


or the LSL


502


and MSM


504


for the network adapter


104


.

FIGS. 9 and 10

, described below, illustrate in detail the process by which the configuration manager


500


suspends and resumes the I/O to a mass storage adapter and to a network adapter.




For the embodiments of the invention that use PCI, the bus must be quiesced, and power to the canister turned off. In one embodiment, the software must assert the bus reset bit as defined by the PCI specification (state


702


). If the power to the canister is on, the hot plug hardware


312


is directed by the configuration manager


500


to disable the power to one of the specified canisters


258


-


264


(state


704


). In another embodiment, the hot plug hardware


312


asserts bus reset, then powers the canister down.




Proceeding to state


706


, the user removes the selected canister, e.g., canister


264


, and inserts an adapter into one of the PC slots


266


. If the card is on a new canister that was not present during boot initialization, the hot plug hardware


312


should support the sparse assignment of bus numbers for those systems that require such functionality. The user then returns the canister to the fault tolerant computer system


100


. The hot plug hardware


312


then restarts, at the request of the configuration manager


500


, the power to the selected canister (state


708


). For PCI systems, the bus reset bit must be de-asserted (state


710


). In one embodiment of the invention, this de-assertion is accomplished by the hot plug hardware. In another embodiment, the configuration manager


500


de-asserts the bus reset. The configuration manager


500


re-initializes the configuration space of each adapter that was previously in the system (state


712


). Since an adapter has lost power during a hot add, the adapter is in an unknown state after reapplying power. Moving to state


714


, the configuration manager


500


programs the configuration space of the new adapter. Finally, the configuration manager


500


resumes operations to all of the adapters located on the canister (state


718


). For mass storage adapters


102


, the configuration manager


500


notifies the NWPA


510


to resume communications. For network adapters


104


, the configuration manager


500


contacts the LSL


502


to resume communications. In some embodiments of the invention, the configuration manager


500


restarts I/O to all adapters in the canister, per such a request, while in other embodiments, the user interface


518


or SNMP agent


520


requests the configuration manger


500


to restart each adapter.





FIG. 8

is a flowchart illustrating the process by which a user performs the hot swap of an adapter. The process described by

FIG. 8

is generic to various implementations of the invention. For instance, the process shown in

FIG. 8

may be utilized by a fault tolerant computer system


100


shown in

FIGS. 2 and 3

. The following description of

FIG. 8

focuses on the hot swap of an adapter


310


under the NetWare Operating System.




Before starting in state


800


, an event has occurred, such as a failure of an adapter, and the operator has been informed of the failure. The operator has procured a replacement part, and is determined to repair the computer system


100


at this time. The operator may have some other reason for deciding to remove and replace a card, such as upgrading to a new version of the card or its firmware. A user indicates his intention to swap an adapter through the NetWare user interface


518


or a remote SNMP agent


520


(FIG.


5


).




For the embodiment of the computer shown in

FIG. 2

, the configuration manager


500


suspends the communication between the adapter, which is to be swapped, and the adapter driver


308


(state


802


). For the embodiment of the computer shown in

FIG. 3

, the configuration manager


500


freezes the communication to each adapter located on the same canister as the adapter to be swapped.

FIGS. 9 and 10

, described below, illustrate the process by which the communication is suspended and restarted for, respectively, a mass storage adapter and a network adapter.




Next, in some embodiments, the hot plug hardware


318


asserts bus reset, if necessary, before removing power (state


804


). In other embodiments, the configuration manager


500


specifically causes bus reset to be asserted before directing the hot plug hardware


318


to remove power. For embodiments of the computer shown in

FIG. 2

, the hot plug hardware


318


is then directed by the configuration manager


500


to suspend the power to the slot (state


806


). For embodiments of the computer shown in

FIG. 3

, the hot plug hardware


318


is directed by the configuration manager


500


to suspend the power to adapter's canister (state


806


).




Proceeding to state


808


, for a canister system, the user removes the canister containing the failed card and exchanges an old adapter with a new adapter. The user then reinserts the canister. For a non-canister system, the user swaps the old adapter for the new adapter in the slot.




For canister systems with a PCI bus, at state


810


, the hot plug hardware


318


reapplies power to the slot or the canister. For some embodiments, the hot plug hardware


312


also removes bus reset, if necessary, after applying power (state


812


). In other embodiments, the configuration manager


500


must specifically de-assert the bus reset. For the embodiment of the computer shown by

FIG. 2

, the configuration manager


500


reprograms the configuration space of the replaced adapter to the same configuration as the old adapter (state


814


). For the embodiment of the computer shown in

FIG. 3

, the configuration manager


500


reprograms the configuration space and resumes the communication of each adapter located on the canister on which the adapter was swapped (state


814


). Finally in state


816


the configuration manager changes each adapter's state to active.





FIGS. 9A and 9B

illustrate the process by which the configuration manager


500


suspends and restarts the communication of a network adapter, such as the adapter


104


. The configuration manager


500


maintains information about the configuration space for each of the adapters maintained on the system. However, the configuration manager


500


does not know the logical number that the NetWare Operating System has assigned to each adapter. The configuration manager


500


needs the logical number of the adapter to direct the NetWare Operating System to shutdown a particular adapter.

FIGS. 9A and 9B

illustrate one embodiment of process of how the configuration manager


500


obtains the logical number of an adapter.




Starting in a decision state


900


in

FIG. 9A

, the configuration manager


500


checks whether the adapter's class is of the type “LAN” (or network). For PCI systems, each adapter maintains information in its PCI configuration space indicating its class. If the configuration manager


500


identifies an adapter as being of the LAN class, the configuration manager


500


proceeds to state


902


. Otherwise, the configuration manager performs an alternative routine to handle the request to suspend or restart I/O communications (state


904


). For example, if the class of the adapter


310


were of type “SCSI” (or mass storage), the configuration manager


500


would follow the process described in

FIG. 10

for freezing the communication for a mass storage adapter


102


.




As defined by the PCI specification, the base address registers (BARs) define the starting point of the I/O and memory addresses that each adapter has been allocated in system memory. Also, defined by the PCI specification, an adapter can have up to six BARs. It is up to the adapter vendor to implement one or more BARS in the adapter for I/O or memory addressing, as desired. According to the PCI specification, each of the six BAR entries in an adapter's configuration space is identified as to its resource type (bit zero indicates whether this BAR describes a memory space or I/O space).




The configuration manager


500


reads all of the BARs in the configuration space for each adapter


310


, looking for a BAR which describes I/O resources. For each such BAR, the LSL


502


configuration spaces are searched for an I/O port address which matches this BAR. This process continues until a match is found, identifying the LSL


502


configuration space which describes this adapter. If no match is found, then LSL


502


has no logical board describing this adapter, and no driver exists to service this board.




At state


902


, the variable “x” is initialized to zero. The xth BAR is examined to see if it is an I/O class address (states


906


and


908


). If the BAR is not an I/O address, x is incremented (state


912


), and a check is made whether all BARs have been examined (state


914


). If all six BARs have now been examined (state


914


), a status is returned by the configuration manager


500


indicating “driver not loaded”. Otherwise, the configuration manager


500


returns to state


908


to examine the next BAR.




Referring to the state


910


, the configuration manager


500


assigns the variable “board_num” the value of zero. The configuration manager


500


uses the variable “board_num” when requesting information from the NetWare Operating System driver configuration tables. A driver configuration table describes what NetWare knows about a particular driver and the driver's adapter. At state


918


, the configuration manager


500


calls the NetWare Operating System to request the configuration table of the “board_num” logical slot. The NetWare Operating Systems call to retrieve configuration table information is GetMLIDConfigurationTableEntry( ).




If the configuration manager


500


call to GetMLIDConfigurationTableEntry( ) returns a configuration table, the configuration manager


500


compares the values of IOPort


0


and IOPort


1


fields of the configuration table, to the address located in the xth I/O BAR (state


908


). If no match is found, the configuration manager


500


increments the board_num (state


924


) and checks to see if any boards remain to be checked (state


926


). If boards remain to be checked, the configuration manager proceeds back to state


918


. Otherwise, if all the boards have been checked, the configuration manager


500


proceeds to look for the next BAR (state


912


). Maxlan-boards is a variable maintained by the NetWare Operating System indicating the maximum number of logical network adapters supported.




If the BAR has a value equal to IOPortO or IOPort


1


, the current configuration table describes the requested adapter and the process proceeds to state


922


. The configuration manager


500


has at this point identified the logical board number of the adapter that the configuration manager


500


needs to shut down (state


922


). The configuration manager


500


makes the NetWare Operating System call LSLGetMLIDControlEntry( ) to find an entry point into the adapter driver


308


. As part of the system call, the configuration manager


500


passes the logical board number as a parameter. The LSLGetMLIDControlEntry( ) system call returns a pointer to the DriverControl( ) entry point for the requested board. The DriverControl( ) entry to the HSM provides a means to quiesce or remove an instance of the driver. At a decision state


924


, the configuration manager


500


determines whether the user has requested a driver suspend or resume. If the user has requested driver suspend, the configuration manager


500


calls the DriverControl( ) entry point with the operation code ‘5’ (shutdown) requesting a temporary shutdown. The MSM


504


does not remove the adapter driver


308


from the memory, but leaves it in place and preserves its current state. The HSM


508


receives this call and shuts down all communication to the adapter. Otherwise, if the user has requested a driver resume, the configuration manager


500


calls DriverControl( ) entry point with the operation code ‘6’ (reset) state


928


. The HSM


508


receives this call and resets the adapter


310


. For both suspend and restart, the driver then proceeds to state


930


which returns a success message to the SNMP agent or NetWare user interface.





FIGS. 10A

,


10


B and


10


C illustrate the process by which the filter CDM


513


(

FIG. 5

) and the configuration manager


500


freeze and resume the I/O to mass storage adapters such as the adapter


102


.

FIG. 10A

illustrates the initialization routine for the Filter CDM


513


.





FIG. 10A

describes the Filter CDM


513


initialization process. Starting in state


1000


, the NetWare Operating System starts the execution of Filter CDM


513


. The Filter CDM


513


obtains the physical PCI location of each adapter (state


1002


). The Filter CDM obtains this information by making a Novell NetWare Operating System call named HAM_Return_Bus_Info( ). At state


1004


, the Filter CDM


513


registers the mass storage adapter


102


with the configuration manager


500


. The Filter CDM


513


also registers to receive “Adapter Attention” events, to get notification from the NetWare Operating System when an adapter


310


fails. Finally, in state


1006


, the Filter CDM


513


waits for requests to suspend and restart the I/O from the configuration manager


500


.





FIG. 10B

illustrates the process by which the configuration manager


500


and the Filter CDM


513


, shown in

FIG. 5

, suspend the I/O to a mass storage adapter. At state


900


(FIG.


9


A), the configuration manager


500


has determined that the current suspend or restart request applies to a mass storage adapter, and proceeds to state


904


. If the request is a suspend request, the configuration manager


500


proceeds to state


1008


(FIG.


10


B). If the request is a restart, the configuration manager


500


proceeds to state


1030


(FIG.


10


C).




The configuration manager


500


receives the request and generates a packet to suspend I/O (state


1010


). The suspended I/O packet contains instructions to the Filter CDM


513


to freeze a particular mass storage adapter. The Filter CDM


513


receives the packet from the configuration manager


500


(state


1012


). The Filter CDM


513


then makes a NetWare Operating System call to the NPA_Config( ) routine. The NPA_Config( ) routine halts all communication to a specified mass storage adapter


108


at the NWPA


510


.




The NPA_Config( ) routine also determines if all pending requests have been processed or not. At state


1014


, the Filter CDM


513


starts a counter. The Filter CDM


513


uses this counter to ascertain whether the mass storage adapter


102


is malfunctioning as will be explained below. The Filter CDM


513


queries the NPA_Config( ) routine to find the number of outstanding I/O requests to a specified mass storage adapter (decision state


1018


). If the Filter CDM


513


finds that the number of pending I/O requests to a particular mass storage adapter is zero, the Filter CDM


513


proceeds to notify the HAM


512


that the adapter is about to be powered down by the call HAM_Suspension_Notification( ) (state


1020


). If the number of requests pending on an adapter is not zero, the Filter CDM


513


checks to see if the counter is down to zero (decision state


1022


). If the counter is not zero, the Filter CDM


513


decrements the counter (state


1024


). The Filter CDM


513


repeats the process of reading the outstanding I/O (state


1016


) until there are zero I/Os pending on the mass storage adapter or the counter reaches zero (state


1026


). If the counter reaches zero, the Filter CDM


513


assumes that the mass storage adapter is malfunctioning (state


1026


). The Filter CDM


513


proceeds to shut down the mass storage adapter, losing the pending I/Os (state


1020


). After the Filter CDM


513


shuts down the adapter, the Filter CDM


513


relays the status of the I/O suspension to the configuration manager


500


(state


1028


).




Referring to

FIG. 10C

, states


1030


to


1036


describe the process by which the communication between the mass storage adapter and an adapter driver is restarted. At state


1030


, a request is made to restart the I/O. Next, the configuration manager


500


generates a restart I/O packet (state


1032


). The configuration manager


500


sends this packet to the Filter CDM


513


. The Filter CDM


513


receives this I/O packet to restart the communication between the mass storage adapter and the adapter driver (state


1034


). The Filter CDM


513


makes a call to NPA_Config( ) to restart the communication between the mass storage adapter and the adapter driver. After the resumption of communication to the mass storage adapter


102


, the Filter CDM


513


returns completion status to the configuration manager


500


(state


1036


).




Adapter Hot Plug Under the Windows NT Operating System





FIG. 11

is a block diagram illustrating various components of one embodiment of the hot plug adapter invention as implemented under the Windows NT Operating System (WinNT). A configuration manager


1100


controls the process of hot adding and swapping an adapter. An administrative agent


1103


initiates requests to the configuration manager


1100


and the network of microcontrollers


225


to oversee the process of hot add and swap of an adapter. The administrative agent


1103


initiates requests to the configuration manager


1100


to suspend and restart the communications of an adapter


310


. The administrative agent


1103


initiates requests to the microcontroller network device driver


1102


to turn on and off the power to the slots


241


and


266


(FIGS.


2


and


3


). The network of microcontrollers


225


is one way of implementing the hot plug hardware


312


(FIG.


4


).




The configuration manager


1100


controls the communication between each adapter and adapter driver by calling the SCSI port


1104


and NDIS


1105


. SCSI port and NDIS are interfaces which are exported by the Windows NT Operating system. These interfaces are designed to interact with a miniport


1106


which is an instance of an adapter driver


308


. In Windows NT, each adapter will have its own miniport.




As previously mentioned,

FIGS. 6

,


7


and


8


illustrate a generic process by which alternative embodiments of the present invention may perform the hot add and swap of adapters.

FIGS. 6

,


7


and


8


describe not only the hot add and swap process under the NetWare Operating System, but they also describe the hot add and swap process under Windows NT Operating System (WinNT).

FIGS. 12 through 17

focus on the process by which the hot add and swap process shown in

FIGS. 6

,


7


, and


8


may be implemented using the WinNT.





FIG. 12

is a flowchart showing one embodiment of the process by which WinNT loads each adapter driver at system boot time. WinNT maintains an ordered list of adapter drivers that are registered with the operating system. This list determines the order in which each adapter gets initialized by WinNT. In one embodiment of the invention the configuration manager


1100


is registered to load first at state


1200


. Installation software has modified the list of adapter drivers to load the configuration manager


1100


first, so that the other adapter drivers can register with the configuration manager


1100


during their initialization. Moving to state


1202


, WinNT proceeds to load the mass storage driver. Traditionally, the adapter driver for one or more the mass storage adapters is the first adapter driver loaded by WinNT, so that other drivers have access to a mass storage medium. WinNT then loads the remainder of the drivers (state


1204


).





FIG. 13

is a block diagram illustrating one embodiment of the method by which an adapter driver registers with the configuration manager


1100


during its initialization. Starting at state


1300


, WinNT performs the standard adapter driver initialization by calling the DeviceEntry( ) function for each adapter driver. At state


1302


, the adapter driver's DeviceEntry( ) opens a configuration manager device object. The configuration manager


1100


device object is a “handle” by which software, such as the adapter driver


1106


, can communicate with the configuration manager


1100


. The adapter driver


1106


sends a request to the configuration manager


1100


to register the adapter driver


1106


with the configuration manager


1100


(state


1304


). The adapter driver


1106


communicates with the configuration manager


1100


by a predefined dispatch routine. The method of creating a Windows NT dispatch routine is described in the “Windows NT Device Driver Book”, by Art Baker, at pages 163 to 179 which are hereby incorporated by reference.




At state


1306


, the adapter driver such as driver


308


sets an asynchronous I/O Request Packet (IRP) for rescanning. The I/O Request Packet is a data structure defined by the Windows NT Operating System. The adapter driver


308


allocates and registers an IRP with the Windows NT operating system. The rescan IRP contains a pointer to completion routine within the adapter driver


308


. The adapter driver


308


sets the completion routine to a procedure which scans for and initializes an adapter


310


. During a hot add of an adapter, the initialization routine is called by the configuration manager


1100


to configure the adapter state. Still at state


1306


, the adapter driver


308


calls to the SCSI port


1104


to finish the adapter's initialization Next, the SCSI port


1104


searches the bus for an adapter


310


(decision state


1308


). If the SCSI port


1104


finds an adapter


310


, the SCSI port


1104


calls each driver's FindAdapter( ) routine (state


1312


). In addition to performing the traditional functions of the FindAdapter( ) routine, FindAdapter( ) registers each found adapter


310


with the configuration manager


1100


. The configuration manager


1100


then retrieves the configuration information of the adapter


310


. The configuration manager


1100


saves the configuration information for each adapter


310


in a linked list of data. The configuration manager


1100


maintains this linked list of data in case an adapter


310


fails. Upon the failure of an adapter


310


, the configuration manager


1100


reprograms a replacement adapter's configuration space.




After finding an adapter


310


on the bus, the SCSI port


1104


returns to search for additional adapters


310


(decision state


1308


). Once the SCSI port


1104


configures all of the adapters


310


, the SCSI port


1104


ends (state


1310


).





FIG. 14

is a flowchart illustrating the process by which one embodiment of the configuration manager


1100


handles a request to configure a hotly added adapter


310


.

FIG. 14

is a more detailed description of state


604


shown in FIG.


6


and the state


714


shown in FIG.


7


.




Starting at state


1400


, the configuration manager


1100


reads the vendor and adapter ID of the adapter


310


that has been hotly added. The vendor and adapter ID are typically maintained in Read Only Memory (ROM) on an adapter


310


.




Moving to state


1402


, the configuration manager


1100


makes an internal check to see if an adapter driver


308


had previously registered with the configuration manager


1100


. If no adapter driver


308


registered for this adapter


310


, the configuration manager


1100


returns an error (state


1404


). Otherwise, if there is a driver registered for the adapter


310


, the configuration manager, programs the bus, system and operating system adapter information (state


1406


).




In one embodiment of the invention, the configuration information is calculated on an ad-hoc basis. In another implementation of the invention, the configuration information is maintained in a template. The template is based upon the configuration information of an adapter of the same type located on a reference system. The reference system is another fault tolerant computer system. After following the traditional initialization process of an adapter, a snapshot is taken of the configuration space for each adapter of the PC buses


241


and


256


(FIGS.


2


and


3


). The snapshot of the configuration space for each adapter is used to build a template which is incorporated into the configuration manager


1100


.




Once the configuration space of the adapter


310


is initialized, the configuration manager


1100


completes the adapter initialization (state


1408


). Although the configuration space of the adapter


310


is finished, the adapter driver


308


completes the initialization process by configuring any adapter specific requirements. For example, SCSI adapters often contain a microcontroller for controlling an SCSI bus. The adapter driver


308


initializes this microcontroller (state


1408


). The process by which the configuration manager


1100


returns control to the adapter driver


308


is by calling the completion routine of the rescan IRP that the adapter driver


308


created during the adapter driver's initialization.





FIG. 15

is a flowchart illustrating one embodiment of the process by which the adapter driver such as the driver


308


finishes initializing a hotly added adapter such as the adapter


310


. The configuration manager


1100


calls the adapter driver through the rescan completion routine that the adapter driver


308


created during its initialization (state


1508


). The adapter driver


308


then calls the SCSI port's initialize routine, SCSIportInitalize( ). The SCSI port locates the new adapter


310


(state


1502


). The SCSI port


1104


calls the FindAdapter( ) routine for each adapter driver


308


in the


1106


(state


1504


). The adapter driver


308


then creates a new asynchronous rescan IRP for the next occurrence of a hot add of an adapter (state


1506


).





FIG. 16

is a flowchart showing one embodiment of the process by which the FindAdapter( ) routine for an adapter handles a hot add request.

FIG. 16

provides a more detailed explanation of the state


1504


shown in FIG.


15


. Starting in state


1600


, the FindAdapter( ) routine performs the traditional initialization functions that are associated with the routine. For example, in a Qlogic PCI SCSI adapter the FindAdapter( ) routine reads the configuration information, maps the I/O registers for the adapter, resets the microcontroller on the adapter, checks the SCSI ID, and initializes the virtual and physical queue addresses.




Moving to state


1602


, the FindAdapter( ) routine performs some optional adapter diagnostics. If the adapter


310


performs the diagnostics and the adapter


310


finds an error, the FindAdapter( ) routine proceeds to state


1604


. Otherwise, if no error was found, the FindAdapter( ) routine sends an IRP to the configuration manager


1100


creating a Device Instance for the newly hot added card (


1606


). The configuration manager


1100


sends an asynchronous device state IRP (state


1608


). The configuration manager


1100


calls the completion routine of the device state IRP when the user has requested a hot swap.





FIG. 17

is a flowchart illustrating one embodiment of the process by which the configuration manager


1100


suspends and restarts the state of an adapter


310


under WinNT. Starting at state


1700


, a user, through an administrative agent


1103


, requests to suspend or restart communications to a specified adapter


310


. Moving to state


1702


, the configuration manager


1100


records the new state of the adapter


310


. The configuration manager


1100


then finds and calls the device state IRP's completion routine of the adapter


310


. The configuration manager


1100


finds the correct completion routine by examining each of the device state IRPs posted by the adapter drivers


308


.




The completion routine then determines whether the user has requested to suspend or resume an adapter


310


state (decision state


1704


). If a user requests to restart an adapter


310


, the completion routine calls the adapter driver's reinitialize routine (state


1706


). Otherwise, if the user requests to suspend an adapter


310


, the completion routine calls the driver's suspend routine (state


1708


). After an adapter's re-initialization (state


1706


) or suspension (state


1708


), the adapter driver


308


creates another device state IRP (


1710


). The configuration manager


1100


uses the completion routine of this IRP to call the adapter driver


308


to change the state of the adapter


310


at a later point in time for future hot swaps. The configuration manager


1100


then notifies the user of the result of the user's request to suspend or resume an adapter


310


(state


1712


).




While the above detailed description has shown, described, and pointed out the fundamental novel features of the invention as applied to various embodiments, it will be understood that various omissions and substitutions and changes in the form and details of the system illustrated can be made by those skilled in the art, without departing from the intent of the invention.




APPENDIX A




Incorporation by Reference of Commonly Owned Applications




The following patent applications, commonly owned and filed Oct. 1, 1997, are hereby incorporated herein in their entirety by reference thereto:


















application




Attorney Docket






Title




Ser. No.




No.











“System Architecture for Remote




08/942,160




MNFRAME.002A1






Access and Control of






Environmental Management”






“Method of Remote Access and




08/942,215




MNFRAME.002A2






Control of Environmental






Management”






“System for Independent Powering




08/942,410




MNFRAME.002A3






of Diagnostic Processes on a






Computer System”






“Method of Independent Powering




08/942,320




MNFRAME.002A4






of Diagnostic Processes on






a Computer System”






“Diagnostic and Managing




08/942,402




MNFRAME.005A1






Distributed Processor System”






“Method for Managing a




08/942,448




MNFRAME.005A2






Distributed Processor System”






“System for Mapping Environmen-




08/942,222




MNFRAME.005A3






tal Resources to Memory for






Program Access”






“Method for Mapping




08/942,214




MNFRAME.005A4






Environmental Resources to






Memory for Program Access”






“Hot Add of Devices Software




08/942,309




MNFRAME.006A1






Architecture”






“Method for The Hot Add of




08/942,306




MNFRAME.006A2






Devices”






“Hot Swap of Devices Software




08/942,311




MNFRAME.006A3






Architecture”






“Method for The Hot Swap of




08/942,457




MNFRAME.006A4






Devices”






“Method for the Hot Add of a




08/943,072




MNFRAME.006A5






Network Adapter on a System






Including a Dynamically Loaded






Adapter Driver”






“Method for the Hot Add of a




08/942,069




MNFRAME.006A6






Mass Storage Adapter on a System






Including a Statically Loaded






Adapter Driver”






“Method for the Hot Add of a




08/962,963




MNFRAME.006A8






Mass Storage Adapter on a System






Including a Dynamically Loaded






Adapter Driver”






“Method for the Hot Swap of a




08/943,078




MNFRAME.006A9






Network Adapter on a System






Including a Dynamically Loaded






Adapter Driver”






“Method for the Hot Swap of a




08/942,336




MNFRAME.006A10






Mass Storage Adapter on a System






Including a Statically Loaded






Adapter Driver”






“Method for the Hot Swap of a




08/942,459




MNFRAME.006A11






Network Adapter on a System






Including a Statically Loaded






Adapter Driver”






“Method for the Hot Swap of a




08/942,458




MNFRAME.006A12






Mass Storage Adapter on a System






Including a Dynamically Loaded






Adapter Driver”






“Method of Performing an




08/942,463




MNFRAME.008A






Extensive Diagnostic Test in






Conjunction with a BIOS Test






Routine”






“Apparatus for Performing an




08/942,163




MNFRAME.009A






Extensive Diagnostic Test in






Conjunction with a BIOS






Test Routine”






“Configuration Management




08/941,268




MNFRAME.010A






Method for Hot Adding and Hot






Replacing Devices”






“Configuration Management




08/942,408




MNFRAME.011A






System for Hot Adding and Hot






Replacing Devices”






“Apparatus for Interfacing Buses”




08/942,382




MNFRAME.012A






“Method for Interfacing Buses”




08/942,413




MNFRAME.013A






“Computer Fan Speed Control




08/942,447




MNFRAME.016A






Device”






“Computer Fan Speed Control




08/942,216




MNFRAME.017A






Method”






“System for Powering Up and




08/943,076




MNFRAME.018A






Powering Down a Server”






“Method of Powering Up and




08/943,077




MNFRAME.019A






Powering Down a Server”






“System for Resetting a Server”




08/942,333




MNFRAME.020A






“Method of Resetting a Server”




08/942,405




MNFRAME.021A






“System for Displaying Flight




08/942,070




MNFRAME.022A






Recorder”






“Method of Displaying Flight




08/942,068




MNFRAME.023A






Recorder”






“Synchronous Communication




08/943,355




MNFRAME.024A






Interface”






“Synchronous Communication




08/942,004




MNFRAME.025A






Emulation”






“Software System Facilitating the




08/942,317




MNFRAME.026A






Replacement or Insertion of






Devices in a Computer System”






“Method for Facilitating the




08/942,316




MNFRAME.027A






Replacement or Insertion of






Devices in a Computer System”






“System Management Graphical




08/943,357




MNFRAME.028A






User Interface”






“Display of System Information”




08/942,195




MNFRAME.029A






“Data Management System




08/942,129




MNFRAME.030A






Supporting Hot Plug Operations






on a Computer”






“Data Management Method




08/942,124




MNFRAME.031A






Supporting Hot Plug Operations






on a Computer”






“Alert Configurator and Manager”




08/942,005




MNFRAME.032A






“Managing Computer System




08/943,356




MNFRAME.033A






Alerts”






“Computer Fan Speed Control




08/940,301




MNFRAME.034A






System”






“Computer Fan Speed Control




08/941,267




MNFRAME.035A






System Method”






“Black Box Recorder for




08/942,381




MNFRAME.036A






Information System Events”






“Method of Recording Information




08/942,164




MNFRAME.037A






System Events”






“Method for Automatically Report-




08/942,168




MNFRAME.040A






ing a System Failure in a Server”






“System for Automatically Report-




08/942,384




MNFRAME.041A






ing a System Failure in a Server”






“Expansion of PCI Bus Loading




08/942,404




MNFRAME.042A






Capacity”






“Method for Expanding PCI Bus




08/942,223




MNFRAME.043A






Loading Capacity”






“System for Displaying System




08/942,347




MNFRAME.044A






Status”






“Method of Displaying System




08/942,071




MNFRAME.045A






Status”






“Fault Tolerant Computer System”




08/942,194




MNFRAME.046A






“Method for Hot Swapping of




08/943,044




MNFRAME.047A






Network Components”






“A Method for Communicating a




08/942,221




MNFRAME.048A






Software Generated Pulse






Waveform Between Two Servers






in a Network”






“A System for Communicating a




08/942,409




MNFRAME.049A






Software Generated Pulse






Waveform Between Two Servers






in a Network”






“Method for Clustering Software




08/942,318




MNFRAME.050A






Applications”






“System for Clustering Software




08/942,411




MNFRAME.051A






Applications”






“Method for Automatically




08/942,319




MNFRAME.052A






Configuring a Server after Hot






Add of a Device”






“System for Automatically




08/942,331




MNFRAME.053A






Configuring a Server after Hot Add






of a Device”






“Method of Automatically




08/942,412




MNFRAME.054A






Configuring and Formatting a






Computer System and Installing






Software”






“System for Automatically




08/941,955




MNFRAME.055A






Configuring and Formatting a






Computer System and Installing






Software”






“Determining Slot Numbers in a




08/942,462




MNFRAME.056A






Computer”






“System for Detecting Errors in a




08/942,169




MNFRAME.058A






Network”






“Method of Detecting Errors in a




08/940,302




MNFRAME.059A






Network”






“System for Detecting Network




08/942,407




MNFRAME.060A






Errors”






“Method of Detecting Network




08/942,573




MNFRAME.061A






Errors”













Claims
  • 1. A method of hot adding a network adapter to an operational computer including a plurality of bus slots, comprising:executing a statically loaded adapter driver which accepts a request packet to initialize a network adapter; adding a programmable network adapter, which is connected to a plurality of I/O devices, to one of the bus slots; executing a configuration manager which configures the configuration space of the programmable network adapter; and initializing the programmable network adapter so that I/O is communicated between the added programmable network adapter and the operational computer.
  • 2. The method of claim 1, wherein initializing the programmable network adapter includes reading a vendor identification and an adapter identification from a memory in the programmable network adapter so as to determine the type of the programmable network adapter, and identifying a statically loaded adapter driver associated with the programmable network adapter.
  • 3. The method of claim 1, wherein initializing the programmable network adapter includes checking for the presence of a statically loaded adapter driver associated with the programmable network adapter.
  • 4. The method of claim 1, wherein initializing the programmable network adapter includes reading a template containing configuration information associated with the programmable network adapter.
  • 5. The method of claim 1, wherein the programmable network adapter is adapted to communicate with a Peripheral Component Interconnect (PCI) bus.
  • 6. The method of claim 1, additionally comprising creating a device instance object associated with the programmable network adapter, wherein executing the configuration manager includes using the device instance object to communicate with the programmable network adapter.
  • 7. The method of claim 1, wherein executing the configuration manager includes storing the configuration information of the programmable network adapter in a linked list.
  • 8. A method of hot adding a network adapter to an operational computer including a plurality of bus slots, comprising:executing a statically loaded adapter driver which accepts a request packet to initialize a new network adapter; adding a network adapter to one of the bus slots having a non-powered state; executing a configuration manager which configures the adapter space of the network adapter; enabling power to the bus slot; and initiating communications between the computer and the new network adapter.
  • 9. The method of claim 8, wherein initiating communications includes reading a vendor identification and an adapter identification from a memory in the network adapter so as to determine the type of the programmable network adapter, and identifying a statically loaded adapter driver associated with the programmable network adapter.
  • 10. The method of claim 8, wherein initiating communications includes checking for the presence of a statically loaded adapter driver associated with the network adapter.
  • 11. The method of claim 8, wherein initiating communications includes reading a template containing information associated with the network adapter.
  • 12. The method of claim 8, wherein the programmable network adapter is adapted to communicate with a Peripheral Component Interconnect (PCI) bus.
  • 13. The method of claim 8, additionally comprising creating a device instance object associated with the network adapter, wherein executing the configuration manager includes using the device instance object to communicate with the network adapter.
  • 14. A method of hot adding a network adapter to an operational computer including at least one canister, wherein the at least one canister contains one or more existing network adapters, comprising:executing a statically loaded network adapter driver which accepts a suspend and a restart packet; suspending all communication to the existing network adapters on a selected one of the canisters; disabling power to the selected canister, while still maintaining power to the computer; adding a new network adapter to the selected canister; enabling power to the selected canister; restarting communications to the existing network adapters; and initiating communications between the computer and the new network adapter.
  • 15. The method of claim 14, wherein executing the configuration manager includes storing the configuration information of the new adapter in a linked list.
  • 16. The method of claim 14, wherein initiating communications includes checking for the presence of a statically loaded network adapter driver associated with the new network adapter.
  • 17. The method of claim 14, wherein initiating communications includes reading a template containing configuration information associated with new network adapter.
  • 18. The method of claim 14, wherein the new network adapter is adapted to communicate with a Peripheral Component Interconnect (PCI) bus.
  • 19. The method of claim 14, additionally comprising creating a device instance object associated with the new network adapter, wherein executing the configuration manager includes using the device instance object to communicate with the new network adapter.
  • 20. The method of claim 14, wherein executing the configuration manager includes storing the configuration information of the new network adapter in a linked list.
RELATED APPLICATIONS

This application is related to U.S. application Ser. No. 08/942,309, entitled “HOT ADD OF DEVICES SOFTWARE ARCHITECTURE”, U.S. application Ser. No. 08/942,306, entitled “METHOD FOR THE HOT ADD OF DEVICES”, U.S. application Ser. No. 08/942,311, entitled “HOT SWAP OF DEVICES SOFTWARE ARCHITECTURE”, U.S. application Ser. No. 08/942,457, entitled “METHOD FOR THE HOT SWAP OF DEVICES”, U.S. application Ser. No. 08/943,072, U.S. Pat. No. 5,892,298, entitled “METHOD FOR THE HOT ADD OF A NETWORK ADAPTER ON A SYSTEM INCLUDING A DYNAMICALLY LOADED ADAPTER DRIVER”, U.S. application Ser. No. 08/942,069, entitled “METHOD FOR THE HOT ADD OF A MASS STORAGE ADAPTER ON A SYSTEM INCLUDING A STATICALLY LOADED ADAPTER DRIVER”, U.S. application Ser. No. 08/962,963, entitled “METHOD FOR THE HOT ADD OF A MASS STORAGE ADAPTER ON A SYSTEM INCLUDING A DYNAMICALLY LOADED ADAPTER DRIVER”, U.S. application Ser. No. 08/943,078, U.S. Pat. No. 5,889,965, entitled “METHOD FOR THE HOT SWAP OF A NETWORK ADAPTER ON A SYSTEM INCLUDING A DYNAMICALLY LOADED ADAPTER DRIVER”, U.S. application Ser. No. 08/942,336, entitled “METHOD FOR THE HOT SWAP OF A MASS STORAGE ADAPTER ON A SYSTEM INCLUDING A STATICALLY LOADED ADAPTER DRIVER”, U.S. application Ser. No. 08/942,459, entitled “METHOD FOR THE HOT SWAP OF A NETWORK ADAPTER ON A SYSTEM INCLUDING A STATICALLY LOADED ADAPTER DRIVER”, U.S. application Ser. No. 08/942,458, entitled “METHOD FOR THE HOT SWAP OF A MASS STORAGE ADAPTER ON A SYSTEM INCLUDING A DYNAMICALLY LOADED ADAPTER DRIVER”, U.S. application Ser. No. 08/942,282, entitled “Apparatus For Computer Implemented Hot-Swap And Hot-Add,” and U.S. application Ser. No. 08/941,970, entitled “Method For Computer Implemented Hot-Swap And Hot-Add”, which are being filed concurrently herewith on Oct. 1, 1997.

US Referenced Citations (289)
Number Name Date Kind
4057847 Lowell et al. Nov 1977
4100597 Fleming et al. Jul 1978
4449182 Rubinson et al. May 1984
4672535 Katzman et al. Jun 1987
4692918 Elliott et al. Sep 1987
4695946 Andreasen et al. Sep 1987
4707803 Anthony, Jr. et al. Nov 1987
4769764 Levanon Sep 1988
4774502 Kimura Sep 1988
4821180 Gerety et al. Apr 1989
4835737 Herrig et al. May 1989
4894792 Mitchell et al. Jan 1990
4949245 Martin et al. Aug 1990
4968977 Chinnaswamy et al. Nov 1990
4999787 McNally et al. Mar 1991
5006961 Monico Apr 1991
5007431 Donehoo, III Apr 1991
5033048 Pierce et al. Jul 1991
5051720 Kittirutsunetorn Sep 1991
5073932 Yossifor et al. Dec 1991
5103391 Barrett Apr 1992
5118970 Olson et al. Jun 1992
5121500 Arlington et al. Jun 1992
5123017 Simpkins et al. Jun 1992
5136708 Lapourtre et al. Aug 1992
5136715 Hirose et al. Aug 1992
5138619 Fasang et al. Aug 1992
5157663 Major et al. Oct 1992
5210855 Bartol May 1993
5245615 Treu Sep 1993
5247683 Holmes et al. Sep 1993
5253348 Scalise Oct 1993
5261094 Everson et al. Nov 1993
5265098 Mattson et al. Nov 1993
5266838 Gerner Nov 1993
5269011 Yanai et al. Dec 1993
5272382 Heald et al. Dec 1993
5272584 Austruy et al. Dec 1993
5276863 Heider Jan 1994
5277615 Hastings et al. Jan 1994
5280621 Barnes et al. Jan 1994
5283905 Saadeh et al. Feb 1994
5307354 Cramer et al. Apr 1994
5311397 Harshberger et al. May 1994
5311451 Barrett May 1994
5317693 Cuenod et al. May 1994
5329625 Kannan et al. Jul 1994
5337413 Lui et al. Aug 1994
5351276 Doll, Jr. et al. Sep 1994
5367670 Ward et al. Nov 1994
5379184 Barraza et al. Jan 1995
5379409 Ishikawa Jan 1995
5386567 Lien et al. Jan 1995
5388267 Chan et al. Feb 1995
5402431 Saadeh et al. Mar 1995
5404494 Garney Apr 1995
5423025 Goldman et al. Jun 1995
5426740 Bennett Jun 1995
5430717 Fowler et al. Jul 1995
5430845 Rimmer et al. Jul 1995
5432715 Shigematsu et al. Jul 1995
5432946 Allard et al. Jul 1995
5438678 Smith Aug 1995
5440748 Sekine et al. Aug 1995
5448723 Rowett Sep 1995
5455933 Schieve et al. Oct 1995
5460441 Hastings et al. Oct 1995
5463766 Schieve et al. Oct 1995
5471634 Giorgio et al. Nov 1995
5473499 Weir Dec 1995
5483419 Kaczeus, Sr. et al. Jan 1996
5485550 Dalton Jan 1996
5485607 Lomet et al. Jan 1996
5487148 Komori et al. Jan 1996
5491791 Glowny et al. Feb 1996
5493574 McKinley Feb 1996
5493666 Fitch Feb 1996
5513314 Kandasamy et al. Apr 1996
5513339 Agrawal et al. Apr 1996
5517646 Piccirillo et al. May 1996
5519851 Bender et al. May 1996
5526289 Dinh et al. Jun 1996
5528409 Cucci et al. Jun 1996
5530810 Bowman Jun 1996
5533193 Roscoe Jul 1996
5535326 Baskey et al. Jul 1996
5542055 Amini et al. Jul 1996
5546272 Moss et al. Aug 1996
5548712 Larson et al. Aug 1996
5555510 Verseput et al. Sep 1996
5559764 Chen et al. Sep 1996
5559958 Farrand et al. Sep 1996
5559965 Oztaskin et al. Sep 1996
5560022 Dunstan et al. Sep 1996
5564024 Pemberton Oct 1996
5566299 Billings et al. Oct 1996
5566339 Perholtz et al. Oct 1996
5568610 Brown Oct 1996
5568619 Blackledge et al. Oct 1996
5572403 Mills Nov 1996
5577205 Hwang et al. Nov 1996
5579487 Meyerson et al. Nov 1996
5579491 Jeffries et al. Nov 1996
5579528 Register Nov 1996
5581712 Herrman Dec 1996
5581714 Amini et al. Dec 1996
5584030 Husak et al. Dec 1996
5586250 Carbonneau et al. Dec 1996
5588121 Reddin et al. Dec 1996
5588144 Inoue et al. Dec 1996
5592611 Midgely et al. Jan 1997
5596711 Burckhartt et al. Jan 1997
5598407 Bud et al. Jan 1997
5602758 Lincoln et al. Feb 1997
5604873 Fite et al. Feb 1997
5606672 Wade Feb 1997
5608876 Cohen et al. Mar 1997
5615207 Gephardt et al. Mar 1997
5621159 Brown et al. Apr 1997
5622221 Genga, Jr. et al. Apr 1997
5625238 Ady et al. Apr 1997
5627962 Goodrum et al. May 1997
5628028 Michelson May 1997
5630076 Saulpaugh et al. May 1997
5631847 Kikinis May 1997
5632021 Jennings et al. May 1997
5636341 Matsushita et al. Jun 1997
5638289 Yamada et al. Jun 1997
5644470 Benedict et al. Jul 1997
5644731 Liencres et al. Jul 1997
5651006 Fujino et al. Jul 1997
5652832 Kane et al. Jul 1997
5652839 Giorgio et al. Jul 1997
5652892 Ugajin Jul 1997
5652908 Douglas et al. Jul 1997
5655081 Bonnell et al. Aug 1997
5655083 Bagley Aug 1997
5655148 Richman Aug 1997
5659682 Devarakonda et al. Aug 1997
5664118 Nishigaki et al. Sep 1997
5664119 Jeffries et al. Sep 1997
5666538 DeNicola Sep 1997
5668943 Attanasio et al. Sep 1997
5668992 Hammer et al. Sep 1997
5669009 Buktenica et al. Sep 1997
5671371 Kondo et al. Sep 1997
5675723 Ekrot et al. Oct 1997
5680288 Carey et al. Oct 1997
5684671 Hobbs et al. Nov 1997
5689637 Johnson et al. Nov 1997
5696895 Hemphill et al. Dec 1997
5696899 Kalwitz Dec 1997
5696949 Young Dec 1997
5696970 Sandage et al. Dec 1997
5701417 Lewis et al. Dec 1997
5704031 Mikami et al. Dec 1997
5708775 Nakamura Jan 1998
5708776 Kikinis Jan 1998
5712754 Sides et al. Jan 1998
5715456 Bennett et al. Feb 1998
5717570 Kikinis Feb 1998
5721935 DeSchepper et al. Feb 1998
5724529 Smith et al. Mar 1998
5726506 Wood Mar 1998
5727207 Gates et al. Mar 1998
5732266 Moore et al. Mar 1998
5737708 Grob et al. Apr 1998
5740378 Rehl et al. Apr 1998
5742514 Bonola Apr 1998
5742833 Dea et al. Apr 1998
5747889 Raynham et al. May 1998
5748426 Bedingfield et al. May 1998
5752164 Jones May 1998
5754797 Takahashi May 1998
5758165 Shuff May 1998
5758352 Reynolds et al. May 1998
5761033 Wilhelm Jun 1998
5761045 Olson et al. Jun 1998
5761085 Giorgio Jun 1998
5761462 Neal et al. Jun 1998
5761707 Aiken et al. Jun 1998
5764924 Hong Jun 1998
5764968 Ninomiya Jun 1998
5765008 Desai et al. Jun 1998
5765198 McCrocklin et al. Jun 1998
5767844 Stoye Jun 1998
5768541 Pan-Ratzlaff Jun 1998
5768542 Enstrom et al. Jun 1998
5771343 Hafner et al. Jun 1998
5774645 Beaujard et al. Jun 1998
5774741 Choi Jun 1998
5777897 Giorgio Jul 1998
5778197 Dunham Jul 1998
5781703 Desai et al. Jul 1998
5781716 Hemphill et al. Jul 1998
5781744 Johnson et al. Jul 1998
5781767 Inoue et al. Jul 1998
5781798 Beatty et al. Jul 1998
5784555 Stone Jul 1998
5784576 Guthrie et al. Jul 1998
5787019 Knight et al. Jul 1998
5787459 Stallmo et al. Jul 1998
5787491 Merkin et al. Jul 1998
5790775 Marks et al. Aug 1998
5790831 Lin et al. Aug 1998
5793948 Asahi et al. Aug 1998
5793987 Quackenbush et al. Aug 1998
5793992 Steele et al. Aug 1998
5794035 Golub et al. Aug 1998
5796185 Takata et al. Aug 1998
5796580 Komatsu et al. Aug 1998
5796981 Abudayyeh et al. Aug 1998
5797023 Berman et al. Aug 1998
5798828 Thomas et al. Aug 1998
5799036 Staples Aug 1998
5799196 Flannery Aug 1998
5801921 Miller Sep 1998
5802269 Poisner et al. Sep 1998
5802298 Imai et al. Sep 1998
5802305 McKaughan et al. Sep 1998
5802324 Wunderlich et al. Sep 1998
5802393 Begun et al. Sep 1998
5802552 Fandrich et al. Sep 1998
5802592 Chess et al. Sep 1998
5803357 Lakin Sep 1998
5805804 Laursen et al. Sep 1998
5805834 McKinley et al. Sep 1998
5809224 Schultz et al. Sep 1998
5809256 Najemy Sep 1998
5809287 Stupek, Jr. et al. Sep 1998
5809311 Jones Sep 1998
5809555 Hobson Sep 1998
5812748 Ohran et al. Sep 1998
5812750 Dev et al. Sep 1998
5812757 Okamoto et al. Sep 1998
5812858 Nookala et al. Sep 1998
5815117 Kolanek Sep 1998
5815647 Buckland et al. Sep 1998
5815652 Ote et al. Sep 1998
5821596 Miu et al. Oct 1998
5822547 Boesch et al. Oct 1998
5826043 Smith et al. Oct 1998
5835719 Gibson et al. Nov 1998
5835738 Blackledge, Jr. et al. Nov 1998
5838932 Alzien Nov 1998
5838935 Davis et al. Nov 1998
5841964 Yamaguchi Nov 1998
5841991 Russell Nov 1998
5845061 Miyamoto et al. Dec 1998
5845095 Reed et al. Dec 1998
5850546 Kim Dec 1998
5852720 Gready et al. Dec 1998
5852724 Glenn, II et al. Dec 1998
5857074 Johnson Jan 1999
5857102 McChesney et al. Jan 1999
5864653 Tavallaei et al. Jan 1999
5864713 Terry Jan 1999
5867730 Leyda Feb 1999
5875307 Ma et al. Feb 1999
5875308 Egan et al. Feb 1999
5875310 Buckland et al. Feb 1999
5878237 Olarig Mar 1999
5878238 Gan et al. Mar 1999
5881311 Woods Mar 1999
5884027 Garbus et al. Mar 1999
5884049 Atkinson Mar 1999
5886424 Kim Mar 1999
5889965 Wallach et al. Mar 1999
5892898 Fujii et al. Apr 1999
5892928 Wallach et al. Apr 1999
5898846 Kelly Apr 1999
5898888 Guthrie et al. Apr 1999
5905867 Giorgio May 1999
5907672 Matze et al. May 1999
5909568 Nason Jun 1999
5911779 Stallmo et al. Jun 1999
5913034 Malcolm Jun 1999
5918057 Chou et al. Jun 1999
5922060 Goodrum Jul 1999
5930358 Rao Jul 1999
5935262 Barrett et al. Aug 1999
5936960 Stewart Aug 1999
5938751 Tavallaei et al. Aug 1999
5941996 Smith et al. Aug 1999
5964855 Bass et al. Oct 1999
5983349 Kodama et al. Nov 1999
5987554 Liu et al. Nov 1999
5987627 Rawlings, III Nov 1999
6012130 Beyda et al. Jan 2000
Foreign Referenced Citations (6)
Number Date Country
0 866 403 A1 Sep 1998 EP
07 093 064 Apr 1975 JP
04 333 118 Nov 1992 JP
05 233 110 Sep 1993 JP
07 093 064 Apr 1995 JP
07 261 874 Oct 1995 JP
Non-Patent Literature Citations (34)
Entry
ftp.cdrom.com/pub/os2/diskutil/, PHDX software, phdx.zip download, Mar. 1995, “Parallel Hard Disk Xfer.”
Cmasters, Usenet post to microsoft.public.windowsnt.setup, Aug. 1997, “Re: FDISK switches.”
Hildebrand, N., Usenet post to comp.msdos.programmer, May 1995, “Re: Structure of disk partition into.”
Lewis, L., Usenet post to alt.msdos.batch, Apr. 1997, “Re: Need help with automating FDISK and FORMAT.”
Netframe, http://www.netframe-support.com/technology/datasheets/data.htm, before Mar. 1997, “Netframe ClusterSystem 9008 Data Sheet.”
Simos, M., Usenet post to comp.os.msdoc.misc, Apr. 1997, “Re: Auto FDISK and Format.”
Wood, M.H., Usenet post to comp.os.netware.misc, Aug. 1996, “Re: Workstation duplication method for WIN95.”
Gorlick, M., Conf. Proceedings: ACM/ONR Workshop on Parallel and Distributed Debugging, pp. 175-181, 1991, “The Flight Recorder: An Architectural Aid for System Monitoring.”
IBM Technical Disclosure Bulletin, 92A+62947, pp. 391-394, Oct. 1992, Method for Card Hot Plug Detection and Control.
Davis, T, Usenet post to alt.msdos.programmer, Apr. 1997, “Re: How do I create an FDISK batch file?”
Davis, T., Usenet post to alt.msdos.batch, Apr. 1997, “Re: Need help with automating FDISK and Format...”
NetFrame Systems Incorporated, Doc. No. 78-1000226-01, pp. 1-2, 5-8, 359-404, and 471-512, Apr. 1996, “NetFrame Clustered Multiprocessing Software: NW0496 DC-ROM for Novell®NetWare® 4.1 SMP, 4.1 and 3.12.”
Shanley, and Anderson, PCI System Architecture, Third Edition, Chapter 15, pp. 297-302, Copyright 1995, “Intro To Configuration Address Space.”
Shanley, and Anderson, PCI System Architecture, Third Edition, Chapter 16, pp. 303-328, Copyright 1995, “Configuration Transactions.”
Sun Microsystems Computer Company, Part No. 802-5355-10, Rev. A, May 1996, “Solstice SyMON User's Guid.”
Sun Microsystems, Part No. 802-6569-11, Release 1.0.1, Nov. 1996, “Remote Systems Diagnostics Installation & User Guide.”
Lyons, Computer Reseller News, Issue 721, pp. 61-62, Feb. 3, 1997, “ACC Releases Low-Cost Solution for ISPs.”
M2 Communications, M2 Presswire, 2 pages, Dec. 19, 1996, “Novell IntranetWare Supports Hot Pluggable PCI from NetFRAME.”
Rigney, PC Magazine, 14(17): 375-379, Oct. 10, 1995, “The One for the Road (Mobile-aware capabilities in Windows 95).”
Shanley, and Anderson, PCI System Architecture, Third Edition, p. 382, Copyright 1995.
Shanley and Anderson, PCI System Architecture, Third Edition, Chapters 15 & 16, pp. 297-328, CR 1995.
PCI Hot-Plug Specification, Preliminary Revision for Review Only, Revision 0.9, pp. i-vi, and 1-25, Mar. 5, 1997.
SES SCSI-3 Enclosure Services, X3T10/Project 1212-D/Rev 8a, pp. i, iii-x, 1-76, and I-1 (index), Jan. 16, 1997.
Compaq Computer Corporation, Technology Brief, pp. 1-13, Dec. 1996, “Where Do I Plug the Cable? Solving the Logical-Physical Slot Numbering Problem.”
NetFRAME Systems Incorporated, News Release, 3 pages, referring to May 9 , 1994, “NetFRAME's New High-Availibility ClusterServer Systems Avoid Scheduled as well as Unscheduled Downtime.”
NetFRAME Systems Incorporated, datasheet, 2 pages, Feb. 1996, “NF450FT Network Mainframe.”
NetFRAME Systems Incorporated, datasheet, 9 pages, Mar. 1996, “NetFRAME Cluster Server 8000.”
Herr, et al., Linear Technology Magazine, Design Features, pp. 21-23, Jun. 1997, “Hot Swapping the PCI Bus.”
“Detailed Overview of the PC Card Standard”, Standard Overview, Sep. 30, 1997, 9 pp.
Goodrum, “PCI Bus Hot Plug Specification”, PCI Sign Membership, Jun. 15, 1997, 29 pp.
Microsoft Corporation, “Supporting Removable Devices under Windows and Windows NT”, Aug. 13, 1997, 4 pp.
Compaq Computer Corporation, “Plug and Play BIOS Specification”, Version 1.0A, May 5, 1994, 56 pp.
Goble, et al., “Intelligent I/O Architecture”, I2O Sig, Jun. 1996, 22 pp.
NetFRAME Systems Inc., “NF450FT Network Mainframe”, 14 pp.
Provisional Applications (5)
Number Date Country
60/047016 May 1997 US
60/046416 May 1997 US
60/046311 May 1997 US
60/046398 May 1997 US
60/046312 May 1997 US