/* Copyright 2018 The Fuchsia Authors. All rights reserved.
   Use of this source code is governed by a BSD-style license that can be
   found in the LICENSE file.
 */

/* NOTE: DO NOT EDIT THIS FILE! It is generated automatically by:
     //src/graphics/lib/magma/include/virtio/virtio_magma_h_gen.py
 */

#ifndef _LINUX_VIRTIO_MAGMA_H
#define _LINUX_VIRTIO_MAGMA_H

#include <linux/virtio_ids.h>
#include <linux/virtio_config.h>
#include <linux/virtmagma.h>

struct virtio_magma_config {
	__le64 dummy;
} __attribute((packed));

enum virtio_magma_ctrl_type {
	/* magma commands
 */
	VIRTIO_MAGMA_CMD_RELEASE_CONNECTION = 0x1004,
	VIRTIO_MAGMA_CMD_GET_ERROR = 0x1005,
	VIRTIO_MAGMA_CMD_CREATE_CONTEXT = 0x1006,
	VIRTIO_MAGMA_CMD_RELEASE_CONTEXT = 0x1007,
	VIRTIO_MAGMA_CMD_CREATE_BUFFER = 0x1008,
	VIRTIO_MAGMA_CMD_RELEASE_BUFFER = 0x1009,
	VIRTIO_MAGMA_CMD_GET_BUFFER_ID = 0x100C,
	VIRTIO_MAGMA_CMD_GET_BUFFER_SIZE = 0x100D,
	VIRTIO_MAGMA_CMD_CLEAN_CACHE = 0x100E,
	VIRTIO_MAGMA_CMD_SET_CACHE_POLICY = 0x100F,
	VIRTIO_MAGMA_CMD_GET_BUFFER_CACHE_POLICY = 0x1010,
	VIRTIO_MAGMA_CMD_MAP_BUFFER_GPU = 0x1017,
	VIRTIO_MAGMA_CMD_UNMAP_BUFFER_GPU = 0x1018,
	VIRTIO_MAGMA_CMD_EXPORT = 0x101A,
	VIRTIO_MAGMA_CMD_IMPORT = 0x101B,
	VIRTIO_MAGMA_CMD_EXECUTE_IMMEDIATE_COMMANDS2 = 0x1021,
	VIRTIO_MAGMA_CMD_CREATE_SEMAPHORE = 0x1022,
	VIRTIO_MAGMA_CMD_RELEASE_SEMAPHORE = 0x1023,
	VIRTIO_MAGMA_CMD_GET_SEMAPHORE_ID = 0x1024,
	VIRTIO_MAGMA_CMD_SIGNAL_SEMAPHORE = 0x1025,
	VIRTIO_MAGMA_CMD_RESET_SEMAPHORE = 0x1026,
	VIRTIO_MAGMA_CMD_EXPORT_SEMAPHORE = 0x1028,
	VIRTIO_MAGMA_CMD_IMPORT_SEMAPHORE = 0x1029,
	VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE = 0x102A,
	VIRTIO_MAGMA_CMD_INITIALIZE_TRACING = 0x102D,
	VIRTIO_MAGMA_CMD_DEVICE_IMPORT = 0x102E,
	VIRTIO_MAGMA_CMD_DEVICE_RELEASE = 0x102F,
	VIRTIO_MAGMA_CMD_QUERY2 = 0x1030,
	VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER2 = 0x1031,
	VIRTIO_MAGMA_CMD_CREATE_CONNECTION2 = 0x1032,
	VIRTIO_MAGMA_CMD_INITIALIZE_LOGGING = 0x1033,
	VIRTIO_MAGMA_CMD_POLL = 0x1034,
	VIRTIO_MAGMA_CMD_CONNECTION_ACCESS_PERFORMANCE_COUNTERS = 0x1035,
	VIRTIO_MAGMA_CMD_CONNECTION_ENABLE_PERFORMANCE_COUNTERS = 0x1038,
	VIRTIO_MAGMA_CMD_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL = 0x1039,
	VIRTIO_MAGMA_CMD_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL = 0x103A,
	VIRTIO_MAGMA_CMD_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL = 0x103B,
	VIRTIO_MAGMA_CMD_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL = 0x103C,
	VIRTIO_MAGMA_CMD_CONNECTION_DUMP_PERFORMANCE_COUNTERS = 0x103D,
	VIRTIO_MAGMA_CMD_CONNECTION_CLEAR_PERFORMANCE_COUNTERS = 0x103E,
	VIRTIO_MAGMA_CMD_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION = 0x103F,
	VIRTIO_MAGMA_CMD_BUFFER_SET_NAME = 0x1040,
	VIRTIO_MAGMA_CMD_BUFFER_RANGE_OP = 0x1041,
	VIRTIO_MAGMA_CMD_BUFFER_GET_INFO = 0x1042,
	VIRTIO_MAGMA_CMD_GET_BUFFER_HANDLE = 0x1043,
	VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL2 = 0x1046,
	VIRTIO_MAGMA_CMD_VIRT_CREATE_IMAGE = 0x1047,
	VIRTIO_MAGMA_CMD_VIRT_GET_IMAGE_INFO = 0x1048,
	VIRTIO_MAGMA_CMD_SYNC = 0x1049,
	VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES2 = 0x104A,
	VIRTIO_MAGMA_CMD_GET_BUFFER_HANDLE2 = 0x104B,
	VIRTIO_MAGMA_CMD_INTERNAL_MAP = 0x1044,
	VIRTIO_MAGMA_CMD_INTERNAL_UNMAP = 0x1045,
	VIRTIO_MAGMA_CMD_INTERNAL_RELEASE_HANDLE = 0x104C,
	VIRTIO_MAGMA_CMD_INTERNAL_MAP2 = 0x104D,
	VIRTIO_MAGMA_CMD_INTERNAL_UNMAP2 = 0x104E,
	/* magma success responses
 */
	VIRTIO_MAGMA_RESP_RELEASE_CONNECTION = 0x2004,
	VIRTIO_MAGMA_RESP_GET_ERROR = 0x2005,
	VIRTIO_MAGMA_RESP_CREATE_CONTEXT = 0x2006,
	VIRTIO_MAGMA_RESP_RELEASE_CONTEXT = 0x2007,
	VIRTIO_MAGMA_RESP_CREATE_BUFFER = 0x2008,
	VIRTIO_MAGMA_RESP_RELEASE_BUFFER = 0x2009,
	VIRTIO_MAGMA_RESP_GET_BUFFER_ID = 0x200C,
	VIRTIO_MAGMA_RESP_GET_BUFFER_SIZE = 0x200D,
	VIRTIO_MAGMA_RESP_CLEAN_CACHE = 0x200E,
	VIRTIO_MAGMA_RESP_SET_CACHE_POLICY = 0x200F,
	VIRTIO_MAGMA_RESP_GET_BUFFER_CACHE_POLICY = 0x2010,
	VIRTIO_MAGMA_RESP_MAP_BUFFER_GPU = 0x2017,
	VIRTIO_MAGMA_RESP_UNMAP_BUFFER_GPU = 0x2018,
	VIRTIO_MAGMA_RESP_EXPORT = 0x201A,
	VIRTIO_MAGMA_RESP_IMPORT = 0x201B,
	VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS2 = 0x2021,
	VIRTIO_MAGMA_RESP_CREATE_SEMAPHORE = 0x2022,
	VIRTIO_MAGMA_RESP_RELEASE_SEMAPHORE = 0x2023,
	VIRTIO_MAGMA_RESP_GET_SEMAPHORE_ID = 0x2024,
	VIRTIO_MAGMA_RESP_SIGNAL_SEMAPHORE = 0x2025,
	VIRTIO_MAGMA_RESP_RESET_SEMAPHORE = 0x2026,
	VIRTIO_MAGMA_RESP_EXPORT_SEMAPHORE = 0x2028,
	VIRTIO_MAGMA_RESP_IMPORT_SEMAPHORE = 0x2029,
	VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE = 0x202A,
	VIRTIO_MAGMA_RESP_INITIALIZE_TRACING = 0x202D,
	VIRTIO_MAGMA_RESP_DEVICE_IMPORT = 0x202E,
	VIRTIO_MAGMA_RESP_DEVICE_RELEASE = 0x202F,
	VIRTIO_MAGMA_RESP_QUERY2 = 0x2030,
	VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER2 = 0x2031,
	VIRTIO_MAGMA_RESP_CREATE_CONNECTION2 = 0x2032,
	VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING = 0x2033,
	VIRTIO_MAGMA_RESP_POLL = 0x2034,
	VIRTIO_MAGMA_RESP_CONNECTION_ACCESS_PERFORMANCE_COUNTERS = 0x2035,
	VIRTIO_MAGMA_RESP_CONNECTION_ENABLE_PERFORMANCE_COUNTERS = 0x2038,
	VIRTIO_MAGMA_RESP_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL = 0x2039,
	VIRTIO_MAGMA_RESP_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL = 0x203A,
	VIRTIO_MAGMA_RESP_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL = 0x203B,
	VIRTIO_MAGMA_RESP_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL = 0x203C,
	VIRTIO_MAGMA_RESP_CONNECTION_DUMP_PERFORMANCE_COUNTERS = 0x203D,
	VIRTIO_MAGMA_RESP_CONNECTION_CLEAR_PERFORMANCE_COUNTERS = 0x203E,
	VIRTIO_MAGMA_RESP_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION = 0x203F,
	VIRTIO_MAGMA_RESP_BUFFER_SET_NAME = 0x2040,
	VIRTIO_MAGMA_RESP_BUFFER_RANGE_OP = 0x2041,
	VIRTIO_MAGMA_RESP_BUFFER_GET_INFO = 0x2042,
	VIRTIO_MAGMA_RESP_GET_BUFFER_HANDLE = 0x2043,
	VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL2 = 0x2046,
	VIRTIO_MAGMA_RESP_VIRT_CREATE_IMAGE = 0x2047,
	VIRTIO_MAGMA_RESP_VIRT_GET_IMAGE_INFO = 0x2048,
	VIRTIO_MAGMA_RESP_SYNC = 0x2049,
	VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES2 = 0x204A,
	VIRTIO_MAGMA_RESP_GET_BUFFER_HANDLE2 = 0x204B,
	VIRTIO_MAGMA_RESP_INTERNAL_MAP = 0x2044,
	VIRTIO_MAGMA_RESP_INTERNAL_UNMAP = 0x2045,
	VIRTIO_MAGMA_RESP_INTERNAL_RELEASE_HANDLE = 0x204C,
	VIRTIO_MAGMA_RESP_INTERNAL_MAP2 = 0x204D,
	VIRTIO_MAGMA_RESP_INTERNAL_UNMAP2 = 0x204E,
	/* magma error responses
 */
	VIRTIO_MAGMA_RESP_ERR_UNIMPLEMENTED = 0x3001,
	VIRTIO_MAGMA_RESP_ERR_INTERNAL = 0x3002,
	VIRTIO_MAGMA_RESP_ERR_HOST_DISCONNECTED = 0x3003,
	VIRTIO_MAGMA_RESP_ERR_OUT_OF_MEMORY = 0x3004,
	VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND = 0x3005,
	VIRTIO_MAGMA_RESP_ERR_INVALID_ARGUMENT = 0x3006,
} __attribute((packed));

inline const char* virtio_magma_ctrl_type_string(enum virtio_magma_ctrl_type type) {
	switch (type) {
		case VIRTIO_MAGMA_CMD_RELEASE_CONNECTION: return "VIRTIO_MAGMA_CMD_RELEASE_CONNECTION";
		case VIRTIO_MAGMA_RESP_RELEASE_CONNECTION: return "VIRTIO_MAGMA_RESP_RELEASE_CONNECTION";
		case VIRTIO_MAGMA_CMD_GET_ERROR: return "VIRTIO_MAGMA_CMD_GET_ERROR";
		case VIRTIO_MAGMA_RESP_GET_ERROR: return "VIRTIO_MAGMA_RESP_GET_ERROR";
		case VIRTIO_MAGMA_CMD_CREATE_CONTEXT: return "VIRTIO_MAGMA_CMD_CREATE_CONTEXT";
		case VIRTIO_MAGMA_RESP_CREATE_CONTEXT: return "VIRTIO_MAGMA_RESP_CREATE_CONTEXT";
		case VIRTIO_MAGMA_CMD_RELEASE_CONTEXT: return "VIRTIO_MAGMA_CMD_RELEASE_CONTEXT";
		case VIRTIO_MAGMA_RESP_RELEASE_CONTEXT: return "VIRTIO_MAGMA_RESP_RELEASE_CONTEXT";
		case VIRTIO_MAGMA_CMD_CREATE_BUFFER: return "VIRTIO_MAGMA_CMD_CREATE_BUFFER";
		case VIRTIO_MAGMA_RESP_CREATE_BUFFER: return "VIRTIO_MAGMA_RESP_CREATE_BUFFER";
		case VIRTIO_MAGMA_CMD_RELEASE_BUFFER: return "VIRTIO_MAGMA_CMD_RELEASE_BUFFER";
		case VIRTIO_MAGMA_RESP_RELEASE_BUFFER: return "VIRTIO_MAGMA_RESP_RELEASE_BUFFER";
		case VIRTIO_MAGMA_CMD_GET_BUFFER_ID: return "VIRTIO_MAGMA_CMD_GET_BUFFER_ID";
		case VIRTIO_MAGMA_RESP_GET_BUFFER_ID: return "VIRTIO_MAGMA_RESP_GET_BUFFER_ID";
		case VIRTIO_MAGMA_CMD_GET_BUFFER_SIZE: return "VIRTIO_MAGMA_CMD_GET_BUFFER_SIZE";
		case VIRTIO_MAGMA_RESP_GET_BUFFER_SIZE: return "VIRTIO_MAGMA_RESP_GET_BUFFER_SIZE";
		case VIRTIO_MAGMA_CMD_CLEAN_CACHE: return "VIRTIO_MAGMA_CMD_CLEAN_CACHE";
		case VIRTIO_MAGMA_RESP_CLEAN_CACHE: return "VIRTIO_MAGMA_RESP_CLEAN_CACHE";
		case VIRTIO_MAGMA_CMD_SET_CACHE_POLICY: return "VIRTIO_MAGMA_CMD_SET_CACHE_POLICY";
		case VIRTIO_MAGMA_RESP_SET_CACHE_POLICY: return "VIRTIO_MAGMA_RESP_SET_CACHE_POLICY";
		case VIRTIO_MAGMA_CMD_GET_BUFFER_CACHE_POLICY: return "VIRTIO_MAGMA_CMD_GET_BUFFER_CACHE_POLICY";
		case VIRTIO_MAGMA_RESP_GET_BUFFER_CACHE_POLICY: return "VIRTIO_MAGMA_RESP_GET_BUFFER_CACHE_POLICY";
		case VIRTIO_MAGMA_CMD_MAP_BUFFER_GPU: return "VIRTIO_MAGMA_CMD_MAP_BUFFER_GPU";
		case VIRTIO_MAGMA_RESP_MAP_BUFFER_GPU: return "VIRTIO_MAGMA_RESP_MAP_BUFFER_GPU";
		case VIRTIO_MAGMA_CMD_UNMAP_BUFFER_GPU: return "VIRTIO_MAGMA_CMD_UNMAP_BUFFER_GPU";
		case VIRTIO_MAGMA_RESP_UNMAP_BUFFER_GPU: return "VIRTIO_MAGMA_RESP_UNMAP_BUFFER_GPU";
		case VIRTIO_MAGMA_CMD_EXPORT: return "VIRTIO_MAGMA_CMD_EXPORT";
		case VIRTIO_MAGMA_RESP_EXPORT: return "VIRTIO_MAGMA_RESP_EXPORT";
		case VIRTIO_MAGMA_CMD_IMPORT: return "VIRTIO_MAGMA_CMD_IMPORT";
		case VIRTIO_MAGMA_RESP_IMPORT: return "VIRTIO_MAGMA_RESP_IMPORT";
		case VIRTIO_MAGMA_CMD_EXECUTE_IMMEDIATE_COMMANDS2: return "VIRTIO_MAGMA_CMD_EXECUTE_IMMEDIATE_COMMANDS2";
		case VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS2: return "VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS2";
		case VIRTIO_MAGMA_CMD_CREATE_SEMAPHORE: return "VIRTIO_MAGMA_CMD_CREATE_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_CREATE_SEMAPHORE: return "VIRTIO_MAGMA_RESP_CREATE_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_RELEASE_SEMAPHORE: return "VIRTIO_MAGMA_CMD_RELEASE_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_RELEASE_SEMAPHORE: return "VIRTIO_MAGMA_RESP_RELEASE_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_GET_SEMAPHORE_ID: return "VIRTIO_MAGMA_CMD_GET_SEMAPHORE_ID";
		case VIRTIO_MAGMA_RESP_GET_SEMAPHORE_ID: return "VIRTIO_MAGMA_RESP_GET_SEMAPHORE_ID";
		case VIRTIO_MAGMA_CMD_SIGNAL_SEMAPHORE: return "VIRTIO_MAGMA_CMD_SIGNAL_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_SIGNAL_SEMAPHORE: return "VIRTIO_MAGMA_RESP_SIGNAL_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_RESET_SEMAPHORE: return "VIRTIO_MAGMA_CMD_RESET_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_RESET_SEMAPHORE: return "VIRTIO_MAGMA_RESP_RESET_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_EXPORT_SEMAPHORE: return "VIRTIO_MAGMA_CMD_EXPORT_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_EXPORT_SEMAPHORE: return "VIRTIO_MAGMA_RESP_EXPORT_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_IMPORT_SEMAPHORE: return "VIRTIO_MAGMA_CMD_IMPORT_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_IMPORT_SEMAPHORE: return "VIRTIO_MAGMA_RESP_IMPORT_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE: return "VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE";
		case VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE: return "VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE";
		case VIRTIO_MAGMA_CMD_INITIALIZE_TRACING: return "VIRTIO_MAGMA_CMD_INITIALIZE_TRACING";
		case VIRTIO_MAGMA_RESP_INITIALIZE_TRACING: return "VIRTIO_MAGMA_RESP_INITIALIZE_TRACING";
		case VIRTIO_MAGMA_CMD_DEVICE_IMPORT: return "VIRTIO_MAGMA_CMD_DEVICE_IMPORT";
		case VIRTIO_MAGMA_RESP_DEVICE_IMPORT: return "VIRTIO_MAGMA_RESP_DEVICE_IMPORT";
		case VIRTIO_MAGMA_CMD_DEVICE_RELEASE: return "VIRTIO_MAGMA_CMD_DEVICE_RELEASE";
		case VIRTIO_MAGMA_RESP_DEVICE_RELEASE: return "VIRTIO_MAGMA_RESP_DEVICE_RELEASE";
		case VIRTIO_MAGMA_CMD_QUERY2: return "VIRTIO_MAGMA_CMD_QUERY2";
		case VIRTIO_MAGMA_RESP_QUERY2: return "VIRTIO_MAGMA_RESP_QUERY2";
		case VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER2: return "VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER2";
		case VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER2: return "VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER2";
		case VIRTIO_MAGMA_CMD_CREATE_CONNECTION2: return "VIRTIO_MAGMA_CMD_CREATE_CONNECTION2";
		case VIRTIO_MAGMA_RESP_CREATE_CONNECTION2: return "VIRTIO_MAGMA_RESP_CREATE_CONNECTION2";
		case VIRTIO_MAGMA_CMD_INITIALIZE_LOGGING: return "VIRTIO_MAGMA_CMD_INITIALIZE_LOGGING";
		case VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING: return "VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING";
		case VIRTIO_MAGMA_CMD_POLL: return "VIRTIO_MAGMA_CMD_POLL";
		case VIRTIO_MAGMA_RESP_POLL: return "VIRTIO_MAGMA_RESP_POLL";
		case VIRTIO_MAGMA_CMD_CONNECTION_ACCESS_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_CMD_CONNECTION_ACCESS_PERFORMANCE_COUNTERS";
		case VIRTIO_MAGMA_RESP_CONNECTION_ACCESS_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_RESP_CONNECTION_ACCESS_PERFORMANCE_COUNTERS";
		case VIRTIO_MAGMA_CMD_CONNECTION_ENABLE_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_CMD_CONNECTION_ENABLE_PERFORMANCE_COUNTERS";
		case VIRTIO_MAGMA_RESP_CONNECTION_ENABLE_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_RESP_CONNECTION_ENABLE_PERFORMANCE_COUNTERS";
		case VIRTIO_MAGMA_CMD_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL: return "VIRTIO_MAGMA_CMD_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL";
		case VIRTIO_MAGMA_RESP_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL: return "VIRTIO_MAGMA_RESP_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL";
		case VIRTIO_MAGMA_CMD_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL: return "VIRTIO_MAGMA_CMD_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL";
		case VIRTIO_MAGMA_RESP_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL: return "VIRTIO_MAGMA_RESP_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL";
		case VIRTIO_MAGMA_CMD_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL: return "VIRTIO_MAGMA_CMD_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL";
		case VIRTIO_MAGMA_RESP_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL: return "VIRTIO_MAGMA_RESP_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL";
		case VIRTIO_MAGMA_CMD_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL: return "VIRTIO_MAGMA_CMD_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL";
		case VIRTIO_MAGMA_RESP_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL: return "VIRTIO_MAGMA_RESP_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL";
		case VIRTIO_MAGMA_CMD_CONNECTION_DUMP_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_CMD_CONNECTION_DUMP_PERFORMANCE_COUNTERS";
		case VIRTIO_MAGMA_RESP_CONNECTION_DUMP_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_RESP_CONNECTION_DUMP_PERFORMANCE_COUNTERS";
		case VIRTIO_MAGMA_CMD_CONNECTION_CLEAR_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_CMD_CONNECTION_CLEAR_PERFORMANCE_COUNTERS";
		case VIRTIO_MAGMA_RESP_CONNECTION_CLEAR_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_RESP_CONNECTION_CLEAR_PERFORMANCE_COUNTERS";
		case VIRTIO_MAGMA_CMD_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION: return "VIRTIO_MAGMA_CMD_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION";
		case VIRTIO_MAGMA_RESP_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION: return "VIRTIO_MAGMA_RESP_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION";
		case VIRTIO_MAGMA_CMD_BUFFER_SET_NAME: return "VIRTIO_MAGMA_CMD_BUFFER_SET_NAME";
		case VIRTIO_MAGMA_RESP_BUFFER_SET_NAME: return "VIRTIO_MAGMA_RESP_BUFFER_SET_NAME";
		case VIRTIO_MAGMA_CMD_BUFFER_RANGE_OP: return "VIRTIO_MAGMA_CMD_BUFFER_RANGE_OP";
		case VIRTIO_MAGMA_RESP_BUFFER_RANGE_OP: return "VIRTIO_MAGMA_RESP_BUFFER_RANGE_OP";
		case VIRTIO_MAGMA_CMD_BUFFER_GET_INFO: return "VIRTIO_MAGMA_CMD_BUFFER_GET_INFO";
		case VIRTIO_MAGMA_RESP_BUFFER_GET_INFO: return "VIRTIO_MAGMA_RESP_BUFFER_GET_INFO";
		case VIRTIO_MAGMA_CMD_GET_BUFFER_HANDLE: return "VIRTIO_MAGMA_CMD_GET_BUFFER_HANDLE";
		case VIRTIO_MAGMA_RESP_GET_BUFFER_HANDLE: return "VIRTIO_MAGMA_RESP_GET_BUFFER_HANDLE";
		case VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL2: return "VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL2";
		case VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL2: return "VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL2";
		case VIRTIO_MAGMA_CMD_VIRT_CREATE_IMAGE: return "VIRTIO_MAGMA_CMD_VIRT_CREATE_IMAGE";
		case VIRTIO_MAGMA_RESP_VIRT_CREATE_IMAGE: return "VIRTIO_MAGMA_RESP_VIRT_CREATE_IMAGE";
		case VIRTIO_MAGMA_CMD_VIRT_GET_IMAGE_INFO: return "VIRTIO_MAGMA_CMD_VIRT_GET_IMAGE_INFO";
		case VIRTIO_MAGMA_RESP_VIRT_GET_IMAGE_INFO: return "VIRTIO_MAGMA_RESP_VIRT_GET_IMAGE_INFO";
		case VIRTIO_MAGMA_CMD_SYNC: return "VIRTIO_MAGMA_CMD_SYNC";
		case VIRTIO_MAGMA_RESP_SYNC: return "VIRTIO_MAGMA_RESP_SYNC";
		case VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES2: return "VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES2";
		case VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES2: return "VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES2";
		case VIRTIO_MAGMA_CMD_GET_BUFFER_HANDLE2: return "VIRTIO_MAGMA_CMD_GET_BUFFER_HANDLE2";
		case VIRTIO_MAGMA_RESP_GET_BUFFER_HANDLE2: return "VIRTIO_MAGMA_RESP_GET_BUFFER_HANDLE2";
		case VIRTIO_MAGMA_CMD_INTERNAL_MAP: return "VIRTIO_MAGMA_CMD_INTERNAL_MAP";
		case VIRTIO_MAGMA_RESP_INTERNAL_MAP: return "VIRTIO_MAGMA_RESP_INTERNAL_MAP";
		case VIRTIO_MAGMA_CMD_INTERNAL_UNMAP: return "VIRTIO_MAGMA_CMD_INTERNAL_UNMAP";
		case VIRTIO_MAGMA_RESP_INTERNAL_UNMAP: return "VIRTIO_MAGMA_RESP_INTERNAL_UNMAP";
		case VIRTIO_MAGMA_CMD_INTERNAL_RELEASE_HANDLE: return "VIRTIO_MAGMA_CMD_INTERNAL_RELEASE_HANDLE";
		case VIRTIO_MAGMA_RESP_INTERNAL_RELEASE_HANDLE: return "VIRTIO_MAGMA_RESP_INTERNAL_RELEASE_HANDLE";
		case VIRTIO_MAGMA_CMD_INTERNAL_MAP2: return "VIRTIO_MAGMA_CMD_INTERNAL_MAP2";
		case VIRTIO_MAGMA_RESP_INTERNAL_MAP2: return "VIRTIO_MAGMA_RESP_INTERNAL_MAP2";
		case VIRTIO_MAGMA_CMD_INTERNAL_UNMAP2: return "VIRTIO_MAGMA_CMD_INTERNAL_UNMAP2";
		case VIRTIO_MAGMA_RESP_INTERNAL_UNMAP2: return "VIRTIO_MAGMA_RESP_INTERNAL_UNMAP2";
		case VIRTIO_MAGMA_RESP_ERR_UNIMPLEMENTED: return "VIRTIO_MAGMA_RESP_ERR_UNIMPLEMENTED";
		case VIRTIO_MAGMA_RESP_ERR_INTERNAL: return "VIRTIO_MAGMA_RESP_ERR_INTERNAL";
		case VIRTIO_MAGMA_RESP_ERR_HOST_DISCONNECTED: return "VIRTIO_MAGMA_RESP_ERR_HOST_DISCONNECTED";
		case VIRTIO_MAGMA_RESP_ERR_OUT_OF_MEMORY: return "VIRTIO_MAGMA_RESP_ERR_OUT_OF_MEMORY";
		case VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND: return "VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND";
		case VIRTIO_MAGMA_RESP_ERR_INVALID_ARGUMENT: return "VIRTIO_MAGMA_RESP_ERR_INVALID_ARGUMENT";
		default: return "[invalid virtio_magma_ctrl_type]";
	}
}

inline enum virtio_magma_ctrl_type virtio_magma_expected_response_type(enum virtio_magma_ctrl_type type) {
	switch (type) {
		case VIRTIO_MAGMA_CMD_RELEASE_CONNECTION: return VIRTIO_MAGMA_RESP_RELEASE_CONNECTION;
		case VIRTIO_MAGMA_CMD_GET_ERROR: return VIRTIO_MAGMA_RESP_GET_ERROR;
		case VIRTIO_MAGMA_CMD_CREATE_CONTEXT: return VIRTIO_MAGMA_RESP_CREATE_CONTEXT;
		case VIRTIO_MAGMA_CMD_RELEASE_CONTEXT: return VIRTIO_MAGMA_RESP_RELEASE_CONTEXT;
		case VIRTIO_MAGMA_CMD_CREATE_BUFFER: return VIRTIO_MAGMA_RESP_CREATE_BUFFER;
		case VIRTIO_MAGMA_CMD_RELEASE_BUFFER: return VIRTIO_MAGMA_RESP_RELEASE_BUFFER;
		case VIRTIO_MAGMA_CMD_GET_BUFFER_ID: return VIRTIO_MAGMA_RESP_GET_BUFFER_ID;
		case VIRTIO_MAGMA_CMD_GET_BUFFER_SIZE: return VIRTIO_MAGMA_RESP_GET_BUFFER_SIZE;
		case VIRTIO_MAGMA_CMD_CLEAN_CACHE: return VIRTIO_MAGMA_RESP_CLEAN_CACHE;
		case VIRTIO_MAGMA_CMD_SET_CACHE_POLICY: return VIRTIO_MAGMA_RESP_SET_CACHE_POLICY;
		case VIRTIO_MAGMA_CMD_GET_BUFFER_CACHE_POLICY: return VIRTIO_MAGMA_RESP_GET_BUFFER_CACHE_POLICY;
		case VIRTIO_MAGMA_CMD_MAP_BUFFER_GPU: return VIRTIO_MAGMA_RESP_MAP_BUFFER_GPU;
		case VIRTIO_MAGMA_CMD_UNMAP_BUFFER_GPU: return VIRTIO_MAGMA_RESP_UNMAP_BUFFER_GPU;
		case VIRTIO_MAGMA_CMD_EXPORT: return VIRTIO_MAGMA_RESP_EXPORT;
		case VIRTIO_MAGMA_CMD_IMPORT: return VIRTIO_MAGMA_RESP_IMPORT;
		case VIRTIO_MAGMA_CMD_EXECUTE_IMMEDIATE_COMMANDS2: return VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS2;
		case VIRTIO_MAGMA_CMD_CREATE_SEMAPHORE: return VIRTIO_MAGMA_RESP_CREATE_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_RELEASE_SEMAPHORE: return VIRTIO_MAGMA_RESP_RELEASE_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_GET_SEMAPHORE_ID: return VIRTIO_MAGMA_RESP_GET_SEMAPHORE_ID;
		case VIRTIO_MAGMA_CMD_SIGNAL_SEMAPHORE: return VIRTIO_MAGMA_RESP_SIGNAL_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_RESET_SEMAPHORE: return VIRTIO_MAGMA_RESP_RESET_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_EXPORT_SEMAPHORE: return VIRTIO_MAGMA_RESP_EXPORT_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_IMPORT_SEMAPHORE: return VIRTIO_MAGMA_RESP_IMPORT_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE: return VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE;
		case VIRTIO_MAGMA_CMD_INITIALIZE_TRACING: return VIRTIO_MAGMA_RESP_INITIALIZE_TRACING;
		case VIRTIO_MAGMA_CMD_DEVICE_IMPORT: return VIRTIO_MAGMA_RESP_DEVICE_IMPORT;
		case VIRTIO_MAGMA_CMD_DEVICE_RELEASE: return VIRTIO_MAGMA_RESP_DEVICE_RELEASE;
		case VIRTIO_MAGMA_CMD_QUERY2: return VIRTIO_MAGMA_RESP_QUERY2;
		case VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER2: return VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER2;
		case VIRTIO_MAGMA_CMD_CREATE_CONNECTION2: return VIRTIO_MAGMA_RESP_CREATE_CONNECTION2;
		case VIRTIO_MAGMA_CMD_INITIALIZE_LOGGING: return VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING;
		case VIRTIO_MAGMA_CMD_POLL: return VIRTIO_MAGMA_RESP_POLL;
		case VIRTIO_MAGMA_CMD_CONNECTION_ACCESS_PERFORMANCE_COUNTERS: return VIRTIO_MAGMA_RESP_CONNECTION_ACCESS_PERFORMANCE_COUNTERS;
		case VIRTIO_MAGMA_CMD_CONNECTION_ENABLE_PERFORMANCE_COUNTERS: return VIRTIO_MAGMA_RESP_CONNECTION_ENABLE_PERFORMANCE_COUNTERS;
		case VIRTIO_MAGMA_CMD_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL: return VIRTIO_MAGMA_RESP_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL;
		case VIRTIO_MAGMA_CMD_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL: return VIRTIO_MAGMA_RESP_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL;
		case VIRTIO_MAGMA_CMD_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL: return VIRTIO_MAGMA_RESP_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL;
		case VIRTIO_MAGMA_CMD_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL: return VIRTIO_MAGMA_RESP_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL;
		case VIRTIO_MAGMA_CMD_CONNECTION_DUMP_PERFORMANCE_COUNTERS: return VIRTIO_MAGMA_RESP_CONNECTION_DUMP_PERFORMANCE_COUNTERS;
		case VIRTIO_MAGMA_CMD_CONNECTION_CLEAR_PERFORMANCE_COUNTERS: return VIRTIO_MAGMA_RESP_CONNECTION_CLEAR_PERFORMANCE_COUNTERS;
		case VIRTIO_MAGMA_CMD_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION: return VIRTIO_MAGMA_RESP_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION;
		case VIRTIO_MAGMA_CMD_BUFFER_SET_NAME: return VIRTIO_MAGMA_RESP_BUFFER_SET_NAME;
		case VIRTIO_MAGMA_CMD_BUFFER_RANGE_OP: return VIRTIO_MAGMA_RESP_BUFFER_RANGE_OP;
		case VIRTIO_MAGMA_CMD_BUFFER_GET_INFO: return VIRTIO_MAGMA_RESP_BUFFER_GET_INFO;
		case VIRTIO_MAGMA_CMD_GET_BUFFER_HANDLE: return VIRTIO_MAGMA_RESP_GET_BUFFER_HANDLE;
		case VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL2: return VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL2;
		case VIRTIO_MAGMA_CMD_VIRT_CREATE_IMAGE: return VIRTIO_MAGMA_RESP_VIRT_CREATE_IMAGE;
		case VIRTIO_MAGMA_CMD_VIRT_GET_IMAGE_INFO: return VIRTIO_MAGMA_RESP_VIRT_GET_IMAGE_INFO;
		case VIRTIO_MAGMA_CMD_SYNC: return VIRTIO_MAGMA_RESP_SYNC;
		case VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES2: return VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES2;
		case VIRTIO_MAGMA_CMD_GET_BUFFER_HANDLE2: return VIRTIO_MAGMA_RESP_GET_BUFFER_HANDLE2;
		case VIRTIO_MAGMA_CMD_INTERNAL_MAP: return VIRTIO_MAGMA_RESP_INTERNAL_MAP;
		case VIRTIO_MAGMA_CMD_INTERNAL_UNMAP: return VIRTIO_MAGMA_RESP_INTERNAL_UNMAP;
		case VIRTIO_MAGMA_CMD_INTERNAL_RELEASE_HANDLE: return VIRTIO_MAGMA_RESP_INTERNAL_RELEASE_HANDLE;
		case VIRTIO_MAGMA_CMD_INTERNAL_MAP2: return VIRTIO_MAGMA_RESP_INTERNAL_MAP2;
		case VIRTIO_MAGMA_CMD_INTERNAL_UNMAP2: return VIRTIO_MAGMA_RESP_INTERNAL_UNMAP2;
		default: return VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND;
	}
}

struct virtio_magma_ctrl_hdr {
	__le32 type;
	__le32 flags;
} __attribute((packed));

struct virtio_magma_release_connection_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_release_connection_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_get_error_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_get_error_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_create_context_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_create_context_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t context_id_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_release_context_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le32 context_id;
} __attribute((packed));

struct virtio_magma_release_context_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_create_buffer_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 size;
} __attribute((packed));

struct virtio_magma_create_buffer_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t size_out;
	uintptr_t buffer_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_release_buffer_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_release_buffer_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_get_buffer_id_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_get_buffer_id_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_get_buffer_size_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_get_buffer_size_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_clean_cache_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
	__le64 offset;
	__le64 size;
	__le64 operation;
} __attribute((packed));

struct virtio_magma_clean_cache_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_set_cache_policy_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
	__le64 policy;
} __attribute((packed));

struct virtio_magma_set_cache_policy_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_get_buffer_cache_policy_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_get_buffer_cache_policy_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t cache_policy_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_map_buffer_gpu_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le64 page_offset;
	__le64 page_count;
	__le64 gpu_va;
	__le64 map_flags;
} __attribute((packed));

struct virtio_magma_map_buffer_gpu_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_unmap_buffer_gpu_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le64 gpu_va;
} __attribute((packed));

struct virtio_magma_unmap_buffer_gpu_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_export_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_export_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t buffer_handle_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_import_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le32 buffer_handle;
} __attribute((packed));

struct virtio_magma_import_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t buffer_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_execute_immediate_commands2_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le32 context_id;
	__le64 command_count;
	uintptr_t command_buffers;
} __attribute((packed));

struct virtio_magma_execute_immediate_commands2_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_create_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_create_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t semaphore_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_release_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 semaphore;
} __attribute((packed));

struct virtio_magma_release_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_get_semaphore_id_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 semaphore;
} __attribute((packed));

struct virtio_magma_get_semaphore_id_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_signal_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 semaphore;
} __attribute((packed));

struct virtio_magma_signal_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_reset_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 semaphore;
} __attribute((packed));

struct virtio_magma_reset_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_export_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 semaphore;
} __attribute((packed));

struct virtio_magma_export_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t semaphore_handle_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_import_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le32 semaphore_handle;
} __attribute((packed));

struct virtio_magma_import_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t semaphore_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_get_notification_channel_handle_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_get_notification_channel_handle_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 result_return;
} __attribute((packed));

struct virtio_magma_initialize_tracing_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 channel;
} __attribute((packed));

struct virtio_magma_initialize_tracing_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_device_import_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 device_channel;
} __attribute((packed));

struct virtio_magma_device_import_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t device_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_device_release_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 device;
} __attribute((packed));

struct virtio_magma_device_release_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_query2_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 device;
	__le64 id;
} __attribute((packed));

struct virtio_magma_query2_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t value_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_query_returns_buffer2_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 device;
	__le64 id;
} __attribute((packed));

struct virtio_magma_query_returns_buffer2_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t handle_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_create_connection2_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 device;
} __attribute((packed));

struct virtio_magma_create_connection2_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t connection_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_initialize_logging_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 channel;
} __attribute((packed));

struct virtio_magma_initialize_logging_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_poll_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t items;
	__le32 count;
	__le64 timeout_ns;
} __attribute((packed));

struct virtio_magma_poll_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_connection_access_performance_counters_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le32 channel;
} __attribute((packed));

struct virtio_magma_connection_access_performance_counters_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_connection_enable_performance_counters_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	uintptr_t counters;
	__le64 counters_count;
} __attribute((packed));

struct virtio_magma_connection_enable_performance_counters_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_connection_create_performance_counter_buffer_pool_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_connection_create_performance_counter_buffer_pool_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t pool_out;
	uintptr_t notification_handle_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_connection_release_performance_counter_buffer_pool_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 pool;
} __attribute((packed));

struct virtio_magma_connection_release_performance_counter_buffer_pool_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_connection_add_performance_counter_buffer_offsets_to_pool_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 pool;
	uintptr_t offsets;
	__le64 offsets_count;
} __attribute((packed));

struct virtio_magma_connection_add_performance_counter_buffer_offsets_to_pool_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_connection_remove_performance_counter_buffer_from_pool_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 pool_id;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_connection_remove_performance_counter_buffer_from_pool_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_connection_dump_performance_counters_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 pool;
	__le32 trigger_id;
} __attribute((packed));

struct virtio_magma_connection_dump_performance_counters_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_connection_clear_performance_counters_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	uintptr_t counters;
	__le64 counters_count;
} __attribute((packed));

struct virtio_magma_connection_clear_performance_counters_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_connection_read_performance_counter_completion_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 pool;
} __attribute((packed));

struct virtio_magma_connection_read_performance_counter_completion_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t trigger_id_out;
	uintptr_t buffer_id_out;
	uintptr_t buffer_offset_out;
	uintptr_t time_out;
	uintptr_t result_flags_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_buffer_set_name_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	uintptr_t name;
} __attribute((packed));

struct virtio_magma_buffer_set_name_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_buffer_range_op_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le32 options;
	__le64 start_offset;
	__le64 length;
} __attribute((packed));

struct virtio_magma_buffer_range_op_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_buffer_get_info_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_buffer_get_info_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t info_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_get_buffer_handle_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_get_buffer_handle_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t handle_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_read_notification_channel2_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	uintptr_t buffer;
	__le64 buffer_size;
} __attribute((packed));

struct virtio_magma_read_notification_channel2_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t buffer_size_out;
	uintptr_t more_data_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_virt_create_image_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	uintptr_t create_info;
} __attribute((packed));

struct virtio_magma_virt_create_image_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t image_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_virt_get_image_info_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 image;
	uintptr_t image_info_out;
} __attribute((packed));

struct virtio_magma_virt_get_image_info_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_sync_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_sync_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_execute_command_buffer_with_resources2_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le32 context_id;
	uintptr_t command_buffer;
	uintptr_t resources;
	uintptr_t semaphore_ids;
} __attribute((packed));

struct virtio_magma_execute_command_buffer_with_resources2_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_get_buffer_handle2_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_get_buffer_handle2_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t handle_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_internal_map_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le64 length;
} __attribute((packed));

struct virtio_magma_internal_map_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t address_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_internal_unmap_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	uintptr_t address;
} __attribute((packed));

struct virtio_magma_internal_unmap_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_internal_release_handle_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 handle;
} __attribute((packed));

struct virtio_magma_internal_release_handle_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_internal_map2_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 buffer;
	__le64 length;
} __attribute((packed));

struct virtio_magma_internal_map2_resp {
	struct virtio_magma_ctrl_hdr hdr;
	uintptr_t address_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_internal_unmap2_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 buffer;
	uintptr_t address;
} __attribute((packed));

struct virtio_magma_internal_unmap2_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

#endif /* _LINUX_VIRTIO_MAGMA_H
 */
