Many computer systems, such as enterprise servers, support critical processes that should continue to operate despite faults and sub-system failures. Such systems cannot therefore be switched off when devices require removal or replacement. Moreover, removal of a device has the potential to cause damage to the system, unless it is carefully handled. The process of safely removing a device without switching off the system is known as online deletion.
Online deletion of I/O adapters has traditionally been implemented as a single step operation where the device driver attempts to disable the components in the adapter or render them inactive, an operation that is referred to herein as quiescing the adapter. If the quiesce operation fails, the online deletion operation fails. The quiesce operation may fail because one or more components in the adapter do not support the quiesce operation, because the operation returns a ‘failed’ status, or because the return status of the quiesce operation is unknown.
If the quiesce operation fails, then one or more components of the adapter may continue to initiate direct memory access (DMA) operations. Furthermore, if clean up/deallocation of datastructures or unmapping of DMA buffers is attempted as part of the online deletion operation, and one or more components of the adapter were unsuccessfully quiesced, then a subsequent DMA by the unsuccessfully quiesced components of the adapter will result in a ‘machine check’ condition, that generally prevents further operation of the system.