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;
