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;