
High Availability CompactPCI Device Drivers
5.1.2.3Suspend Operations
The counterpart to the Resume Operation callback is the Suspend Operation. The kernel calls the Suspend Operation callback function for each device for which a Host is losing visibility. It cannot be assumed that the driver retains visibility to the backplane device during the Suspend Operation execution. The Suspend Operation should first disconnect the device’s interrupt service routine. The driver should then do whatever normalizing of internal device structures is required so that, if necessary, the driver will be in a position to inherit control of the device again.
5.1.2.4Remove Device
The Remove Device function is called when a CompactPCI backplane device is extracted from the chassis. It is in this routine that all structures that were created and/or initialized during the Add Device call are deallocated. All internal cleanup of the extracted device needs to occur with the awareness that the driver cannot assume visibility to the device. This is not a major issue since the Hot Swap event detected and ENUM remediation occurs in the Hot Swap Manager, which is transparent to the device driver.
5.1.2.5Driver Synchronization
Redundant Host aware device drivers might need to handle driver synchronization. In a Redundant Host architecture two device drivers are assigned to control a single device. Device control may be transitioned from one Host to the other at any moment so the device driver needs to be dynamic in its design.
Part of this dynamic state capability is made more manageable through
The Intel HA SDK has defined a Receive Message callback and a Send Message API routine. The kernel executes the Receive Message callback whenever a message is destined to a backplane device driver from the reciprocating driver on the opposite Host. The contexts of these synchronization messages are transparent to both the sending and receiving Hosts. The messages themselves are decoded and used internally by the receiving device drivers. There is a possibility that the message received is no longer valid for the following reasons:
•The system masters are not run in lockstep and do not access shared memory
•A delay can occur between the time a message is sent and the time the device driver is able to consume the message
To minimize this possibility of being out of sync, the drivers should limit themselves to synchronizing mostly state or database related information. For example, a device driver may want to share the usage of a specific IP address across Redundant Hosts. In this case a driver packages up the IP address and uses the Send Message API to transmit the packet to the Redundant Host. The Receiving Host decides which device driver is to receive the packet and calls the registered Receive Message callback routine. The device driver then decodes the message packet appropriately.
High Availability Software for the Intel® NetStructureTM ZT 4901 Technical Product Specification | 35 |