SmartIO

Note

The SISCI SmartIO API depends on the SmartIO module. Please refer to the SmartIO documentation.

The SmartIO functionality was introduced with eXpressWare 5.5.0 and is currently available with Linux and Windows, but may be ported to other operating systems in the future. SmartIO is currently supported with all Dolphins PXH and MXH NTB enabled PCIe cards and licensed to selected OEM solutions based on Broadcom or Microsemi PCIe chipsets.

The SISCI API SmartIO extension exposes features from the SmartIO module, if present. These functions are appropriate to use in order to gain low level access to devices. They can be used to write user space drivers using SISCI. The functions will work on devices anywhere in the cluster and multiple nodes can access the same device at the same time. In general, the SmartIO API will reuse ‘normal’ SISCI features where possible. For instance, device BAR registers are exposed as segments. The main SmartIO module must be configured in order for this API to function.

SmartIO devices are represented in SISCI as sci_smartio_device_thandles. This handle is initialized by borrowing the device, and released when the device is returned.

Once a device has been borrowed, it’s BARs can be accessed through a remote segment. To connect to these segments, the following function must be used. After connecting the segment is to be treated as any other remote segment.

The device may also perform DMA to both local and remote segments. This must be set up by functions that map the given segment and provide the caller with the address to be used by the device to reach the given segment.

Device interrupts can be attached to interrupts with associated handlers.

SmartIO helper functions that may be helpful