+VirtioAppendDesc (\r
+ IN OUT VRING *Ring,\r
+ IN UINTN BufferPhysAddr,\r
+ IN UINT32 BufferSize,\r
+ IN UINT16 Flags,\r
+ IN OUT DESC_INDICES *Indices\r
+ );\r
+\r
+\r
+/**\r
+\r
+ Notify the host about the descriptor chain just built, and wait until the\r
+ host processes it.\r
+\r
+ @param[in] VirtIo The target virtio device to notify.\r
+\r
+ @param[in] VirtQueueId Identifies the queue for the target device.\r
+\r
+ @param[in,out] Ring The virtio ring with descriptors to submit.\r
+\r
+ @param[in] Indices Indices->NextDescIdx is not accessed.\r
+ Indices->HeadDescIdx identifies the head descriptor\r
+ of the descriptor chain.\r
+\r
+ @param[out] UsedLen On success, the total number of bytes, consecutively\r
+ across the buffers linked by the descriptor chain,\r
+ that the host wrote. May be NULL if the caller\r
+ doesn't care, or can compute the same information\r
+ from device-specific request structures linked by the\r
+ descriptor chain.\r
+\r
+ @return Error code from VirtIo->SetQueueNotify() if it fails.\r
+\r
+ @retval EFI_SUCCESS Otherwise, the host processed all descriptors.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioFlush (\r
+ IN VIRTIO_DEVICE_PROTOCOL *VirtIo,\r
+ IN UINT16 VirtQueueId,\r
+ IN OUT VRING *Ring,\r
+ IN DESC_INDICES *Indices,\r
+ OUT UINT32 *UsedLen OPTIONAL\r
+ );\r
+\r
+\r
+/**\r
+\r
+ Report the feature bits to the VirtIo 1.0 device that the VirtIo 1.0 driver\r
+ understands.\r
+\r
+ In VirtIo 1.0, a device can reject a self-inconsistent feature bitmap through\r
+ the new VSTAT_FEATURES_OK status bit. (For example if the driver requests a\r
+ higher level feature but clears a prerequisite feature.) This function is a\r
+ small wrapper around VIRTIO_DEVICE_PROTOCOL.SetGuestFeatures() that also\r
+ verifies if the VirtIo 1.0 device accepts the feature bitmap.\r
+\r
+ @param[in] VirtIo Report feature bits to this device.\r
+\r
+ @param[in] Features The set of feature bits that the driver wishes\r
+ to report. The caller is responsible to perform\r
+ any masking before calling this function; the\r
+ value is directly written with\r
+ VIRTIO_DEVICE_PROTOCOL.SetGuestFeatures().\r
+\r
+ @param[in,out] DeviceStatus On input, the status byte most recently written\r
+ to the device's status register. On output (even\r
+ on error), DeviceStatus will be updated so that\r
+ it is suitable for further status bit\r
+ manipulation and writing to the device's status\r
+ register.\r
+\r
+ @retval EFI_SUCCESS The device accepted the configuration in Features.\r
+\r
+ @return EFI_UNSUPPORTED The device rejected the configuration in Features.\r
+\r
+ @retval EFI_UNSUPPORTED VirtIo->Revision is smaller than 1.0.0.\r
+\r
+ @return Error codes from the SetGuestFeatures(),\r
+ SetDeviceStatus(), GetDeviceStatus() member\r
+ functions.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+Virtio10WriteFeatures (\r
+ IN VIRTIO_DEVICE_PROTOCOL *VirtIo,\r
+ IN UINT64 Features,\r
+ IN OUT UINT8 *DeviceStatus\r