diff --git a/Virtualization/ch_virtual_io.xml b/Virtualization/ch_virtual_io.xml
index 3ef6cc0..d4f6370 100644
--- a/Virtualization/ch_virtual_io.xml
+++ b/Virtualization/ch_virtual_io.xml
@@ -14761,7 +14761,7 @@ hcall ( const uint64 H_FREE_VTERM, /* Break connection between server and partne
-
+
Reliable CRQ Entry Format Byte Definitions for VASI (Header=0x80)
@@ -14879,7 +14879,31 @@ hcall ( const uint64 H_FREE_VTERM, /* Break connection between server and partne
- 0x11-0x80
+ 0x11
+
+
+ VASI Add Buffer Indirect Request
+
+
+
+
+ 0x12
+
+
+ VASI Message Upload
+
+
+
+
+ 0x13
+
+
+ VASI Message Download
+
+
+
+
+ 0x14-0x80Reserved
@@ -14967,7 +14991,31 @@ hcall ( const uint64 H_FREE_VTERM, /* Break connection between server and partne
- 0x91-0xFF
+ 0x91
+
+
+ VASI Add Buffer Indirect Response
+
+
+
+
+ 0x92
+
+
+ VASI Message Upload Response
+
+
+
+
+ 0x90
+
+
+ VASI Message Download Response
+
+
+
+
+ 0x94-0xFFReserved
@@ -15187,7 +15235,42 @@ able 252‚ “VASI Reliable CRQ Response Status Values‚” on page 721.
- 0x15-0xFF
+ 0x15
+
+
+ Invalid Indirect Buffer Descriptor: Either the IOBA is too
+ large for the LIOBN or its logical TCE does not contain a valid
+ logical address mapping.
+
+
+
+
+ 0x16
+
+
+ Invalid Indirect Buffer Length: The indirect buffer size is
+ not large enough to contain the total number of buffers indicated.
+
+
+
+
+ 0x17
+
+
+ Invalid Control Code
+
+
+
+
+ 0x18
+
+
+ Invalid Sub-control Code
+
+
+
+
+ 0x19-0xFFReserved
@@ -15466,6 +15549,69 @@ able 252‚ “VASI Reliable CRQ Response Status Values‚” on page 721.
and VASI State requests must only be sent after successful VASI Opens and prior to a VASI Close.
+
+
+ R1--27.
+
+ For the VASI option:
+ For the VASI option: The VASI Add Buffer Indirect message must be as defined in
+ .
+
+
+
+
+ R1--28.
+
+ For the VASI option:
+ The platform must process the VASI Add Buffer Indirect Request message
+ per the semantics described in
+ .
+
+
+
+
+ R1--29.
+
+ For the VASI option:
+ The VASI Message Upload message must be as defined in
+ .
+
+
+
+
+ R1--30.
+
+ For the VASI option:
+ The platform must process the VASI Message Upload Request message
+ per the semantics described in
+ .
+
+
+
+
+ R1--31.
+
+ For the VASI option:
+ The VASI Message Download message must be as defined in
+ .
+
+
+
+
+ R1--32.
+
+ For the VASI option:
+ The platform must process the VASI Message Download Request
+ message per the semantics described in
+ .
+
+
@@ -15553,7 +15699,7 @@ able 252‚ “VASI Reliable CRQ Response Status Values‚” on page 721.
Reserved 1
- 4:1 - 13:5
+ 4:1 - 12:7Reserved for future expansion
@@ -15564,6 +15710,72 @@ able 252‚ “VASI Reliable CRQ Response Status Values‚” on page 721.
+
+
+ MSP Failover
+
+
+ 13:0
+
+
+ MSP failover supported
+
+
+
+
+ Multiple opens
+
+
+ 13:1
+
+
+ Multiple opens per stream supported
+
+
+
+
+ Buffer Management Scheme 2
+
+
+ 13:2
+
+
+ Hypervisor's support of buffer mangement scheme version 2
+
+
+
+
+ Enhanced VASI Signal to Suspend
+
+
+ 13:3
+
+
+ VASI Signal to Suspend to be sent when the management console indicates the client is suspendable
+
+
+
+
+ Enhanced Progress CRQ
+
+
+ 13:4
+
+
+ Progress CRQ includes a correlator
+
+
+
+
+ Add Buffer Indirect Command
+
+
+ 13:5
+
+
+ Add Buffer Indirect command supported
+
+ Supported Download Forms
@@ -16320,115 +16532,641 @@ able 252‚ “VASI Reliable CRQ Response Status Values‚” on page 721.
-
-
- VASI Virtual IOA Device Tree
+
+ VASI Add Buffer Indirect
-
- Properties of the VASI Node in a Partition
-
-
-
-
-
-
-
-
- Property Name
-
-
-
-
- Required?
-
-
-
-
- Definition
-
-
-
-
-
-
-
- “name”
-
-
- Y
-
-
- IBM,VASI
-
-
-
-
- “device_type”
-
-
- Y
-
-
- IBM,VASI-1
-
-
-
-
- “model”
-
-
- NA
-
-
- Property not present.
-
-
-
-
- “compatible”
-
-
- Y
-
-
- IBM,VASI-1
-
-
-
-
- “used-by-rtas”
-
-
- N
-
-
- Property not present.
-
-
-
-
- “ibm,loc-code”
-
-
- Y
-
-
- Property name specifying the unique and
- persistent location code associated with this virtual IOA
- presented as an encoded array as with
- encode-string.
- The value shall be of the form specified in
- information on
- Virtual Card Connector Location Codes.
-
-
-
-
- “reg”
-
-
- Y
+ The VASI Add Buffer Indirect Command message, see
+
+ indicates to the hypervisor that the originator VSP device driver is
+ providing the hypervisor with multiple empty buffers for the specific BOTTOM
+ instance.
+
+ A maximum of 255 buffers can be sent in a single VASI Add Buffer Indirect
+ CRQ command, however, the platform may only be able to process a subset of
+ the buffers in a single call. The buffers do not have to be of the same size.
+ For each buffer sent, the hypervisor organizes its input buffers into N buffer
+ pools per service, by size as indicated by the buffer descriptor. The VASI
+ “ibm,#buffer-pools”
+ device tree property relates how many buffer size pools
+ the firmware implements. The first N different sizes supplied by the device
+ driver specifies the sizes of the N buffer size pools -- buffers of other
+ sizes are rejected.
+
+ The VASI Add Buffer Indirect Response message indicates to the originating
+ VASI device driver that the hypervisor has processed the associated VASI Add
+ Buffer Indirect Command message. All VASI Add Buffer Indirect CRQ messages
+ generate a VASI Add Buffer Indirect Response message to provide feedback to
+ the VASI device driver for flow control of the firmware's VASI CRQ.
+
+ The count field in the VASI Add Buffer Indirect response indicates how
+ many buffers PHYP processed successfully. Buffers are always processed in
+ order from the beginning of the indirect buffer, so any unprocessed buffers
+ are always at the end. Buffer processing stops if an error is encountered.
+ Processing of a subset of buffers per call is not considered an error and
+ the unprocessed buffers will be freed back to the pool by the VSP to be used
+ in subsequent calls.
+
+ If the Status field of the VASI Add Buffer Indirect CRQ message is
+ “Invalid Indirect Buffer Descriptor” then the last 8 bytes of the response
+ contains the Indirect Buffer Descriptor, otherwise, the last 8 bytes contain
+ the CRQ message Correlator (1st 8 Bytes of Indirect Buffer as set by VSP).
+
+ If any error is encountered in processing a VASI Add Buffer Indirect
+ command, the associated VASI stream is transitioned the to the “Aborted”
+ state by the VSP to terminate the operation and free the stream's buffer pool.
+
+ Status Values defined for the VASI Add Buffer Indirect response message:
+
+
+ Success
+
+
+
+ Hardware
+
+
+
+ Invalid BOTTOM
+
+
+
+ Invalid Indirect Buffer Descriptor
+
+
+
+ Invalid Indirect Buffer Length
+
+
+
+ Invalid Buffer Descriptor
+
+
+
+ Invalid Buffer Length
+
+
+
+
+
+ Semantics for VASI Add Buffer Indirect Request Message:
+
+
+
+ Construct VASI Add Buffer Indirect Response message prototype
+ (copy low order 14 bytes from the request message to the response prototype.
+
+
+
+ Set the Count field (Byte 3) in the response prototype to zero.
+
+
+
+ Validate the BOTTOM field, else respond “Invalid BOTTOM”.
+
+
+
+ Insert the TOP recorded for the open BOTTOM into the response
+ prototype.
+
+
+
+ Validate high order Indirect Buffer Descriptor bit is 0b1, else
+ respond with “Invalid Indirect Buffer Descriptor”
+
+
+
+ Validate that the indirect Buffer Descriptor address translates
+ through the LIOBN of the first pane of the
+ “ibm,my-dma-window”
+ property, else respond with “Invalid Indirect Buffer Descriptor”.
+
+
+
+ Copy the first 8 bytes at the translated Indirect Buffer Descriptor
+ address (Correlator) into the low order 8 bytes of the response prototype.
+
+
+
+ Validate that the Indirect Buffer Descriptor length field is at
+ least the total number of buffers indicated in the Count field in the
+ Request plus 1 (the Correlator), else respond with “Invalid Indirect Buffer Length”.
+
+
+
+ For each buffer indicated in the Indirect Buffer Descriptor:
+
+
+ Validate high order Buffer Descriptor bit is 0b1, else respond
+ with “Invalid Buffer Descriptor”
+
+
+
+ Validate that the Buffer Descriptor address translates through
+ the LIOBN of the first pane of the
+ “ibm,my-dma-window”
+ property, else respond with “Invalid Buffer Descriptor”.
+
+
+
+ If the Buffer Descriptor length field does not match the
+ buffer length of one of the buffer pools then:
+
+
+ If buffer lengths are assigned to all buffer pools,
+ then respond with “Invalid Buffer Length”
+
+
+
+ Else select an unassigned buffer pool, and assign its
+ length to match the length field of the Buffer Descriptor.
+
+
+
+
+
+
+ Enqueue the buffer descriptor onto the per service session
+ (“BOTTOM”) pool whose buffer length matches the length field of
+ the Buffer Descriptor, increment the Free Buffers in Pool count
+ for the pool.
+
+
+
+ Increment the Processed Buffers count.
+
+
+
+ Check if processing time still exists, if so continue to the
+ next buffer.
+
+
+
+
+
+
+ Copy the Processed Buffers count into the Count field (Byte 3) in
+ the response prototype.
+
+
+
+ Respond “Success”.
+
+
+
+
+
+
+
+
+
+
+ VASI Message Upload
+
+ The VASI Message Upload Command message (see
+ )
+ requests the receiving VSP to process the message. The “Control” field
+ defines how the VSP is suppose to process.
+
+ The valid message control codes are unique to the specific
+ VASI operation stream. See
+
+ for more details. The valid message sub-control codes are unique to each
+ VASI operation stream and defined control code. See
+
+ for more details. The 8 byte message data field is also operation
+ specific and unique to each control and sub-control code combination. See
+
+ for more details.
+
+ The VASI Message Upload Response message indicates to the hypervisor
+ that the VSP has processed the message.
+
+ Status Values defined for the VASI Message Upload response message:
+
+
+ Success
+
+
+
+ Invalid TOP
+
+
+
+ Invalid Control
+
+
+
+ Invalid Sub-Control
+
+
+
+
+
+ Semantics for processing the VASI Message Upload Response Message:
+
+
+
+ Validate the BOTTOM parameter for the caller; else respond
+ “Invalid BOTTOM”
+
+
+
+
+
+
+
+ VASI Message Control Codes
+
+
+
+
+
+
+
+ Value
+
+
+
+
+ Definition
+
+
+
+
+
+
+
+ 0x01
+
+
+ Hypervisor pass-through: (Migration Only)
+ This control bit tells the VSP receiving a Message Upload
+ command to pass the command control, and data to the other
+ side of the migration for transmission to the hypervisor as a
+ VASI Message Download Command. The Sub-Control and data fields
+ are opaque to the VSP and not defined here.
+
+
+
+
+ 0x02-0xFF
+
+
+ Reserved for future expansion
+ Message control codes are values not bit fields.
+
+
+
+
+
+
+ VASI Message Data
+
+
+
+
+
+
+
+
+ Control Code
+
+
+
+
+ Sub-Control Bit Values
+
+
+
+
+ Definition
+
+
+
+
+
+
+
+ 0x01
+
+
+ 0x00-0xFF
+
+
+ Hypervisor defined and outside the scope of this architecture.
+
+
+
+
+ 0x02-0xFF
+
+
+ 0x00-0xFF
+
+
+ Reserved
+
+
+
+
+
+
+
+
+
+ VASI Message Download
+
+ The VASI Message Download Command message (see
+ )
+ passes the message data to the VASI Virtual IOA of the VASI Stream,
+ associated with the BOTTOM parameter, for processing.
+
+ The “Control” and “Sub-Control” fields define how the VASI Virtual IOA
+ is suppose to process the message.
+
+ The valid message control codes are unique to the specific
+ VASI operation stream. See
+
+ for more details. The valid message sub-control codes are unique to each
+ VASI operation stream and defined control code. See
+
+ for more details. The 8 byte message data field is also operation
+ specific and unique to each control and sub-control code combination. See
+
+ for more details.
+
+ The VASI Message Download Response message indicates to the VSP that
+ the hypervisor that has processed the message.
+
+ Status Values defined for the VASI Message Download response message:
+
+
+ Success
+
+
+
+ Hardware
+
+
+
+ Invalid BOTTOM
+
+
+
+ Invalid Control
+
+
+
+ Invalid Sub-Control
+
+
+
+
+
+ Semantics for processing the VASI Message Download Response Message:
+
+
+
+ Construct VASI Signal Response message prototype (copy the low
+ order 14 bytes from the Request message to the response prototype).
+
+
+
+ Validate the BOTTOM parameter for the caller; else respond
+ “Invalid BOTTOM”
+
+
+
+ Insert the TOP recorded for the open BOTTOM into the response prototype.
+
+
+
+ Determine the VASI stream associated with the BOTTOM parameter.
+ If the “Control” or “Sub-Control” parameter is invalid for the VASI
+ operation stream represented by the BOTTOM parameter (refer to
+ , and
+ ,
+ then respond “Invalid Control Code” or “Invalid Sub-Control Code”
+ respectively.
+
+
+
+
+
+
+
+
+
+ VASI Virtual IOA Device Tree
+
+
+ Properties of the VASI Node in a Partition
+
+
+
+
+
+
+
+
+ Property Name
+
+
+
+
+ Required?
+
+
+
+
+ Definition
+
+
+
+
+
+
+
+ “name”
+
+
+ Y
+
+
+ IBM,VASI
+
+
+
+
+ “device_type”
+
+
+ Y
+
+
+ IBM,VASI-1
+
+
+
+
+ “model”
+
+
+ NA
+
+
+ Property not present.
+
+
+
+
+ “compatible”
+
+
+ Y
+
+
+ IBM,VASI-1
+
+
+
+
+ “used-by-rtas”
+
+
+ N
+
+
+ Property not present.
+
+
+
+
+ “ibm,loc-code”
+
+
+ Y
+
+
+ Property name specifying the unique and
+ persistent location code associated with this virtual IOA
+ presented as an encoded array as with
+ encode-string.
+ The value shall be of the form specified in
+ information on
+ Virtual Card Connector Location Codes.
+
+
+
+
+ “reg”
+
+
+ YStandard property name per IEEE 1275 specifying the
@@ -16898,12 +17636,32 @@ hcall ( const uint64 H_VASI_SIGNAL, /* Signal the VASI operation stream of */
N
+
+
+ Failover
+
+
+ 0x6
+
+
+ Failover operation
+
+
+ Partition Migration
+
+
+ Y
+
+
+ N
+
+ Reserved
- 0x6-0xFFFF
+ 0x7-0xFFFFReserved
@@ -17254,6 +18012,106 @@ hcall ( const uint64 H_VASI_STATE, /* Return the state of the VASI service */
+
+ Partition Migration Failover Reason Codes
+
+
+ defines the Failover reason code layout for Partition Migration for use with the H_VASI_SIGNAL hypervisor call and the VASI Signal & State CRQ requests, as defined in
+ .
+
+
+ Partition Migration Failover Reason Codes
+
+
+
+
+
+
+
+
+ Name
+
+
+
+
+ Byte:bit - Byte:bit
+
+
+
+
+ Description
+
+
+
+
+
+
+
+ Failing Entity
+
+
+ 0:0 - 0:7
+
+
+ 1=Orchestrator
+ 2=VSP providing VASI partition source migration service
+ 3=Partition Firmware
+ 4=VSP providing VASI partition target migration service
+
+
+
+
+ Failover Direction
+
+
+ 1:0-1:1
+
+
+ 0=Failover direction not indicated
+ 1=Failover to this MSP
+ 2=Failover from this MSP
+
+
+
+
+ Error Type
+
+
+ 1:2-1:2
+
+
+ 0=Fatal error
+ 1=Non-fatal error
+
+
+
+
+ Reserved
+
+
+ 1:3-1:7
+
+
+ Reserved for future expansion
+
+
+
+
+ Detailed Error
+
+
+ 2-3
+
+
+ Bytes two and three of the reason code are opaque values, architected by
+ individual aborting entities.
+
+
+
+
+
+
+
Partition Migration VASI States
@@ -17416,6 +18274,29 @@ hcall ( const uint64 H_VASI_STATE, /* Return the state of the VASI service */
Enabled to Completed on a successful inactive migration.
+
+
+ Failover
+
+
+ 7
+
+
+ This state is defined on both the source and the destination
+ platform and indicates one or more of the active MSP pairs has
+ failed and the operation will continue on the remaining MSP pairs.
+ This state indicates that a failover is in progress. The Failover
+ state is the final migration state for the MSPs that are failing,
+ for all other components failover is not the final state as the
+ migration will either continue on or abort.
+
+
+ The Failover state will never be returned by the H_VAS_STATE
+ hcall but will be delivered to the MSP via the VASI
+ State request CRQ.
+
+
+
diff --git a/Virtualization/figures/figure_format_vasi_add_buffer_indirect_crq_elem.gif b/Virtualization/figures/figure_format_vasi_add_buffer_indirect_crq_elem.gif
new file mode 100644
index 0000000..4e49566
Binary files /dev/null and b/Virtualization/figures/figure_format_vasi_add_buffer_indirect_crq_elem.gif differ
diff --git a/Virtualization/figures/figure_format_vasi_message_download_crq_elem.gif b/Virtualization/figures/figure_format_vasi_message_download_crq_elem.gif
new file mode 100644
index 0000000..8b13a0b
Binary files /dev/null and b/Virtualization/figures/figure_format_vasi_message_download_crq_elem.gif differ
diff --git a/Virtualization/figures/figure_format_vasi_message_upload_crq_elem.gif b/Virtualization/figures/figure_format_vasi_message_upload_crq_elem.gif
new file mode 100644
index 0000000..90c530e
Binary files /dev/null and b/Virtualization/figures/figure_format_vasi_message_upload_crq_elem.gif differ
diff --git a/Virtualization/figures/figure_vasi_indirect_memory_buffer_format.gif b/Virtualization/figures/figure_vasi_indirect_memory_buffer_format.gif
new file mode 100644
index 0000000..89e13fc
Binary files /dev/null and b/Virtualization/figures/figure_vasi_indirect_memory_buffer_format.gif differ