[virtio_magma] Add Sync, removed unused APIs

Change-Id: I92f0be70ed93582dde8325b0233f088c5149e2be
diff --git a/drivers/virtio/virtio_magma.c b/drivers/virtio/virtio_magma.c
index dc655cd..49f5b3f 100644
--- a/drivers/virtio/virtio_magma.c
+++ b/drivers/virtio/virtio_magma.c
@@ -1153,12 +1153,10 @@
 {
 	int ret;
 	struct virtmagma_connection *connection;
-	struct virtmagma_connection_object *object;
 	struct virtio_magma_export_semaphore_ctrl *request =
 		command->request_ptr;
 	struct virtio_magma_export_semaphore_resp *response =
 		command->response_ptr;
-	struct virtmagma_semaphore_fd_priv *priv;
 
 	if (!COMMAND_OK(command, request, response))
 		return -EINVAL;
@@ -1222,54 +1220,6 @@
 			    items_size);
 }
 
-static int virtmagma_command_magma_read_notification_channel(
-	struct virtmagma_instance *instance,
-	struct virtmagma_virtio_command *command)
-{
-	int ret;
-	struct virtio_magma_read_notification_channel_ctrl *request =
-		command->request_ptr;
-	struct virtio_magma_read_notification_channel_resp *response =
-		command->response_ptr;
-
-	if (!COMMAND_OK(command, request, response))
-		return -EINVAL;
-
-	/* reallocate response buffer with additional space for notification data.
-	   note that the size is not modified, as we only want the response struct
-	   itself to be copied back to the user by our caller */
-
-	command->response_ptr = response =
-		kzalloc(sizeof(*response) + NOTIFICATION_MAX_BYTES, GFP_KERNEL);
-	if (!command->response_ptr)
-		return -ENOMEM;
-
-	ret = vq_out_send_sync(instance->vi, command);
-	if (ret)
-		return ret;
-
-	ret = virtmagma_check_expected_response_type(request, response);
-	if (ret)
-		return ret;
-
-	/* pass on magma errors without writing to the buffer */
-	if (response->result_return) {
-		pr_warn("virtmagma: magma_read_notification_channel returned %d",
-			(int32_t)response->result_return);
-		return 0; /* the ioctl is still successful */
-	}
-
-	if (response->buffer_size_out > request->buffer_size) {
-		pr_err("virtmagma: magma_read_notification_channel returned buffer_size_out (%lu) larger than buffer_size (%lld)",
-		       response->buffer_size_out, request->buffer_size);
-		return -EIO;
-	}
-
-	return copy_to_user((void *)request->buffer,
-			    (char *)command->response_ptr + sizeof(*response),
-			    response->buffer_size_out);
-}
-
 static int virtmagma_command_magma_read_notification_channel2(
 	struct virtmagma_instance *instance,
 	struct virtmagma_virtio_command *command)
@@ -1796,10 +1746,6 @@
 	case VIRTIO_MAGMA_CMD_POLL:
 		ret = virtmagma_command_magma_poll(instance, &command);
 		break;
-	case VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL:
-		ret = virtmagma_command_magma_read_notification_channel(
-			instance, &command);
-		break;
 	case VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL2:
 		ret = virtmagma_command_magma_read_notification_channel2(
 			instance, &command);
@@ -1825,6 +1771,7 @@
 	/* pass-through handlers */
 	case VIRTIO_MAGMA_CMD_QUERY2:
 	case VIRTIO_MAGMA_CMD_GET_ERROR:
+	case VIRTIO_MAGMA_CMD_SYNC:
 	case VIRTIO_MAGMA_CMD_GET_BUFFER_ID:
 	case VIRTIO_MAGMA_CMD_GET_BUFFER_SIZE:
 	case VIRTIO_MAGMA_CMD_CLEAN_CACHE:
@@ -1839,7 +1786,6 @@
 	case VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE:
 	case VIRTIO_MAGMA_CMD_DEVICE_IMPORT:
 	case VIRTIO_MAGMA_CMD_DEVICE_RELEASE:
-	case VIRTIO_MAGMA_CMD_RELEASE_BUFFER_HANDLE:
 		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 93cb232..7925f9d 100644
--- a/include/uapi/linux/virtio_magma.h
+++ b/include/uapi/linux/virtio_magma.h
@@ -27,7 +27,6 @@
 	VIRTIO_MAGMA_CMD_RELEASE_CONTEXT = 0x1007,
 	VIRTIO_MAGMA_CMD_CREATE_BUFFER = 0x1008,
 	VIRTIO_MAGMA_CMD_RELEASE_BUFFER = 0x1009,
-	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,
@@ -48,7 +47,6 @@
 	VIRTIO_MAGMA_CMD_EXPORT_SEMAPHORE = 0x1028,
 	VIRTIO_MAGMA_CMD_IMPORT_SEMAPHORE = 0x1029,
 	VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE = 0x102A,
-	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,
@@ -73,6 +71,7 @@
 	VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL2 = 0x1046,
 	VIRTIO_MAGMA_CMD_VIRT_CREATE_IMAGE = 0x1047,
 	VIRTIO_MAGMA_CMD_VIRT_GET_IMAGE_INFO = 0x1048,
+	VIRTIO_MAGMA_CMD_SYNC = 0x1049,
 	VIRTIO_MAGMA_CMD_INTERNAL_MAP = 0x1044,
 	VIRTIO_MAGMA_CMD_INTERNAL_UNMAP = 0x1045,
 	/* magma success responses
@@ -83,7 +82,6 @@
 	VIRTIO_MAGMA_RESP_RELEASE_CONTEXT = 0x2007,
 	VIRTIO_MAGMA_RESP_CREATE_BUFFER = 0x2008,
 	VIRTIO_MAGMA_RESP_RELEASE_BUFFER = 0x2009,
-	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,
@@ -104,7 +102,6 @@
 	VIRTIO_MAGMA_RESP_EXPORT_SEMAPHORE = 0x2028,
 	VIRTIO_MAGMA_RESP_IMPORT_SEMAPHORE = 0x2029,
 	VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE = 0x202A,
-	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,
@@ -129,6 +126,7 @@
 	VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL2 = 0x2046,
 	VIRTIO_MAGMA_RESP_VIRT_CREATE_IMAGE = 0x2047,
 	VIRTIO_MAGMA_RESP_VIRT_GET_IMAGE_INFO = 0x2048,
+	VIRTIO_MAGMA_RESP_SYNC = 0x2049,
 	VIRTIO_MAGMA_RESP_INTERNAL_MAP = 0x2044,
 	VIRTIO_MAGMA_RESP_INTERNAL_UNMAP = 0x2045,
 	/* magma error responses
@@ -155,8 +153,6 @@
 		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_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";
@@ -197,8 +193,6 @@
 		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_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";
@@ -247,6 +241,8 @@
 		case VIRTIO_MAGMA_RESP_VIRT_CREATE_IMAGE: return "VIRTIO_MAGMA_RESP_VIRT_CREATE_IMAGE";
 		case VIRTIO_MAGMA_CMD_VIRT_GET_IMAGE_INFO: return "VIRTIO_MAGMA_CMD_VIRT_GET_IMAGE_INFO";
 		case VIRTIO_MAGMA_RESP_VIRT_GET_IMAGE_INFO: return "VIRTIO_MAGMA_RESP_VIRT_GET_IMAGE_INFO";
+		case VIRTIO_MAGMA_CMD_SYNC: return "VIRTIO_MAGMA_CMD_SYNC";
+		case VIRTIO_MAGMA_RESP_SYNC: return "VIRTIO_MAGMA_RESP_SYNC";
 		case VIRTIO_MAGMA_CMD_INTERNAL_MAP: return "VIRTIO_MAGMA_CMD_INTERNAL_MAP";
 		case VIRTIO_MAGMA_RESP_INTERNAL_MAP: return "VIRTIO_MAGMA_RESP_INTERNAL_MAP";
 		case VIRTIO_MAGMA_CMD_INTERNAL_UNMAP: return "VIRTIO_MAGMA_CMD_INTERNAL_UNMAP";
@@ -269,7 +265,6 @@
 		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_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;
@@ -290,7 +285,6 @@
 		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_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;
@@ -315,6 +309,7 @@
 		case VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL2: return VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL2;
 		case VIRTIO_MAGMA_CMD_VIRT_CREATE_IMAGE: return VIRTIO_MAGMA_RESP_VIRT_CREATE_IMAGE;
 		case VIRTIO_MAGMA_CMD_VIRT_GET_IMAGE_INFO: return VIRTIO_MAGMA_RESP_VIRT_GET_IMAGE_INFO;
+		case VIRTIO_MAGMA_CMD_SYNC: return VIRTIO_MAGMA_RESP_SYNC;
 		case VIRTIO_MAGMA_CMD_INTERNAL_MAP: return VIRTIO_MAGMA_RESP_INTERNAL_MAP;
 		case VIRTIO_MAGMA_CMD_INTERNAL_UNMAP: return VIRTIO_MAGMA_RESP_INTERNAL_UNMAP;
 		default: return VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND;
@@ -388,16 +383,6 @@
 	struct virtio_magma_ctrl_hdr hdr;
 } __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;
@@ -623,19 +608,6 @@
 	__le32 result_return;
 } __attribute((packed));
 
-struct virtio_magma_read_notification_channel_ctrl {
-	struct virtio_magma_ctrl_hdr hdr;
-	__le64 connection;
-	uintptr_t buffer;
-	__le64 buffer_size;
-} __attribute((packed));
-
-struct virtio_magma_read_notification_channel_resp {
-	struct virtio_magma_ctrl_hdr hdr;
-	uintptr_t buffer_size_out;
-	__le64 result_return;
-} __attribute((packed));
-
 struct virtio_magma_initialize_tracing_ctrl {
 	struct virtio_magma_ctrl_hdr hdr;
 	__le32 channel;
@@ -922,6 +894,16 @@
 	__le64 result_return;
 } __attribute((packed));
 
+struct virtio_magma_sync_ctrl {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 connection;
+} __attribute((packed));
+
+struct virtio_magma_sync_resp {
+	struct virtio_magma_ctrl_hdr hdr;
+	__le64 result_return;
+} __attribute((packed));
+
 struct virtio_magma_internal_map_ctrl {
 	struct virtio_magma_ctrl_hdr hdr;
 	__le64 connection;