€•æyŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ'/translations/zh_CN/misc-devices/ibmvmc”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/zh_TW/misc-devices/ibmvmc”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/it_IT/misc-devices/ibmvmc”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ja_JP/misc-devices/ibmvmc”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ko_KR/misc-devices/ibmvmc”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/sp_SP/misc-devices/ibmvmc”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ!SPDX-License-Identifier: GPL-2.0+”h]”hŒ!SPDX-License-Identifier: GPL-2.0+”…””}”hh£sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1h¡hhhžhhŸŒA/var/lib/git/docbuild/linux/Documentation/misc-devices/ibmvmc.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ5IBM Virtual Management Channel Kernel Driver (IBMVMC)”h]”hŒ5IBM Virtual Management Channel Kernel Driver (IBMVMC)”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh¶hžhhŸh³h KubhŒ field_list”“”)”}”(hhh]”hŒfield”“”)”}”(hhh]”(hŒ field_name”“”)”}”(hŒAuthors”h]”hŒAuthors”…””}”(hhÕhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÓhhÐhŸh³h KubhŒ field_body”“”)”}”(hŒ­Dave Engebretsen , Adam Reznechek , Steven Royer , Bryant G. Ly , ”h]”hŒ paragraph”“”)”}”(hŒ¬Dave Engebretsen , Adam Reznechek , Steven Royer , Bryant G. Ly ,”h]”(hŒDave Engebretsen <”…””}”(hhëhžhhŸNh NubhŒ reference”“”)”}”(hŒengebret@us.ibm.com”h]”hŒengebret@us.ibm.com”…””}”(hhõhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:engebret@us.ibm.com”uh1hóhhëubhŒ>, Adam Reznechek <”…””}”(hhëhžhhŸNh Nubhô)”}”(hŒadreznec@linux.vnet.ibm.com”h]”hŒadreznec@linux.vnet.ibm.com”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ"mailto:adreznec@linux.vnet.ibm.com”uh1hóhhëubhŒ>, Steven Royer <”…””}”(hhëhžhhŸNh Nubhô)”}”(hŒseroyer@linux.vnet.ibm.com”h]”hŒseroyer@linux.vnet.ibm.com”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ!mailto:seroyer@linux.vnet.ibm.com”uh1hóhhëubhŒ>, Bryant G. Ly <”…””}”(hhëhžhhŸNh Nubhô)”}”(hŒbryantly@linux.vnet.ibm.com”h]”hŒbryantly@linux.vnet.ibm.com”…””}”(hj1hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ"mailto:bryantly@linux.vnet.ibm.com”uh1hóhhëubhŒ>,”…””}”(hhëhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h Khhåubah}”(h]”h ]”h"]”h$]”h&]”uh1hãhhÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÎhŸh³h KhhËhžhubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ Introduction”h]”hŒ Introduction”…””}”(hj`hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj]hžhhŸh³h Kubhê)”}”(hŒUNote: Knowledge of virtualization technology is required to understand this document.”h]”hŒUNote: Knowledge of virtualization technology is required to understand this document.”…””}”(hjnhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h Khj]hžhubhê)”}”(hŒ#A good reference document would be:”h]”hŒ#A good reference document would be:”…””}”(hj|hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h Khj]hžhubhê)”}”(hŒ`https://openpowerfoundation.org/wp-content/uploads/2016/05/LoPAPR_DRAFT_v11_24March2016_cmt1.pdf”h]”hô)”}”(hjŒh]”hŒ`https://openpowerfoundation.org/wp-content/uploads/2016/05/LoPAPR_DRAFT_v11_24March2016_cmt1.pdf”…””}”(hjŽhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jŒuh1hóhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h Khj]hžhubhê)”}”(hXNThe Virtual Management Channel (VMC) is a logical device which provides an interface between the hypervisor and a management partition. This interface is like a message passing interface. This management partition is intended to provide an alternative to systems that use a Hardware Management Console (HMC) - based system management.”h]”hXNThe Virtual Management Channel (VMC) is a logical device which provides an interface between the hypervisor and a management partition. This interface is like a message passing interface. This management partition is intended to provide an alternative to systems that use a Hardware Management Console (HMC) - based system management.”…””}”(hj¢hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h Khj]hžhubhê)”}”(hX-The primary hardware management solution that is developed by IBM relies on an appliance server named the Hardware Management Console (HMC), packaged as an external tower or rack-mounted personal computer. In a Power Systems environment, a single HMC can manage multiple POWER processor-based systems.”h]”hX-The primary hardware management solution that is developed by IBM relies on an appliance server named the Hardware Management Console (HMC), packaged as an external tower or rack-mounted personal computer. In a Power Systems environment, a single HMC can manage multiple POWER processor-based systems.”…””}”(hj°hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h Khj]hžhubhµ)”}”(hhh]”(hº)”}”(hŒManagement Application”h]”hŒManagement Application”…””}”(hjÁhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj¾hžhhŸh³h K$ubhê)”}”(hŒúIn the management partition, a management application exists which enables a system administrator to configure the system’s partitioning characteristics via a command line interface (CLI) or Representational State Transfer Application (REST API's).”h]”hŒüIn the management partition, a management application exists which enables a system administrator to configure the system’s partitioning characteristics via a command line interface (CLI) or Representational State Transfer Application (REST API’s).”…””}”(hjÏhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h K&hj¾hžhubhê)”}”(hX‚The management application runs on a Linux logical partition on a POWER8 or newer processor-based server that is virtualized by PowerVM. System configuration, maintenance, and control functions which traditionally require an HMC can be implemented in the management application using a combination of HMC to hypervisor interfaces and existing operating system methods. This tool provides a subset of the functions implemented by the HMC and enables basic partition configuration. The set of HMC to hypervisor messages supported by the management application component are passed to the hypervisor over a VMC interface, which is defined below.”h]”hX‚The management application runs on a Linux logical partition on a POWER8 or newer processor-based server that is virtualized by PowerVM. System configuration, maintenance, and control functions which traditionally require an HMC can be implemented in the management application using a combination of HMC to hypervisor interfaces and existing operating system methods. This tool provides a subset of the functions implemented by the HMC and enables basic partition configuration. The set of HMC to hypervisor messages supported by the management application component are passed to the hypervisor over a VMC interface, which is defined below.”…””}”(hjÝhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h K+hj¾hžhubhê)”}”(hŒQThe VMC enables the management partition to provide basic partitioning functions:”h]”hŒQThe VMC enables the management partition to provide basic partitioning functions:”…””}”(hjëhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h K6hj¾hžhubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒ"Logical Partitioning Configuration”h]”hê)”}”(hjh]”hŒ"Logical Partitioning Configuration”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h K9hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jþhjûhžhhŸh³h Nubjÿ)”}”(hŒ1Start, and stop actions for individual partitions”h]”hê)”}”(hjh]”hŒ1Start, and stop actions for individual partitions”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h K:hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jþhjûhžhhŸh³h Nubjÿ)”}”(hŒDisplay of partition status”h]”hê)”}”(hj0h]”hŒDisplay of partition status”…””}”(hj2hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h K;hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jþhjûhžhhŸh³h Nubjÿ)”}”(hŒManagement of virtual Ethernet”h]”hê)”}”(hjGh]”hŒManagement of virtual Ethernet”…””}”(hjIhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h Khjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jþhjûhžhhŸh³h Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jùhŸh³h K9hj¾hžhubeh}”(h]”Œmanagement-application”ah ]”h"]”Œmanagement application”ah$]”h&]”uh1h´hj]hžhhŸh³h K$ubhµ)”}”(hhh]”(hº)”}”(hŒ Virtual Management Channel (VMC)”h]”hŒ Virtual Management Channel (VMC)”…””}”(hjžhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj›hžhhŸh³h KAubhê)”}”(hX4A logical device, called the Virtual Management Channel (VMC), is defined for communicating between the management application and the hypervisor. It basically creates the pipes that enable virtualization management software. This device is presented to a designated management partition as a virtual device.”h]”hX4A logical device, called the Virtual Management Channel (VMC), is defined for communicating between the management application and the hypervisor. It basically creates the pipes that enable virtualization management software. This device is presented to a designated management partition as a virtual device.”…””}”(hj¬hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h KChj›hžhubhê)”}”(hXAThis communication device uses Command/Response Queue (CRQ) and the Remote Direct Memory Access (RDMA) interfaces. A three-way handshake is defined that must take place to establish that both the hypervisor and management partition sides of the channel are running prior to sending/receiving any of the protocol messages.”h]”hXAThis communication device uses Command/Response Queue (CRQ) and the Remote Direct Memory Access (RDMA) interfaces. A three-way handshake is defined that must take place to establish that both the hypervisor and management partition sides of the channel are running prior to sending/receiving any of the protocol messages.”…””}”(hjºhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h KIhj›hžhubhê)”}”(hX This driver also utilizes Transport Event CRQs. CRQ messages are sent when the hypervisor detects one of the peer partitions has abnormally terminated, or one side has called H_FREE_CRQ to close their CRQ. Two new classes of CRQ messages are introduced for the VMC device. VMC Administrative messages are used for each partition using the VMC to communicate capabilities to their partner. HMC Interface messages are used for the actual flow of HMC messages between the management partition and the hypervisor. As most HMC messages far exceed the size of a CRQ buffer, a virtual DMA (RMDA) of the HMC message data is done prior to each HMC Interface CRQ message. Only the management partition drives RDMA operations; hypervisors never directly cause the movement of message data.”h]”hX This driver also utilizes Transport Event CRQs. CRQ messages are sent when the hypervisor detects one of the peer partitions has abnormally terminated, or one side has called H_FREE_CRQ to close their CRQ. Two new classes of CRQ messages are introduced for the VMC device. VMC Administrative messages are used for each partition using the VMC to communicate capabilities to their partner. HMC Interface messages are used for the actual flow of HMC messages between the management partition and the hypervisor. As most HMC messages far exceed the size of a CRQ buffer, a virtual DMA (RMDA) of the HMC message data is done prior to each HMC Interface CRQ message. Only the management partition drives RDMA operations; hypervisors never directly cause the movement of message data.”…””}”(hjÈhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h KOhj›hžhubeh}”(h]”Œvirtual-management-channel-vmc”ah ]”h"]”Œ virtual management channel (vmc)”ah$]”h&]”uh1h´hj]hžhhŸh³h KAubhµ)”}”(hhh]”(hº)”}”(hŒ Terminology”h]”hŒ Terminology”…””}”(hjáhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjÞhžhhŸh³h K]ubhŒdefinition_list”“”)”}”(hhh]”(hŒdefinition_list_item”“”)”}”(hŒâRDMA Remote Direct Memory Access is DMA transfer from the server to its client or from the server to its partner partition. DMA refers to both physical I/O to and from memory operations and to memory to memory move operations.”h]”(hŒterm”“”)”}”(hŒRDMA”h]”hŒRDMA”…””}”(hjühžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1júhŸh³h KahjöubhŒ definition”“”)”}”(hhh]”hê)”}”(hŒÝRemote Direct Memory Access is DMA transfer from the server to its client or from the server to its partner partition. DMA refers to both physical I/O to and from memory operations and to memory to memory move operations.”h]”hŒÝRemote Direct Memory Access is DMA transfer from the server to its client or from the server to its partner partition. DMA refers to both physical I/O to and from memory operations and to memory to memory move operations.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h K_hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jôhŸh³h Kahjñubjõ)”}”(hŒÅCRQ Command/Response Queue a facility which is used to communicate between partner partitions. Transport events which are signaled from the hypervisor to partition are also reported in this queue. ”h]”(jû)”}”(hŒCRQ”h]”hŒCRQ”…””}”(hj-hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1júhŸh³h Kfhj)ubj )”}”(hhh]”hê)”}”(hŒÀCommand/Response Queue a facility which is used to communicate between partner partitions. Transport events which are signaled from the hypervisor to partition are also reported in this queue.”h]”hŒÀCommand/Response Queue a facility which is used to communicate between partner partitions. Transport events which are signaled from the hypervisor to partition are also reported in this queue.”…””}”(hj>hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h Kdhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jôhŸh³h Kfhjñhžhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞhžhhŸh³h Nubeh}”(h]”Œ terminology”ah ]”h"]”Œ terminology”ah$]”h&]”uh1h´hj]hžhhŸh³h K]ubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ1Example Management Partition VMC Driver Interface”h]”hŒ1Example Management Partition VMC Driver Interface”…””}”(hjqhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjnhžhhŸh³h Kiubhê)”}”(hX0This section provides an example for the management application implementation where a device driver is used to interface to the VMC device. This driver consists of a new device, for example /dev/ibmvmc, which provides interfaces to open, close, read, write, and perform ioctl’s against the VMC device.”h]”hX0This section provides an example for the management application implementation where a device driver is used to interface to the VMC device. This driver consists of a new device, for example /dev/ibmvmc, which provides interfaces to open, close, read, write, and perform ioctl’s against the VMC device.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h Kkhjnhžhubhµ)”}”(hhh]”(hº)”}”(hŒVMC Interface Initialization”h]”hŒVMC Interface Initialization”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjhžhhŸh³h Krubhê)”}”(hX‡The device driver is responsible for initializing the VMC when the driver is loaded. It first creates and initializes the CRQ. Next, an exchange of VMC capabilities is performed to indicate the code version and number of resources available in both the management partition and the hypervisor. Finally, the hypervisor requests that the management partition create an initial pool of VMC buffers, one buffer for each possible HMC connection, which will be used for management application session initialization. Prior to completion of this initialization sequence, the device returns EBUSY to open() calls. EIO is returned for all open() failures.”h]”hX‡The device driver is responsible for initializing the VMC when the driver is loaded. It first creates and initializes the CRQ. Next, an exchange of VMC capabilities is performed to indicate the code version and number of resources available in both the management partition and the hypervisor. Finally, the hypervisor requests that the management partition create an initial pool of VMC buffers, one buffer for each possible HMC connection, which will be used for management application session initialization. Prior to completion of this initialization sequence, the device returns EBUSY to open() calls. EIO is returned for all open() failures.”…””}”(hjžhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h KthjhžhubhŒ literal_block”“”)”}”(hXManagement Partition Hypervisor CRQ INIT ----------------------------------------> CRQ INIT COMPLETE <---------------------------------------- CAPABILITIES ----------------------------------------> CAPABILITIES RESPONSE <---------------------------------------- ADD BUFFER (HMC IDX=0,1,..) _ <---------------------------------------- | ADD BUFFER RESPONSE | - Perform # HMCs Iterations ----------------------------------------> -”h]”hXManagement Partition Hypervisor CRQ INIT ----------------------------------------> CRQ INIT COMPLETE <---------------------------------------- CAPABILITIES ----------------------------------------> CAPABILITIES RESPONSE <---------------------------------------- ADD BUFFER (HMC IDX=0,1,..) _ <---------------------------------------- | ADD BUFFER RESPONSE | - Perform # HMCs Iterations ----------------------------------------> -”…””}”hj®sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j¬hŸh³h K€hjhžhubeh}”(h]”Œvmc-interface-initialization”ah ]”h"]”Œvmc interface initialization”ah$]”h&]”uh1h´hjnhžhhŸh³h Krubhµ)”}”(hhh]”(hº)”}”(hŒVMC Interface Open”h]”hŒVMC Interface Open”…””}”(hjÇhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjÄhžhhŸh³h Kubhê)”}”(hXÕAfter the basic VMC channel has been initialized, an HMC session level connection can be established. The application layer performs an open() to the VMC device and executes an ioctl() against it, indicating the HMC ID (32 bytes of data) for this session. If the VMC device is in an invalid state, EIO will be returned for the ioctl(). The device driver creates a new HMC session value (ranging from 1 to 255) and HMC index value (starting at index 0 and ranging to 254) for this HMC ID. The driver then does an RDMA of the HMC ID to the hypervisor, and then sends an Interface Open message to the hypervisor to establish the session over the VMC. After the hypervisor receives this information, it sends Add Buffer messages to the management partition to seed an initial pool of buffers for the new HMC connection. Finally, the hypervisor sends an Interface Open Response message, to indicate that it is ready for normal runtime messaging. The following illustrates this VMC flow:”h]”hXÕAfter the basic VMC channel has been initialized, an HMC session level connection can be established. The application layer performs an open() to the VMC device and executes an ioctl() against it, indicating the HMC ID (32 bytes of data) for this session. If the VMC device is in an invalid state, EIO will be returned for the ioctl(). The device driver creates a new HMC session value (ranging from 1 to 255) and HMC index value (starting at index 0 and ranging to 254) for this HMC ID. The driver then does an RDMA of the HMC ID to the hypervisor, and then sends an Interface Open message to the hypervisor to establish the session over the VMC. After the hypervisor receives this information, it sends Add Buffer messages to the management partition to seed an initial pool of buffers for the new HMC connection. Finally, the hypervisor sends an Interface Open Response message, to indicate that it is ready for normal runtime messaging. The following illustrates this VMC flow:”…””}”(hjÕhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h K‘hjÄhžhubj­)”}”(hXÇManagement Partition Hypervisor RDMA HMC ID ----------------------------------------> Interface Open ----------------------------------------> Add Buffer _ <---------------------------------------- | Add Buffer Response | - Perform N Iterations ----------------------------------------> - Interface Open Response <----------------------------------------”h]”hXÇManagement Partition Hypervisor RDMA HMC ID ----------------------------------------> Interface Open ----------------------------------------> Add Buffer _ <---------------------------------------- | Add Buffer Response | - Perform N Iterations ----------------------------------------> - Interface Open Response <----------------------------------------”…””}”hjãsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j¬hŸh³h K¢hjÄhžhubeh}”(h]”Œvmc-interface-open”ah ]”h"]”Œvmc interface open”ah$]”h&]”uh1h´hjnhžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒVMC Interface Runtime”h]”hŒVMC Interface Runtime”…””}”(hjühžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjùhžhhŸh³h K¯ubhê)”}”(hX0During normal runtime, the management application and the hypervisor exchange HMC messages via the Signal VMC message and RDMA operations. When sending data to the hypervisor, the management application performs a write() to the VMC device, and the driver RDMA’s the data to the hypervisor and then sends a Signal Message. If a write() is attempted before VMC device buffers have been made available by the hypervisor, or no buffers are currently available, EBUSY is returned in response to the write(). A write() will return EIO for all other errors, such as an invalid device state. When the hypervisor sends a message to the management, the data is put into a VMC buffer and an Signal Message is sent to the VMC driver in the management partition. The driver RDMA’s the buffer into the partition and passes the data up to the appropriate management application via a read() to the VMC device. The read() request blocks if there is no buffer available to read. The management application may use select() to wait for the VMC device to become ready with data to read.”h]”hX0During normal runtime, the management application and the hypervisor exchange HMC messages via the Signal VMC message and RDMA operations. When sending data to the hypervisor, the management application performs a write() to the VMC device, and the driver RDMA’s the data to the hypervisor and then sends a Signal Message. If a write() is attempted before VMC device buffers have been made available by the hypervisor, or no buffers are currently available, EBUSY is returned in response to the write(). A write() will return EIO for all other errors, such as an invalid device state. When the hypervisor sends a message to the management, the data is put into a VMC buffer and an Signal Message is sent to the VMC driver in the management partition. The driver RDMA’s the buffer into the partition and passes the data up to the appropriate management application via a read() to the VMC device. The read() request blocks if there is no buffer available to read. The management application may use select() to wait for the VMC device to become ready with data to read.”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h K±hjùhžhubj­)”}”(hX;Management Partition Hypervisor MSG RDMA ----------------------------------------> SIGNAL MSG ----------------------------------------> SIGNAL MSG <---------------------------------------- MSG RDMA <----------------------------------------”h]”hX;Management Partition Hypervisor MSG RDMA ----------------------------------------> SIGNAL MSG ----------------------------------------> SIGNAL MSG <---------------------------------------- MSG RDMA <----------------------------------------”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j¬hŸh³h KÃhjùhžhubeh}”(h]”Œvmc-interface-runtime”ah ]”h"]”Œvmc interface runtime”ah$]”h&]”uh1h´hjnhžhhŸh³h K¯ubhµ)”}”(hhh]”(hº)”}”(hŒVMC Interface Close”h]”hŒVMC Interface Close”…””}”(hj1hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj.hžhhŸh³h KÎubhê)”}”(hXUHMC session level connections are closed by the management partition when the application layer performs a close() against the device. This action results in an Interface Close message flowing to the hypervisor, which causes the session to be terminated. The device driver must free any storage allocated for buffers for this HMC connection.”h]”hXUHMC session level connections are closed by the management partition when the application layer performs a close() against the device. This action results in an Interface Close message flowing to the hypervisor, which causes the session to be terminated. The device driver must free any storage allocated for buffers for this HMC connection.”…””}”(hj?hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h KÐhj.hžhubj­)”}”(hŒ½Management Partition Hypervisor INTERFACE CLOSE ----------------------------------------> INTERFACE CLOSE RESPONSE <----------------------------------------”h]”hŒ½Management Partition Hypervisor INTERFACE CLOSE ----------------------------------------> INTERFACE CLOSE RESPONSE <----------------------------------------”…””}”hjMsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j¬hŸh³h KØhj.hžhubeh}”(h]”Œvmc-interface-close”ah ]”h"]”Œvmc interface close”ah$]”h&]”uh1h´hjnhžhhŸh³h KÎubeh}”(h]”Œ1example-management-partition-vmc-driver-interface”ah ]”h"]”Œ1example management partition vmc driver interface”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kiubhµ)”}”(hhh]”(hº)”}”(hŒAdditional Information”h]”hŒAdditional Information”…””}”(hjnhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjkhžhhŸh³h Kßubhê)”}”(hŒÃFor more information on the documentation for CRQ Messages, VMC Messages, HMC interface Buffers, and signal messages please refer to the Linux on Power Architecture Platform Reference. Section F.”h]”hŒÃFor more information on the documentation for CRQ Messages, VMC Messages, HMC interface Buffers, and signal messages please refer to the Linux on Power Architecture Platform Reference. Section F.”…””}”(hj|hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhŸh³h Káhjkhžhubeh}”(h]”Œadditional-information”ah ]”h"]”Œadditional information”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kßubeh}”(h]”Œ3ibm-virtual-management-channel-kernel-driver-ibmvmc”ah ]”h"]”Œ5ibm virtual management channel kernel driver (ibmvmc)”ah$]”h&]”uh1h´hhhžhhŸh³h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h³uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¹NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j½Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h³Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j—j”jkjhj˜j•jÛjØjcj`jhjejÁj¾jöjój+j(j`j]jjŒuŒ nametypes”}”(j—‰jk‰j˜‰jÛ‰jc‰jh‰jÁ‰jö‰j+‰j`‰j‰uh}”(j”h¶jhj]j•j¾jØj›j`jÞjejnj¾jjójÄj(jùj]j.jŒjkuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.