[virtmagma] Update for magma_device_t
This type was introduced to avoid file descriptors in the API.
Add magma_device_import and magma_device_release.
Update to magma_create_connection2 and magma_query2.
Change-Id: I5191892697f9ba43db640a9942f2f9406b525621
diff --git a/drivers/virtio/virtio_magma.c b/drivers/virtio/virtio_magma.c
index 30e2f8b..f2acf12 100644
--- a/drivers/virtio/virtio_magma.c
+++ b/drivers/virtio/virtio_magma.c
@@ -599,15 +599,15 @@
return ret;
}
-static int virtmagma_command_magma_create_connection(
+static int virtmagma_command_magma_create_connection2(
struct virtmagma_instance *instance,
struct virtmagma_virtio_command *command)
{
int ret;
struct virtmagma_connection *connection;
- struct virtio_magma_create_connection_ctrl *request =
+ struct virtio_magma_create_connection2_ctrl *request =
command->request_ptr;
- struct virtio_magma_create_connection_resp *response =
+ struct virtio_magma_create_connection2_resp *response =
command->response_ptr;
if (!COMMAND_OK(command, request, response))
@@ -1257,8 +1257,8 @@
request_type = control_type(command.request_ptr);
switch (request_type) {
- case VIRTIO_MAGMA_CMD_CREATE_CONNECTION:
- ret = virtmagma_command_magma_create_connection(instance,
+ case VIRTIO_MAGMA_CMD_CREATE_CONNECTION2:
+ ret = virtmagma_command_magma_create_connection2(instance,
&command);
break;
case VIRTIO_MAGMA_CMD_RELEASE_CONNECTION:
@@ -1307,7 +1307,7 @@
ret = virtmagma_command_magma_export(instance, &command);
break;
/* pass-through handlers */
- case VIRTIO_MAGMA_CMD_QUERY:
+ case VIRTIO_MAGMA_CMD_QUERY2:
case VIRTIO_MAGMA_CMD_GET_ERROR:
case VIRTIO_MAGMA_CMD_GET_BUFFER_ID:
case VIRTIO_MAGMA_CMD_GET_BUFFER_SIZE:
@@ -1324,6 +1324,8 @@
case VIRTIO_MAGMA_CMD_RESET_SEMAPHORE:
case VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE:
case VIRTIO_MAGMA_CMD_WAIT_NOTIFICATION_CHANNEL:
+ case VIRTIO_MAGMA_CMD_DEVICE_IMPORT:
+ case VIRTIO_MAGMA_CMD_DEVICE_RELEASE:
ret = vq_out_send_sync(instance->vi, &command);
if (!ret)
ret = virtmagma_check_expected_response_type(
diff --git a/include/uapi/linux/virtio_magma.h b/include/uapi/linux/virtio_magma.h
index 7ac95f9..451566ea 100644
--- a/include/uapi/linux/virtio_magma.h
+++ b/include/uapi/linux/virtio_magma.h
@@ -3,7 +3,7 @@
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 */
+ //src/graphics/lib/magma/include/virtio/virtio_magma.h.gen.py */
#ifndef _LINUX_VIRTIO_MAGMA_H
#define _LINUX_VIRTIO_MAGMA_H
@@ -18,9 +18,6 @@
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,
@@ -58,10 +55,14 @@
VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE = 0x102A,
VIRTIO_MAGMA_CMD_WAIT_NOTIFICATION_CHANNEL = 0x102B,
VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL = 0x102C,
+ 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,
/* 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,
@@ -99,6 +100,13 @@
VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE = 0x202A,
VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL = 0x202B,
VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL = 0x202C,
+ 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,
/* magma error responses */
VIRTIO_MAGMA_RESP_ERR_UNIMPLEMENTED = 0x3001,
VIRTIO_MAGMA_RESP_ERR_INTERNAL = 0x3002,
@@ -110,12 +118,6 @@
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";
@@ -190,6 +192,20 @@
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_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_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";
@@ -202,9 +218,6 @@
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;
@@ -242,6 +255,13 @@
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;
+ 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;
default: return VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND;
}
}
@@ -251,41 +271,6 @@
__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;
@@ -532,6 +517,7 @@
struct virtio_magma_commit_buffer_resp {
struct virtio_magma_ctrl_hdr hdr;
+ __le64 result_return;
} __attribute((packed));
struct virtio_magma_export_ctrl {
@@ -703,4 +689,79 @@
__le64 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;
+ __le64 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;
+ __le64 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;
+ __le64 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;
+ __le64 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));
+
#endif /* _LINUX_VIRTIO_MAGMA_H */