/* 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:
     //garnet/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_QUERY = 0x1001,
	VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER = 0x1002,
	VIRTIO_MAGMA_CMD_CREATE_CONNECTION = 0x1003,
	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_DUPLICATE_HANDLE = 0x100A,
	VIRTIO_MAGMA_CMD_RELEASE_BUFFER_HANDLE = 0x100B,
	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_GET_BUFFER_IS_MAPPABLE = 0x1011,
	VIRTIO_MAGMA_CMD_SET_BUFFER_MAPPING_ADDRESS_RANGE = 0x1012,
	VIRTIO_MAGMA_CMD_MAP = 0x1013,
	VIRTIO_MAGMA_CMD_MAP_ALIGNED = 0x1014,
	VIRTIO_MAGMA_CMD_MAP_SPECIFIC = 0x1015,
	VIRTIO_MAGMA_CMD_UNMAP = 0x1016,
	VIRTIO_MAGMA_CMD_MAP_BUFFER_GPU = 0x1017,
	VIRTIO_MAGMA_CMD_UNMAP_BUFFER_GPU = 0x1018,
	VIRTIO_MAGMA_CMD_COMMIT_BUFFER = 0x1019,
	VIRTIO_MAGMA_CMD_EXPORT = 0x101A,
	VIRTIO_MAGMA_CMD_IMPORT = 0x101B,
	VIRTIO_MAGMA_CMD_CREATE_COMMAND_BUFFER = 0x101C,
	VIRTIO_MAGMA_CMD_RELEASE_COMMAND_BUFFER = 0x101D,
	VIRTIO_MAGMA_CMD_SUBMIT_COMMAND_BUFFER = 0x101E,
	VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES = 0x101F,
	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_WAIT_SEMAPHORES = 0x1027,
	VIRTIO_MAGMA_CMD_EXPORT_SEMAPHORE = 0x1028,
	VIRTIO_MAGMA_CMD_IMPORT_SEMAPHORE = 0x1029,
	VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE = 0x102A,
	VIRTIO_MAGMA_CMD_WAIT_NOTIFICATION_CHANNEL = 0x102B,
	VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL = 0x102C,
	/* magma success responses */
	VIRTIO_MAGMA_RESP_QUERY = 0x2001,
	VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER = 0x2002,
	VIRTIO_MAGMA_RESP_CREATE_CONNECTION = 0x2003,
	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_DUPLICATE_HANDLE = 0x200A,
	VIRTIO_MAGMA_RESP_RELEASE_BUFFER_HANDLE = 0x200B,
	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_GET_BUFFER_IS_MAPPABLE = 0x2011,
	VIRTIO_MAGMA_RESP_SET_BUFFER_MAPPING_ADDRESS_RANGE = 0x2012,
	VIRTIO_MAGMA_RESP_MAP = 0x2013,
	VIRTIO_MAGMA_RESP_MAP_ALIGNED = 0x2014,
	VIRTIO_MAGMA_RESP_MAP_SPECIFIC = 0x2015,
	VIRTIO_MAGMA_RESP_UNMAP = 0x2016,
	VIRTIO_MAGMA_RESP_MAP_BUFFER_GPU = 0x2017,
	VIRTIO_MAGMA_RESP_UNMAP_BUFFER_GPU = 0x2018,
	VIRTIO_MAGMA_RESP_COMMIT_BUFFER = 0x2019,
	VIRTIO_MAGMA_RESP_EXPORT = 0x201A,
	VIRTIO_MAGMA_RESP_IMPORT = 0x201B,
	VIRTIO_MAGMA_RESP_CREATE_COMMAND_BUFFER = 0x201C,
	VIRTIO_MAGMA_RESP_RELEASE_COMMAND_BUFFER = 0x201D,
	VIRTIO_MAGMA_RESP_SUBMIT_COMMAND_BUFFER = 0x201E,
	VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES = 0x201F,
	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_WAIT_SEMAPHORES = 0x2027,
	VIRTIO_MAGMA_RESP_EXPORT_SEMAPHORE = 0x2028,
	VIRTIO_MAGMA_RESP_IMPORT_SEMAPHORE = 0x2029,
	VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE = 0x202A,
	VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL = 0x202B,
	VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL = 0x202C,
	/* 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_QUERY: return "VIRTIO_MAGMA_CMD_QUERY";
		case VIRTIO_MAGMA_RESP_QUERY: return "VIRTIO_MAGMA_RESP_QUERY";
		case VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER: return "VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER";
		case VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER: return "VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER";
		case VIRTIO_MAGMA_CMD_CREATE_CONNECTION: return "VIRTIO_MAGMA_CMD_CREATE_CONNECTION";
		case VIRTIO_MAGMA_RESP_CREATE_CONNECTION: return "VIRTIO_MAGMA_RESP_CREATE_CONNECTION";
		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_DUPLICATE_HANDLE: return "VIRTIO_MAGMA_CMD_DUPLICATE_HANDLE";
		case VIRTIO_MAGMA_RESP_DUPLICATE_HANDLE: return "VIRTIO_MAGMA_RESP_DUPLICATE_HANDLE";
		case VIRTIO_MAGMA_CMD_RELEASE_BUFFER_HANDLE: return "VIRTIO_MAGMA_CMD_RELEASE_BUFFER_HANDLE";
		case VIRTIO_MAGMA_RESP_RELEASE_BUFFER_HANDLE: return "VIRTIO_MAGMA_RESP_RELEASE_BUFFER_HANDLE";
		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_GET_BUFFER_IS_MAPPABLE: return "VIRTIO_MAGMA_CMD_GET_BUFFER_IS_MAPPABLE";
		case VIRTIO_MAGMA_RESP_GET_BUFFER_IS_MAPPABLE: return "VIRTIO_MAGMA_RESP_GET_BUFFER_IS_MAPPABLE";
		case VIRTIO_MAGMA_CMD_SET_BUFFER_MAPPING_ADDRESS_RANGE: return "VIRTIO_MAGMA_CMD_SET_BUFFER_MAPPING_ADDRESS_RANGE";
		case VIRTIO_MAGMA_RESP_SET_BUFFER_MAPPING_ADDRESS_RANGE: return "VIRTIO_MAGMA_RESP_SET_BUFFER_MAPPING_ADDRESS_RANGE";
		case VIRTIO_MAGMA_CMD_MAP: return "VIRTIO_MAGMA_CMD_MAP";
		case VIRTIO_MAGMA_RESP_MAP: return "VIRTIO_MAGMA_RESP_MAP";
		case VIRTIO_MAGMA_CMD_MAP_ALIGNED: return "VIRTIO_MAGMA_CMD_MAP_ALIGNED";
		case VIRTIO_MAGMA_RESP_MAP_ALIGNED: return "VIRTIO_MAGMA_RESP_MAP_ALIGNED";
		case VIRTIO_MAGMA_CMD_MAP_SPECIFIC: return "VIRTIO_MAGMA_CMD_MAP_SPECIFIC";
		case VIRTIO_MAGMA_RESP_MAP_SPECIFIC: return "VIRTIO_MAGMA_RESP_MAP_SPECIFIC";
		case VIRTIO_MAGMA_CMD_UNMAP: return "VIRTIO_MAGMA_CMD_UNMAP";
		case VIRTIO_MAGMA_RESP_UNMAP: return "VIRTIO_MAGMA_RESP_UNMAP";
		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_COMMIT_BUFFER: return "VIRTIO_MAGMA_CMD_COMMIT_BUFFER";
		case VIRTIO_MAGMA_RESP_COMMIT_BUFFER: return "VIRTIO_MAGMA_RESP_COMMIT_BUFFER";
		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_CREATE_COMMAND_BUFFER: return "VIRTIO_MAGMA_CMD_CREATE_COMMAND_BUFFER";
		case VIRTIO_MAGMA_RESP_CREATE_COMMAND_BUFFER: return "VIRTIO_MAGMA_RESP_CREATE_COMMAND_BUFFER";
		case VIRTIO_MAGMA_CMD_RELEASE_COMMAND_BUFFER: return "VIRTIO_MAGMA_CMD_RELEASE_COMMAND_BUFFER";
		case VIRTIO_MAGMA_RESP_RELEASE_COMMAND_BUFFER: return "VIRTIO_MAGMA_RESP_RELEASE_COMMAND_BUFFER";
		case VIRTIO_MAGMA_CMD_SUBMIT_COMMAND_BUFFER: return "VIRTIO_MAGMA_CMD_SUBMIT_COMMAND_BUFFER";
		case VIRTIO_MAGMA_RESP_SUBMIT_COMMAND_BUFFER: return "VIRTIO_MAGMA_RESP_SUBMIT_COMMAND_BUFFER";
		case VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES: return "VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES";
		case VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES: return "VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES";
		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_WAIT_SEMAPHORES: return "VIRTIO_MAGMA_CMD_WAIT_SEMAPHORES";
		case VIRTIO_MAGMA_RESP_WAIT_SEMAPHORES: return "VIRTIO_MAGMA_RESP_WAIT_SEMAPHORES";
		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_WAIT_NOTIFICATION_CHANNEL: return "VIRTIO_MAGMA_CMD_WAIT_NOTIFICATION_CHANNEL";
		case VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL: return "VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL";
		case VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL: return "VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL";
		case VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL: return "VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL";
		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_QUERY: return VIRTIO_MAGMA_RESP_QUERY;
		case VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER: return VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER;
		case VIRTIO_MAGMA_CMD_CREATE_CONNECTION: return VIRTIO_MAGMA_RESP_CREATE_CONNECTION;
		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_DUPLICATE_HANDLE: return VIRTIO_MAGMA_RESP_DUPLICATE_HANDLE;
		case VIRTIO_MAGMA_CMD_RELEASE_BUFFER_HANDLE: return VIRTIO_MAGMA_RESP_RELEASE_BUFFER_HANDLE;
		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_GET_BUFFER_IS_MAPPABLE: return VIRTIO_MAGMA_RESP_GET_BUFFER_IS_MAPPABLE;
		case VIRTIO_MAGMA_CMD_SET_BUFFER_MAPPING_ADDRESS_RANGE: return VIRTIO_MAGMA_RESP_SET_BUFFER_MAPPING_ADDRESS_RANGE;
		case VIRTIO_MAGMA_CMD_MAP: return VIRTIO_MAGMA_RESP_MAP;
		case VIRTIO_MAGMA_CMD_MAP_ALIGNED: return VIRTIO_MAGMA_RESP_MAP_ALIGNED;
		case VIRTIO_MAGMA_CMD_MAP_SPECIFIC: return VIRTIO_MAGMA_RESP_MAP_SPECIFIC;
		case VIRTIO_MAGMA_CMD_UNMAP: return VIRTIO_MAGMA_RESP_UNMAP;
		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_COMMIT_BUFFER: return VIRTIO_MAGMA_RESP_COMMIT_BUFFER;
		case VIRTIO_MAGMA_CMD_EXPORT: return VIRTIO_MAGMA_RESP_EXPORT;
		case VIRTIO_MAGMA_CMD_IMPORT: return VIRTIO_MAGMA_RESP_IMPORT;
		case VIRTIO_MAGMA_CMD_CREATE_COMMAND_BUFFER: return VIRTIO_MAGMA_RESP_CREATE_COMMAND_BUFFER;
		case VIRTIO_MAGMA_CMD_RELEASE_COMMAND_BUFFER: return VIRTIO_MAGMA_RESP_RELEASE_COMMAND_BUFFER;
		case VIRTIO_MAGMA_CMD_SUBMIT_COMMAND_BUFFER: return VIRTIO_MAGMA_RESP_SUBMIT_COMMAND_BUFFER;
		case VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES: return VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES;
		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_WAIT_SEMAPHORES: return VIRTIO_MAGMA_RESP_WAIT_SEMAPHORES;
		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_WAIT_NOTIFICATION_CHANNEL: return VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL;
		case VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL: return VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL;
		default: return VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND;
	}
}

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

struct virtio_magma_query_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 file_descriptor;
	__le64 id;
} __attribute((packed));

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

struct virtio_magma_query_returns_buffer_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 file_descriptor;
	__le64 id;
} __attribute((packed));

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

struct virtio_magma_create_connection_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 file_descriptor;
} __attribute((packed));

struct virtio_magma_create_connection_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection_out;
	__le64 result_return;
} __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;
	__le64 context_id_out;
} __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;
	__le64 size_out;
	__le64 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_duplicate_handle_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 buffer_handle;
} __attribute((packed));

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

struct virtio_magma_release_buffer_handle_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 buffer_handle;
} __attribute((packed));

struct virtio_magma_release_buffer_handle_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __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;
	__le64 cache_policy_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_get_buffer_is_mappable_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
	__le32 flags;
} __attribute((packed));

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

struct virtio_magma_set_buffer_mapping_address_range_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
	__le32 handle;
} __attribute((packed));

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

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

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

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

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

struct virtio_magma_map_specific_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le64 addr;
	__le64 offset;
	__le64 length;
} __attribute((packed));

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

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

struct virtio_magma_unmap_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__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;
} __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_commit_buffer_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le64 page_offset;
	__le64 page_count;
} __attribute((packed));

struct virtio_magma_commit_buffer_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;
	__le64 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;
	__le64 buffer_out;
	__le64 result_return;
} __attribute((packed));

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

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

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

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

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

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

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

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

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

struct virtio_magma_execute_immediate_commands2_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __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;
	__le64 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_wait_semaphores_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 semaphores;
	__le32 count;
	__le64 timeout_ms;
	u8 wait_all;
} __attribute((packed));

struct virtio_magma_wait_semaphores_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __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;
	__le64 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;
	__le64 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_wait_notification_channel_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 timeout_ns;
} __attribute((packed));

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

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

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

#endif /* _LINUX_VIRTIO_MAGMA_H */
