[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 @@ static int virtmagma_command_magma_export_semaphore( { 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 @@ static int 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 @@ int virtmagma_ioctl_magma_command(struct file *filp, void __user *ptr) 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 @@ int virtmagma_ioctl_magma_command(struct file *filp, void __user *ptr) /* 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 @@ int virtmagma_ioctl_magma_command(struct file *filp, void __user *ptr) 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 @@ enum virtio_magma_ctrl_type { 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 @@ enum virtio_magma_ctrl_type { 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 @@ enum virtio_magma_ctrl_type { 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 @@ enum virtio_magma_ctrl_type { 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 @@ enum virtio_magma_ctrl_type { 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 @@ enum virtio_magma_ctrl_type { 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 @@ inline const char* virtio_magma_ctrl_type_string(enum virtio_magma_ctrl_type typ 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 @@ inline const char* virtio_magma_ctrl_type_string(enum virtio_magma_ctrl_type typ 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 @@ inline const char* virtio_magma_ctrl_type_string(enum virtio_magma_ctrl_type typ 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 @@ inline enum virtio_magma_ctrl_type virtio_magma_expected_response_type(enum virt 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 @@ inline enum virtio_magma_ctrl_type virtio_magma_expected_response_type(enum virt 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 @@ inline enum virtio_magma_ctrl_type virtio_magma_expected_response_type(enum virt 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_release_buffer_resp { 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 @@ struct virtio_magma_get_notification_channel_handle_resp { __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 @@ struct virtio_magma_virt_get_image_info_resp { __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;