[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;