Remove deprecated command buffer interfaces

Change-Id: I14f536f0a63507723a144e582f04afaac5847472
diff --git a/drivers/virtio/virtio_magma.c b/drivers/virtio/virtio_magma.c
index 7fcb871..30e2f8b 100644
--- a/drivers/virtio/virtio_magma.c
+++ b/drivers/virtio/virtio_magma.c
@@ -61,7 +61,6 @@
 struct virtmagma_buffer {
 	size_t size_requested;
 	size_t size_allocated;
-	bool is_command_buffer;
 };
 
 struct virtmagma_semaphore {
@@ -262,59 +261,6 @@
 	return ret;
 }
 
-static int release_command_buffer(struct virtmagma_buffer *buffer)
-{
-	int ret;
-	struct virtio_magma_release_command_buffer_ctrl *request;
-	struct virtio_magma_release_command_buffer_resp *response;
-	struct virtmagma_virtio_command command;
-	struct virtmagma_connection_object *object = container_of(
-		buffer, struct virtmagma_connection_object, buffer);
-	BUILD_BUG_ON(sizeof(*request) > MESSAGE_CACHE_OBJECT_SIZE);
-	BUILD_BUG_ON(sizeof(*response) > MESSAGE_CACHE_OBJECT_SIZE);
-
-	request = kmem_cache_alloc(
-		object->parent_connection->parent_instance->msg_cache,
-		GFP_KERNEL);
-	if (!request)
-		return -ENOMEM;
-
-	response = kmem_cache_alloc(
-		object->parent_connection->parent_instance->msg_cache,
-		GFP_KERNEL);
-	if (!response) {
-		ret = -ENOMEM;
-		goto free_request;
-	}
-
-	request->hdr.type = VIRTIO_MAGMA_CMD_RELEASE_COMMAND_BUFFER;
-	request->connection = object->parent_connection->host_value;
-	request->command_buffer = object->host_value;
-
-	command.request_ptr = request;
-	command.request_size = sizeof(*request);
-	command.response_ptr = response;
-	command.response_size = sizeof(*response);
-
-	ret = vq_out_send_sync(object->parent_connection->parent_instance->vi,
-			       &command);
-	if (ret)
-		goto free_response;
-
-	if (response->hdr.type != VIRTIO_MAGMA_RESP_RELEASE_COMMAND_BUFFER)
-		ret = -EIO;
-
-free_response:
-	kmem_cache_free(object->parent_connection->parent_instance->msg_cache,
-			response);
-
-free_request:
-	kmem_cache_free(object->parent_connection->parent_instance->msg_cache,
-			request);
-
-	return ret;
-}
-
 static int release_semaphore(struct virtmagma_semaphore *semaphore)
 {
 	int ret;
@@ -430,7 +376,6 @@
 	struct virtio_magma_release_connection_resp *response;
 	struct virtmagma_virtio_command command;
 	uint64_t leaked_buffers = 0;
-	uint64_t leaked_command_buffers = 0;
 	uint64_t leaked_semaphores = 0;
 	uint64_t leaked_contexts = 0;
 
@@ -439,13 +384,8 @@
 	hash_for_each (connection->objects, bkt, object, node) {
 		switch (object->type) {
 		case MAGMA_BUFFER:
-			if (object->buffer.is_command_buffer) {
-				release_command_buffer(&object->buffer);
-				++leaked_command_buffers;
-			} else {
-				release_buffer(&object->buffer);
-				++leaked_buffers;
-			}
+			release_buffer(&object->buffer);
+			++leaked_buffers;
 			break;
 		case MAGMA_CONTEXT:
 			release_context(&object->context);
@@ -461,14 +401,11 @@
 			break;
 		}
 	}
-	if (leaked_buffers || leaked_command_buffers || leaked_semaphores ||
-	    leaked_contexts) {
+	if (leaked_buffers || leaked_semaphores || leaked_contexts) {
 		pr_info("virtmagma: connection %lld from command %s closed with leaked objects:\n",
 			connection->host_value,
 			connection->parent_instance->creator.comm);
 		pr_cont("virtmagma: buffers: %lld\n", leaked_buffers);
-		pr_cont("virtmagma: command buffers: %lld\n",
-			leaked_command_buffers);
 		pr_cont("virtmagma: semaphores: %lld\n", leaked_semaphores);
 		pr_cont("virtmagma: contexts: %lld\n", leaked_contexts);
 	}
@@ -571,10 +508,7 @@
 
 	instance->mmap_params.pending = false;
 
-	if (instance->mmap_params.buffer->is_command_buffer)
-		max_map_size = instance->mmap_params.buffer->size_requested;
-	else
-		max_map_size = instance->mmap_params.buffer->size_allocated;
+	max_map_size = instance->mmap_params.buffer->size_allocated;
 	max_map_size = PAGE_ALIGN(max_map_size);
 
 	if (vm_size > max_map_size) {
@@ -854,7 +788,6 @@
 	object->type = MAGMA_BUFFER;
 	object->buffer.size_requested = request->size;
 	object->buffer.size_allocated = response->size_out;
-	object->buffer.is_command_buffer = false;
 
 	hash_add(connection->objects, &object->node, object->host_value);
 
@@ -898,133 +831,6 @@
 	return 0;
 }
 
-static int virtmagma_command_magma_create_command_buffer(
-	struct virtmagma_instance *instance,
-	struct virtmagma_virtio_command *command)
-{
-	int ret;
-	struct virtmagma_connection *connection;
-	struct virtmagma_connection_object *object;
-	struct virtio_magma_create_command_buffer_ctrl *request =
-		command->request_ptr;
-	struct virtio_magma_create_command_buffer_resp *response =
-		command->response_ptr;
-
-	if (!COMMAND_OK(command, request, response))
-		return -EINVAL;
-
-	connection = get_connection(instance, request->connection);
-	if (!connection)
-		return -EINVAL;
-
-	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 creating a command_buffer object */
-	if (response->result_return) {
-		pr_warn("virtmagma: magma_create_command_buffer returned %d",
-			(int32_t)response->result_return);
-		return 0; /* the ioctl is still successful */
-	}
-
-	object = kzalloc(sizeof(*object), GFP_KERNEL);
-	if (!object)
-		return -ENOMEM;
-
-	object->parent_connection = connection;
-	object->host_value = response->buffer_out;
-	object->type = MAGMA_BUFFER;
-	object->buffer.size_requested = request->size;
-	object->buffer.is_command_buffer = true;
-
-	hash_add(connection->objects, &object->node, object->host_value);
-
-	return 0;
-}
-
-static int virtmagma_command_magma_release_command_buffer(
-	struct virtmagma_instance *instance,
-	struct virtmagma_virtio_command *command)
-{
-	int ret;
-	struct virtmagma_connection *connection = NULL;
-	struct virtmagma_connection_object *object = NULL;
-	struct virtio_magma_release_command_buffer_ctrl *request =
-		command->request_ptr;
-	struct virtio_magma_release_command_buffer_resp *response =
-		command->response_ptr;
-
-	if (!COMMAND_OK(command, request, response))
-		return -EINVAL;
-
-	connection = get_connection(instance, request->connection);
-	if (!connection)
-		return -EINVAL;
-
-	object = get_connection_object(connection, request->command_buffer,
-				       MAGMA_BUFFER);
-	if (!object)
-		return -EINVAL;
-
-	ret = vq_out_send_sync(instance->vi, command);
-	if (ret)
-		return ret;
-
-	ret = virtmagma_check_expected_response_type(request, response);
-	if (ret)
-		return ret;
-
-	hash_del(&object->node);
-	kfree(object);
-
-	return 0;
-}
-
-static int virtmagma_command_magma_submit_command_buffer(
-	struct virtmagma_instance *instance,
-	struct virtmagma_virtio_command *command)
-{
-	int ret;
-	struct virtmagma_connection *connection = NULL;
-	struct virtmagma_connection_object *object = NULL;
-	struct virtio_magma_submit_command_buffer_ctrl *request =
-		command->request_ptr;
-	struct virtio_magma_submit_command_buffer_resp *response =
-		command->response_ptr;
-
-	if (!COMMAND_OK(command, request, response))
-		return -EINVAL;
-
-	connection = get_connection(instance, request->connection);
-	if (!connection)
-		return -EINVAL;
-
-	object = get_connection_object(connection, request->command_buffer,
-				       MAGMA_BUFFER);
-	if (!object)
-		return -EINVAL;
-
-	ret = vq_out_send_sync(instance->vi, command);
-	if (ret)
-		return ret;
-
-	ret = virtmagma_check_expected_response_type(request, response);
-	if (ret)
-		return ret;
-
-	/* command buffers are implicitly freed on submit */
-
-	hash_del(&object->node);
-	kfree(object);
-
-	return 0;
-}
-
 static int virtmagma_command_magma_execute_command_buffer_with_resources(
 	struct virtmagma_instance *instance,
 	struct virtmagma_virtio_command *command)
@@ -1474,18 +1280,6 @@
 		ret = virtmagma_command_magma_release_buffer(instance,
 							     &command);
 		break;
-	case VIRTIO_MAGMA_CMD_CREATE_COMMAND_BUFFER:
-		ret = virtmagma_command_magma_create_command_buffer(instance,
-								    &command);
-		break;
-	case VIRTIO_MAGMA_CMD_RELEASE_COMMAND_BUFFER:
-		ret = virtmagma_command_magma_release_command_buffer(instance,
-								     &command);
-		break;
-	case VIRTIO_MAGMA_CMD_SUBMIT_COMMAND_BUFFER:
-		ret = virtmagma_command_magma_submit_command_buffer(instance,
-								    &command);
-		break;
 	case VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES:
 		ret = virtmagma_command_magma_execute_command_buffer_with_resources(
 			instance, &command);
diff --git a/include/uapi/linux/virtio_magma.h b/include/uapi/linux/virtio_magma.h
index dbba13a..7ac95f9 100644
--- a/include/uapi/linux/virtio_magma.h
+++ b/include/uapi/linux/virtio_magma.h
@@ -45,9 +45,6 @@
 	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_COMMANDS2 = 0x1021,
 	VIRTIO_MAGMA_CMD_CREATE_SEMAPHORE = 0x1022,
@@ -89,9 +86,6 @@
 	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_COMMANDS2 = 0x2021,
 	VIRTIO_MAGMA_RESP_CREATE_SEMAPHORE = 0x2022,
@@ -170,12 +164,6 @@
 		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_COMMANDS2: return "VIRTIO_MAGMA_CMD_EXECUTE_IMMEDIATE_COMMANDS2";
@@ -241,9 +229,6 @@
 		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_COMMANDS2: return VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS2;
 		case VIRTIO_MAGMA_CMD_CREATE_SEMAPHORE: return VIRTIO_MAGMA_RESP_CREATE_SEMAPHORE;
@@ -573,39 +558,6 @@
 	__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;