Virtual Host Adapter
Original Publication Date: 2009-Jul-24
Included in the Prior Art Database: 2009-Jul-24
Implementing VHA on DS8000
Virtual Host Adapter
The Power5 platform (P5P) that is used in iSeries and pSeries machines has the capability for virtualization. Virtualization is a well known term in the computer industry whereby a single machine can simultaneously run many operating systems. On the P5P, resources are assigned to a given OS, either statically or dynamically. For purposes of description, assume all resources are assigned statically. Then each OS is running in a logical partition (LPAR) where it gets some number of processors out of the SMP complex and some portion of main memory. This is all controlled by the P5P Hypervisor software and sits above the OS software.
For these LPARs to be of use, they must be capable of performing I/O. What is described here is the current means of sharing, between LPARs, I/O hardware that is capable of communicating with disk storage. Also described is how this means of sharing can be improved.
For most computers of the server class, disk storage communication is handled by an adapter that is attached to the system's I/O bus. Such adapters could be SCSI or FCA among others. Currently, the means for sharing such an adapter among LPARs consists of creating a special LPAR (labeled vioserver) that would own the adapter and be a proxy for all LPARs that wish to use the adapter. The Hypervisor software has some special features that allow this to be implemented. This happens when a virtual adapter is added to the LPAR. A virtual adapter is a software construct that appears to the system administrator much like a physical adapter. The Hypervisor software has many types of virtual adapters, the two most important being virtual LAN and virtual SCSI (VSCSI). The VSCSI adapter is the one used by an LPAR to communicate with a vioserver partition. The VSCSI adapter has three features that allow the vioserver to act as a proxy:
1. A bidirectional (15 byte) messaging mechanism between LPAR's that will allow one LPAR to interrupt another LPAR.
2. A means for the vioserver to copy data to or from other LPAR's memory.
3. A means for redirecting DMA traffic from the physical adapter in the vioserver to the other LPAR.
For the LPAR to read disk storage, a request block is prepared by the LPAR's file system. The device driver for the VSCSI device maps the area of memory that is to receive the disk data (this allows vioserver access to those regions of memory) and then sends a 15 byte message, which contains address and size of request block, to the vioserver. The vioserver copies over the request block and when it determines where disk data is to be delivered, maps the memory area for the physical adapter so that the physical adapter can directly DMA data into the other partition. The vioserver then makes any changes required to the request block so that it can be executed by the physical adapter. After the adapter has received and sent disk data, it will interrupt vioserver to inform that is has...