/* 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_COMMANDS = 0x1020,
	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_COMMANDS = 0x2020,
	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_COMMANDS: return "VIRTIO_MAGMA_CMD_EXECUTE_IMMEDIATE_COMMANDS";
		case VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS: return "VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS";
		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_COMMANDS: return VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS;
		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_commands_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_commands_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 */
