1 2Overview 3 4This document describes the driver set for Unisys Secure Partitioning (s-Par®). 5 6s-Par is firmware that provides hardware partitioning capabilities for 7splitting large-scale Intel x86 servers into multiple isolated 8partitions. s-Par provides a set of para-virtualized device drivers to 9allow guest partitions on the same server to share devices that would 10normally be unsharable; specifically, PCI network interfaces and host 11bus adapters that do not support shared access via SR-IOV. The shared 12device is owned and managed by a small, single-purpose service 13partition, which communicates with each guest partition sharing that 14device through an area of shared memory called a channel. Additional 15drivers provide support interfaces for communicating with s-Par 16services, logging and diagnostics, and accessing the Linux console 17from the s-Par user interface. 18 19The driver stack consists of a set of support modules, a set of bus 20modules, and a set of device driver modules. The support modules 21handle a number of common functions across each of the other 22drivers. The bus modules provide organization for the device driver 23modules, which provide the shared device functionality. 24 25These drivers are for the Unisys virtual PCI hardware model where the 26hypervisor need not intervene (other than normal interrupt handling) 27in the interactions between the client drivers and the virtual adapter 28firmware in the adapter service partition. 29 30Driver Descriptions 31 32Device Modules 33 34The modules in this section handle shared devices and the virtual 35buses required to support them. These modules use functions in and 36depend on the modules described in the support modules section. 37 38visorchipset 39 40The visorchipset module receives device creation and destruction 41events from the Command service partition of s-Par, as well as 42controlling registration of shared device drivers with the s-Par 43driver core. The events received are used to populate other s-Par 44modules with their assigned shared devices. Visorchipset is required 45for shared device drivers to function properly. Visorchipset also 46stores information for handling dump disk device creation during 47kdump. 48 49In operation, the visorchipset module processes device creation and 50destruction messages sent by s-Par's Command service partition through 51a channel. These messages result in creation (or destruction) of each 52virtual bus and virtual device. Each bus and device is also associated 53with a communication channel, which is used to communicate with one or 54more IO service partitions to perform device IO on behalf of the 55guest. 56 57virthba 58 59The virthba module provides access to a shared SCSI host bus adapter 60and one or more disk devices, by proxying SCSI commands between the 61guest and the service partition that owns the shared SCSI adapter, 62using a channel between the guest and the service partition. The disks 63that appear on the shared bus are defined by the s-Par configuration 64and enforced by the service partition, while the guest driver handles 65sending commands and handling responses. Each disk is shared as a 66whole to a guest. Sharing the bus adapter in this way provides 67resiliency; should the device encounter an error, only the service 68partition is rebooted, and the device is reinitialized. This allows 69guests to continue running and to recover from the error. 70 71virtnic 72 73The virtnic module provides a paravirtualized network interface to a 74guest by proxying buffer information between the guest and the service 75partition that owns the shared network interface, using a channel 76between the guest and the service partition. The connectivity of this 77interface with the shared interface and possibly other guest 78partitions is defined by the s-Par configuration and enforced by the 79service partition; the guest driver handles communication and link 80status. 81 82visorserial 83 84The visorserial module allows the console of the linux guest to be 85accessed via the s-Par console serial channel. It creates devices in 86/dev/visorserialclientX which behave like a serial terminal and are 87connected to the diagnostics system in s-Par. By assigning a getty to 88the terminal in the guest, a user could log into and access the guest 89from the s-Par diagnostics SWITCH RUN terminal. 90 91visorbus 92 93The visorbus module handles the bus functions for most functional 94drivers except visorserial, visordiag, virthba, and virtnic. It 95maintains the sysfs subtree /sys/devices/visorbus*/. It is responsible 96for device creation and destruction of the devices on its bus. 97 98visorclientbus 99 100The visorclientbus module forwards the bus functions for virthba, and 101virtnic to the virtpci driver. 102 103virtpci 104 105The virtpci module handles the bus functions for virthba, and virtnic. 106 107s-Par Integration Modules 108 109The modules in this section provide integration with s-Par guest 110partition services like diagnostics and remote desktop. These modules 111depend on functions in the modules described in the support modules 112section. 113 114visorvideoclient 115 116The visorvideoclient module provides functionality for video support 117for the Unisys s-Par Partition Desktop application. The guest OS must 118also have the UEFI GOP protocol enabled for the partition desktop to 119function. visorconinclient The visorconinclient module provides 120keyboard and mouse support for the Unisys s-Par Partition Desktop 121application. 122 123sparstop 124 125The sparstop module handles requests from the Unisys s-Par platform to 126shutdown the linux guest. It allows a program on the guest to perform 127clean-up functions on the guest before the guest is shut down or 128rebooted using ACPI. 129 130visordiag 131 132This driver provides the ability for the guest to write information 133into the s-Par diagnostics subsystem. It creates a set of devices 134named /dev/visordiag.X which can be written to by the guest to add 135text to the s-Par system log. 136 137Support Modules 138 139The modules described in this section provide functions and 140abstractions to support the modules described in the previous 141sections, to avoid having duplicated functionality. 142 143visornoop 144 145The visornoop module is a placeholder that responds to device 146create/destroy messages that are currently not in use by linux guests. 147 148visoruislib 149 150The visoruislib module is a support library, used to handle requests 151from virtpci. 152 153visorchannelstub 154 155The visorchannelstub module provides support routines for storing and 156retrieving data from a channel. 157 158visorchannel 159 160The visorchannel module is a support library that abstracts reading 161and writing a channel in memory. 162 163visorutil 164 165The visorutil module is a support library required by all other s-Par 166driver modules. Among its features it abstracts reading, writing, and 167manipulating a block of memory. 168 169Minimum Required Driver Set 170 171The drivers required to boot a Linux guest are visorchipset, visorbus, 172visorvideoclient, visorconinclient, visoruislib, visorchannelstub, 173visorchannel, and visorutil. The other drivers are required by the 174product configurations that are currently being marketed. 175