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-0x80 Reserved @@ -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-0xFF Reserved @@ -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-0xFF Reserved @@ -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:7 Reserved 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”. + + + +
+ Format of the VASI Add Buffer Indirect CRQ Elements + + + + + + + + +
+ +
+ Indirect Memory Buffer Format + + + + + + + + +
+
+ + +
+ 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” + + + +
+ Format of the VASI Message Upload CRQ Elements + + + + + + + + +
+ +
+ + 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 Sub-Control Codes + + + + + + + + + Control Code + + + + + Sub-Control Values + + + + + Definition + + + + + + + + 0x01 + + + 0x00-0xFF + + + Hypervisor defined and outside the scope of this architecture. + + + + + 0x02-0xFF + + + 0x00-0xFF + + + Reserved + + + + +
+ + + + 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. + + + +
+ Format of the VASI Message Download CRQ Elements + + + + + + + + +
+
+
+ + +
+ 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” + + + Y Standard 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-0xFFFF Reserved @@ -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