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