[virtio_magma] Update to latest API

Removes magma_wait_semaphores.
The new APIs aren't tested on Linux yet so we ignore them.

Bug:62444

Change-Id: I366cf8cb5fa83395b7b7fc22704652682599c7a8
diff --git a/drivers/virtio/virtio_magma.c b/drivers/virtio/virtio_magma.c
index 6d12129..58f5c31 100644
--- a/drivers/virtio/virtio_magma.c
+++ b/drivers/virtio/virtio_magma.c
@@ -1040,40 +1040,6 @@
 	return 0;
 }
 
-static int virtmagma_command_magma_wait_semaphores(
-	struct virtmagma_instance *instance,
-	struct virtmagma_virtio_command *command)
-{
-	int ret;
-	size_t semaphores_size;
-	struct virtio_magma_wait_semaphores_ctrl *request =
-		command->request_ptr;
-	struct virtio_magma_wait_semaphores_resp *response =
-		command->response_ptr;
-
-	if (!COMMAND_OK(command, request, response))
-		return -EINVAL;
-
-	/* reallocate request buffer with enough space for the semaphores */
-	semaphores_size = request->count * sizeof(uint64_t);
-	command->request_size = sizeof(*request) + semaphores_size;
-	command->request_ptr = kzalloc(command->request_size, GFP_KERNEL);
-	if (!command->request_ptr)
-		return -ENOMEM;
-
-	memcpy(command->request_ptr, request, sizeof(*request));
-	ret = copy_from_user((char *)command->request_ptr + sizeof(*request),
-			     (void *)request->semaphores, semaphores_size);
-	if (ret)
-		return ret;
-
-	ret = vq_out_send_sync(instance->vi, command);
-	if (ret)
-		return ret;
-
-	return virtmagma_check_expected_response_type(request, response);
-}
-
 static int
 	virtmagma_command_magma_poll(struct virtmagma_instance *instance,
 				     struct virtmagma_virtio_command *command)
@@ -1337,10 +1303,6 @@
 	case VIRTIO_MAGMA_CMD_MAP:
 		ret = virtmagma_command_magma_map(instance, &command);
 		break;
-	case VIRTIO_MAGMA_CMD_WAIT_SEMAPHORES:
-		ret = virtmagma_command_magma_wait_semaphores(instance,
-							      &command);
-		break;
 	case VIRTIO_MAGMA_CMD_POLL:
 		ret = virtmagma_command_magma_poll(instance, &command);
 		break;
@@ -1368,7 +1330,6 @@
 	case VIRTIO_MAGMA_CMD_SIGNAL_SEMAPHORE:
 	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:
 	case VIRTIO_MAGMA_CMD_RELEASE_BUFFER_HANDLE:
diff --git a/include/uapi/linux/virtio_magma.h b/include/uapi/linux/virtio_magma.h
index fcf55b1..afb67ee 100644
--- a/include/uapi/linux/virtio_magma.h
+++ b/include/uapi/linux/virtio_magma.h
@@ -1,9 +1,11 @@
 /* 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. */
+   found in the LICENSE file.
+ */
 
 /* NOTE: DO NOT EDIT THIS FILE! It is generated automatically by:
-     //src/graphics/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
@@ -17,7 +19,8 @@
 } __attribute((packed));
 
 enum virtio_magma_ctrl_type {
-	/* magma commands */
+	/* magma commands
+ */
 	VIRTIO_MAGMA_CMD_RELEASE_CONNECTION = 0x1004,
 	VIRTIO_MAGMA_CMD_GET_ERROR = 0x1005,
 	VIRTIO_MAGMA_CMD_CREATE_CONTEXT = 0x1006,
@@ -49,11 +52,9 @@
 	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,
 	VIRTIO_MAGMA_CMD_INITIALIZE_TRACING = 0x102D,
 	VIRTIO_MAGMA_CMD_DEVICE_IMPORT = 0x102E,
@@ -63,7 +64,22 @@
 	VIRTIO_MAGMA_CMD_CREATE_CONNECTION2 = 0x1032,
 	VIRTIO_MAGMA_CMD_INITIALIZE_LOGGING = 0x1033,
 	VIRTIO_MAGMA_CMD_POLL = 0x1034,
-	/* magma success responses */
+	VIRTIO_MAGMA_CMD_CONNECTION_ACCESS_PERFORMANCE_COUNTERS = 0x1035,
+	VIRTIO_MAGMA_CMD_MAP_CONSTRAINED = 0x1036,
+	VIRTIO_MAGMA_CMD_BUFFER_SET_PADDING = 0x1037,
+	VIRTIO_MAGMA_CMD_CONNECTION_ENABLE_PERFORMANCE_COUNTERS = 0x1038,
+	VIRTIO_MAGMA_CMD_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL = 0x1039,
+	VIRTIO_MAGMA_CMD_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL = 0x103A,
+	VIRTIO_MAGMA_CMD_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL = 0x103B,
+	VIRTIO_MAGMA_CMD_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL = 0x103C,
+	VIRTIO_MAGMA_CMD_CONNECTION_DUMP_PERFORMANCE_COUNTERS = 0x103D,
+	VIRTIO_MAGMA_CMD_CONNECTION_CLEAR_PERFORMANCE_COUNTERS = 0x103E,
+	VIRTIO_MAGMA_CMD_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION = 0x103F,
+	VIRTIO_MAGMA_CMD_BUFFER_SET_NAME = 0x1040,
+	VIRTIO_MAGMA_CMD_BUFFER_RANGE_OP = 0x1041,
+	VIRTIO_MAGMA_CMD_BUFFER_GET_INFO = 0x1042,
+	/* magma success responses
+ */
 	VIRTIO_MAGMA_RESP_RELEASE_CONNECTION = 0x2004,
 	VIRTIO_MAGMA_RESP_GET_ERROR = 0x2005,
 	VIRTIO_MAGMA_RESP_CREATE_CONTEXT = 0x2006,
@@ -95,11 +111,9 @@
 	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,
 	VIRTIO_MAGMA_RESP_INITIALIZE_TRACING = 0x202D,
 	VIRTIO_MAGMA_RESP_DEVICE_IMPORT = 0x202E,
@@ -109,7 +123,22 @@
 	VIRTIO_MAGMA_RESP_CREATE_CONNECTION2 = 0x2032,
 	VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING = 0x2033,
 	VIRTIO_MAGMA_RESP_POLL = 0x2034,
-	/* magma error responses */
+	VIRTIO_MAGMA_RESP_CONNECTION_ACCESS_PERFORMANCE_COUNTERS = 0x2035,
+	VIRTIO_MAGMA_RESP_MAP_CONSTRAINED = 0x2036,
+	VIRTIO_MAGMA_RESP_BUFFER_SET_PADDING = 0x2037,
+	VIRTIO_MAGMA_RESP_CONNECTION_ENABLE_PERFORMANCE_COUNTERS = 0x2038,
+	VIRTIO_MAGMA_RESP_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL = 0x2039,
+	VIRTIO_MAGMA_RESP_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL = 0x203A,
+	VIRTIO_MAGMA_RESP_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL = 0x203B,
+	VIRTIO_MAGMA_RESP_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL = 0x203C,
+	VIRTIO_MAGMA_RESP_CONNECTION_DUMP_PERFORMANCE_COUNTERS = 0x203D,
+	VIRTIO_MAGMA_RESP_CONNECTION_CLEAR_PERFORMANCE_COUNTERS = 0x203E,
+	VIRTIO_MAGMA_RESP_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION = 0x203F,
+	VIRTIO_MAGMA_RESP_BUFFER_SET_NAME = 0x2040,
+	VIRTIO_MAGMA_RESP_BUFFER_RANGE_OP = 0x2041,
+	VIRTIO_MAGMA_RESP_BUFFER_GET_INFO = 0x2042,
+	/* magma error responses
+ */
 	VIRTIO_MAGMA_RESP_ERR_UNIMPLEMENTED = 0x3001,
 	VIRTIO_MAGMA_RESP_ERR_INTERNAL = 0x3002,
 	VIRTIO_MAGMA_RESP_ERR_HOST_DISCONNECTED = 0x3003,
@@ -182,16 +211,12 @@
 		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_CMD_INITIALIZE_TRACING: return "VIRTIO_MAGMA_CMD_INITIALIZE_TRACING";
@@ -210,6 +235,34 @@
 		case VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING: return "VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING";
 		case VIRTIO_MAGMA_CMD_POLL: return "VIRTIO_MAGMA_CMD_POLL";
 		case VIRTIO_MAGMA_RESP_POLL: return "VIRTIO_MAGMA_RESP_POLL";
+		case VIRTIO_MAGMA_CMD_CONNECTION_ACCESS_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_CMD_CONNECTION_ACCESS_PERFORMANCE_COUNTERS";
+		case VIRTIO_MAGMA_RESP_CONNECTION_ACCESS_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_RESP_CONNECTION_ACCESS_PERFORMANCE_COUNTERS";
+		case VIRTIO_MAGMA_CMD_MAP_CONSTRAINED: return "VIRTIO_MAGMA_CMD_MAP_CONSTRAINED";
+		case VIRTIO_MAGMA_RESP_MAP_CONSTRAINED: return "VIRTIO_MAGMA_RESP_MAP_CONSTRAINED";
+		case VIRTIO_MAGMA_CMD_BUFFER_SET_PADDING: return "VIRTIO_MAGMA_CMD_BUFFER_SET_PADDING";
+		case VIRTIO_MAGMA_RESP_BUFFER_SET_PADDING: return "VIRTIO_MAGMA_RESP_BUFFER_SET_PADDING";
+		case VIRTIO_MAGMA_CMD_CONNECTION_ENABLE_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_CMD_CONNECTION_ENABLE_PERFORMANCE_COUNTERS";
+		case VIRTIO_MAGMA_RESP_CONNECTION_ENABLE_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_RESP_CONNECTION_ENABLE_PERFORMANCE_COUNTERS";
+		case VIRTIO_MAGMA_CMD_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL: return "VIRTIO_MAGMA_CMD_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL";
+		case VIRTIO_MAGMA_RESP_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL: return "VIRTIO_MAGMA_RESP_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL";
+		case VIRTIO_MAGMA_CMD_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL: return "VIRTIO_MAGMA_CMD_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL";
+		case VIRTIO_MAGMA_RESP_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL: return "VIRTIO_MAGMA_RESP_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL";
+		case VIRTIO_MAGMA_CMD_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL: return "VIRTIO_MAGMA_CMD_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL";
+		case VIRTIO_MAGMA_RESP_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL: return "VIRTIO_MAGMA_RESP_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL";
+		case VIRTIO_MAGMA_CMD_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL: return "VIRTIO_MAGMA_CMD_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL";
+		case VIRTIO_MAGMA_RESP_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL: return "VIRTIO_MAGMA_RESP_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL";
+		case VIRTIO_MAGMA_CMD_CONNECTION_DUMP_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_CMD_CONNECTION_DUMP_PERFORMANCE_COUNTERS";
+		case VIRTIO_MAGMA_RESP_CONNECTION_DUMP_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_RESP_CONNECTION_DUMP_PERFORMANCE_COUNTERS";
+		case VIRTIO_MAGMA_CMD_CONNECTION_CLEAR_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_CMD_CONNECTION_CLEAR_PERFORMANCE_COUNTERS";
+		case VIRTIO_MAGMA_RESP_CONNECTION_CLEAR_PERFORMANCE_COUNTERS: return "VIRTIO_MAGMA_RESP_CONNECTION_CLEAR_PERFORMANCE_COUNTERS";
+		case VIRTIO_MAGMA_CMD_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION: return "VIRTIO_MAGMA_CMD_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION";
+		case VIRTIO_MAGMA_RESP_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION: return "VIRTIO_MAGMA_RESP_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION";
+		case VIRTIO_MAGMA_CMD_BUFFER_SET_NAME: return "VIRTIO_MAGMA_CMD_BUFFER_SET_NAME";
+		case VIRTIO_MAGMA_RESP_BUFFER_SET_NAME: return "VIRTIO_MAGMA_RESP_BUFFER_SET_NAME";
+		case VIRTIO_MAGMA_CMD_BUFFER_RANGE_OP: return "VIRTIO_MAGMA_CMD_BUFFER_RANGE_OP";
+		case VIRTIO_MAGMA_RESP_BUFFER_RANGE_OP: return "VIRTIO_MAGMA_RESP_BUFFER_RANGE_OP";
+		case VIRTIO_MAGMA_CMD_BUFFER_GET_INFO: return "VIRTIO_MAGMA_CMD_BUFFER_GET_INFO";
+		case VIRTIO_MAGMA_RESP_BUFFER_GET_INFO: return "VIRTIO_MAGMA_RESP_BUFFER_GET_INFO";
 		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";
@@ -253,11 +306,9 @@
 		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;
 		case VIRTIO_MAGMA_CMD_INITIALIZE_TRACING: return VIRTIO_MAGMA_RESP_INITIALIZE_TRACING;
 		case VIRTIO_MAGMA_CMD_DEVICE_IMPORT: return VIRTIO_MAGMA_RESP_DEVICE_IMPORT;
@@ -267,6 +318,20 @@
 		case VIRTIO_MAGMA_CMD_CREATE_CONNECTION2: return VIRTIO_MAGMA_RESP_CREATE_CONNECTION2;
 		case VIRTIO_MAGMA_CMD_INITIALIZE_LOGGING: return VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING;
 		case VIRTIO_MAGMA_CMD_POLL: return VIRTIO_MAGMA_RESP_POLL;
+		case VIRTIO_MAGMA_CMD_CONNECTION_ACCESS_PERFORMANCE_COUNTERS: return VIRTIO_MAGMA_RESP_CONNECTION_ACCESS_PERFORMANCE_COUNTERS;
+		case VIRTIO_MAGMA_CMD_MAP_CONSTRAINED: return VIRTIO_MAGMA_RESP_MAP_CONSTRAINED;
+		case VIRTIO_MAGMA_CMD_BUFFER_SET_PADDING: return VIRTIO_MAGMA_RESP_BUFFER_SET_PADDING;
+		case VIRTIO_MAGMA_CMD_CONNECTION_ENABLE_PERFORMANCE_COUNTERS: return VIRTIO_MAGMA_RESP_CONNECTION_ENABLE_PERFORMANCE_COUNTERS;
+		case VIRTIO_MAGMA_CMD_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL: return VIRTIO_MAGMA_RESP_CONNECTION_CREATE_PERFORMANCE_COUNTER_BUFFER_POOL;
+		case VIRTIO_MAGMA_CMD_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL: return VIRTIO_MAGMA_RESP_CONNECTION_RELEASE_PERFORMANCE_COUNTER_BUFFER_POOL;
+		case VIRTIO_MAGMA_CMD_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL: return VIRTIO_MAGMA_RESP_CONNECTION_ADD_PERFORMANCE_COUNTER_BUFFER_OFFSETS_TO_POOL;
+		case VIRTIO_MAGMA_CMD_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL: return VIRTIO_MAGMA_RESP_CONNECTION_REMOVE_PERFORMANCE_COUNTER_BUFFER_FROM_POOL;
+		case VIRTIO_MAGMA_CMD_CONNECTION_DUMP_PERFORMANCE_COUNTERS: return VIRTIO_MAGMA_RESP_CONNECTION_DUMP_PERFORMANCE_COUNTERS;
+		case VIRTIO_MAGMA_CMD_CONNECTION_CLEAR_PERFORMANCE_COUNTERS: return VIRTIO_MAGMA_RESP_CONNECTION_CLEAR_PERFORMANCE_COUNTERS;
+		case VIRTIO_MAGMA_CMD_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION: return VIRTIO_MAGMA_RESP_CONNECTION_READ_PERFORMANCE_COUNTER_COMPLETION;
+		case VIRTIO_MAGMA_CMD_BUFFER_SET_NAME: return VIRTIO_MAGMA_RESP_BUFFER_SET_NAME;
+		case VIRTIO_MAGMA_CMD_BUFFER_RANGE_OP: return VIRTIO_MAGMA_RESP_BUFFER_RANGE_OP;
+		case VIRTIO_MAGMA_CMD_BUFFER_GET_INFO: return VIRTIO_MAGMA_RESP_BUFFER_GET_INFO;
 		default: return VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND;
 	}
 }
@@ -623,19 +688,6 @@
 	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;
@@ -670,17 +722,6 @@
 	__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;
@@ -781,4 +822,181 @@
 	__le64 result_return;
 } __attribute((packed));
 
-#endif /* _LINUX_VIRTIO_MAGMA_H */
+struct virtio_magma_connection_access_performance_counters_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le32 channel;
+} __attribute((packed));
+
+struct virtio_magma_connection_access_performance_counters_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_map_constrained_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 buffer;
+	__le64 length;
+	__le64 upper_limit;
+	__le64 alignment;
+} __attribute((packed));
+
+struct virtio_magma_map_constrained_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 addr_out;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_buffer_set_padding_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 buffer;
+	__le64 padding;
+} __attribute((packed));
+
+struct virtio_magma_buffer_set_padding_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_connection_enable_performance_counters_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 counters;
+	__le64 counters_count;
+} __attribute((packed));
+
+struct virtio_magma_connection_enable_performance_counters_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_connection_create_performance_counter_buffer_pool_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+} __attribute((packed));
+
+struct virtio_magma_connection_create_performance_counter_buffer_pool_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 pool_out;
+	__le64 notification_handle_out;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_connection_release_performance_counter_buffer_pool_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 pool;
+} __attribute((packed));
+
+struct virtio_magma_connection_release_performance_counter_buffer_pool_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_connection_add_performance_counter_buffer_offsets_to_pool_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 pool;
+	__le64 offsets;
+	__le64 offsets_count;
+} __attribute((packed));
+
+struct virtio_magma_connection_add_performance_counter_buffer_offsets_to_pool_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_connection_remove_performance_counter_buffer_from_pool_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 pool_id;
+	__le64 buffer;
+} __attribute((packed));
+
+struct virtio_magma_connection_remove_performance_counter_buffer_from_pool_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_connection_dump_performance_counters_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 pool;
+	__le32 trigger_id;
+} __attribute((packed));
+
+struct virtio_magma_connection_dump_performance_counters_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_connection_clear_performance_counters_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 counters;
+	__le64 counters_count;
+} __attribute((packed));
+
+struct virtio_magma_connection_clear_performance_counters_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_connection_read_performance_counter_completion_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 pool;
+} __attribute((packed));
+
+struct virtio_magma_connection_read_performance_counter_completion_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 trigger_id_out;
+	__le64 buffer_id_out;
+	__le64 buffer_offset_out;
+	__le64 time_out;
+	__le64 result_flags_out;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_buffer_set_name_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 buffer;
+	__le64 name;
+} __attribute((packed));
+
+struct virtio_magma_buffer_set_name_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_buffer_range_op_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 buffer;
+	__le32 options;
+	__le64 start_offset;
+	__le64 length;
+} __attribute((packed));
+
+struct virtio_magma_buffer_range_op_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 result_return;
+} __attribute((packed));
+
+struct virtio_magma_buffer_get_info_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+	__le64 buffer;
+} __attribute((packed));
+
+struct virtio_magma_buffer_get_info_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 info_out;
+	__le64 result_return;
+} __attribute((packed));
+
+#endif /* _LINUX_VIRTIO_MAGMA_H
+ */