[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 */