blob: 64e8c42ece0255a36c99ed2c2b54150b5bd660dc [file] [log] [blame]
/* 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 */