
Overview

This document describes the driver set for Unisys Secure Partitioning (s-Par®).

s-Par is firmware that provides hardware partitioning capabilities for
splitting large-scale Intel x86 servers into multiple isolated
partitions. s-Par provides a set of para-virtualized device drivers to
allow guest partitions on the same server to share devices that would
normally be unsharable; specifically, PCI network interfaces and host
bus adapters that do not support shared access via SR-IOV. The shared
device is owned and managed by a small, single-purpose service
partition, which communicates with each guest partition sharing that
device through an area of shared memory called a channel. Additional
drivers provide support interfaces for communicating with s-Par
services, logging and diagnostics, and accessing the Linux console
from the s-Par user interface.

The driver stack consists of a set of support modules, a set of bus
modules, and a set of device driver modules. The support modules
handle a number of common functions across each of the other
drivers. The bus modules provide organization for the device driver
modules, which provide the shared device functionality.

These drivers are for the Unisys virtual PCI hardware model where the
hypervisor need not intervene (other than normal interrupt handling)
in the interactions between the client drivers and the virtual adapter
firmware in the adapter service partition.

Driver Descriptions

Device Modules

The modules in this section handle shared devices and the virtual
buses required to support them. These modules use functions in and
depend on the modules described in the support modules section.

visorchipset

The visorchipset module receives device creation and destruction
events from the Command service partition of s-Par, as well as
controlling registration of shared device drivers with the s-Par
driver core. The events received are used to populate other s-Par
modules with their assigned shared devices. Visorchipset is required
for shared device drivers to function properly. Visorchipset also
stores information for handling dump disk device creation during
kdump.

In operation, the visorchipset module processes device creation and
destruction messages sent by s-Par's Command service partition through
a channel. These messages result in creation (or destruction) of each
virtual bus and virtual device. Each bus and device is also associated
with a communication channel, which is used to communicate with one or
more IO service partitions to perform device IO on behalf of the
guest.

virthba

The virthba module provides access to a shared SCSI host bus adapter
and one or more disk devices, by proxying SCSI commands between the
guest and the service partition that owns the shared SCSI adapter,
using a channel between the guest and the service partition. The disks
that appear on the shared bus are defined by the s-Par configuration
and enforced by the service partition, while the guest driver handles
sending commands and handling responses. Each disk is shared as a
whole to a guest. Sharing the bus adapter in this way provides
resiliency; should the device encounter an error, only the service
partition is rebooted, and the device is reinitialized. This allows
guests to continue running and to recover from the error.

virtnic

The virtnic module provides a paravirtualized network interface to a
guest by proxying buffer information between the guest and the service
partition that owns the shared network interface, using a channel
between the guest and the service partition. The connectivity of this
interface with the shared interface and possibly other guest
partitions is defined by the s-Par configuration and enforced by the
service partition; the guest driver handles communication and link
status.

visorserial

The visorserial module allows the console of the linux guest to be
accessed via the s-Par console serial channel. It creates devices in
/dev/visorserialclientX which behave like a serial terminal and are
connected to the diagnostics system in s-Par. By assigning a getty to
the terminal in the guest, a user could log into and access the guest
from the s-Par diagnostics SWITCH RUN terminal.

visorbus

The visorbus module handles the bus functions for most functional
drivers except visorserial, visordiag, virthba, and virtnic. It
maintains the sysfs subtree /sys/devices/visorbus*/. It is responsible
for device creation and destruction of the devices on its bus.

visorclientbus

The visorclientbus module forwards the bus functions for virthba, and
virtnic to the virtpci driver.

virtpci

The virtpci module handles the bus functions for virthba, and virtnic.

s-Par Integration Modules

The modules in this section provide integration with s-Par guest
partition services like diagnostics and remote desktop. These modules
depend on functions in the modules described in the support modules
section.

visorvideoclient

The visorvideoclient module provides functionality for video support
for the Unisys s-Par Partition Desktop application. The guest OS must
also have the UEFI GOP protocol enabled for the partition desktop to
function.  visorconinclient The visorconinclient module provides
keyboard and mouse support for the Unisys s-Par Partition Desktop
application.

sparstop

The sparstop module handles requests from the Unisys s-Par platform to
shutdown the linux guest. It allows a program on the guest to perform
clean-up functions on the guest before the guest is shut down or
rebooted using ACPI.

visordiag

This driver provides the ability for the guest to write information
into the s-Par diagnostics subsystem. It creates a set of devices
named /dev/visordiag.X which can be written to by the guest to add
text to the s-Par system log.

Support Modules

The modules described in this section provide functions and
abstractions to support the modules described in the previous
sections, to avoid having duplicated functionality.

visornoop

The visornoop module is a placeholder that responds to device
create/destroy messages that are currently not in use by linux guests.

visoruislib

The visoruislib module is a support library, used to handle requests
from virtpci.

visorchannelstub

The visorchannelstub module provides support routines for storing and
retrieving data from a channel.

visorchannel

The visorchannel module is a support library that abstracts reading
and writing a channel in memory.

visorutil

The visorutil module is a support library required by all other s-Par
driver modules. Among its features it abstracts reading, writing, and
manipulating a block of memory.

Minimum Required Driver Set

The drivers required to boot a Linux guest are visorchipset, visorbus,
visorvideoclient, visorconinclient, visoruislib, visorchannelstub,
visorchannel, and visorutil. The other drivers are required by the
product configurations that are currently being marketed.
