High Availability Software for the Intel® NetStructureTM ZT 4901 Technical Product Specification 35
High Availability CompactPCI Device Drivers
5.1.2.3 Suspend 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 cann ot
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.4 Remove 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.5 Driver 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 inter-Host synchronization.
In this case the synchronization mechanism is an inter-Host communications channel. The inter-
driver synchronization infrastructure can be used for various synchronization strategies; among
these are data mirroring, check pointing, and device heart beating.
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 dri ver 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.