[virtmagma] Update for magma_device_t This type was introduced to avoid file descriptors in the API. Add magma_device_import and magma_device_release. Update to magma_create_connection2 and magma_query2. Change-Id: I5191892697f9ba43db640a9942f2f9406b525621
diff --git a/drivers/virtio/virtio_magma.c b/drivers/virtio/virtio_magma.c index 30e2f8b..f2acf12 100644 --- a/drivers/virtio/virtio_magma.c +++ b/drivers/virtio/virtio_magma.c
@@ -599,15 +599,15 @@ static int create_instance(struct virtmagma_info *vi, return ret; } -static int virtmagma_command_magma_create_connection( +static int virtmagma_command_magma_create_connection2( struct virtmagma_instance *instance, struct virtmagma_virtio_command *command) { int ret; struct virtmagma_connection *connection; - struct virtio_magma_create_connection_ctrl *request = + struct virtio_magma_create_connection2_ctrl *request = command->request_ptr; - struct virtio_magma_create_connection_resp *response = + struct virtio_magma_create_connection2_resp *response = command->response_ptr; if (!COMMAND_OK(command, request, response)) @@ -1257,8 +1257,8 @@ int virtmagma_ioctl_magma_command(struct file *filp, void __user *ptr) request_type = control_type(command.request_ptr); switch (request_type) { - case VIRTIO_MAGMA_CMD_CREATE_CONNECTION: - ret = virtmagma_command_magma_create_connection(instance, + case VIRTIO_MAGMA_CMD_CREATE_CONNECTION2: + ret = virtmagma_command_magma_create_connection2(instance, &command); break; case VIRTIO_MAGMA_CMD_RELEASE_CONNECTION: @@ -1307,7 +1307,7 @@ int virtmagma_ioctl_magma_command(struct file *filp, void __user *ptr) ret = virtmagma_command_magma_export(instance, &command); break; /* pass-through handlers */ - case VIRTIO_MAGMA_CMD_QUERY: + case VIRTIO_MAGMA_CMD_QUERY2: case VIRTIO_MAGMA_CMD_GET_ERROR: case VIRTIO_MAGMA_CMD_GET_BUFFER_ID: case VIRTIO_MAGMA_CMD_GET_BUFFER_SIZE: @@ -1324,6 +1324,8 @@ int virtmagma_ioctl_magma_command(struct file *filp, void __user *ptr) case VIRTIO_MAGMA_CMD_RESET_SEMAPHORE: case VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE: case VIRTIO_MAGMA_CMD_WAIT_NOTIFICATION_CHANNEL: + case VIRTIO_MAGMA_CMD_DEVICE_IMPORT: + case VIRTIO_MAGMA_CMD_DEVICE_RELEASE: 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 7ac95f9..451566ea 100644 --- a/include/uapi/linux/virtio_magma.h +++ b/include/uapi/linux/virtio_magma.h
@@ -3,7 +3,7 @@ found in the LICENSE file. */ /* NOTE: DO NOT EDIT THIS FILE! It is generated automatically by: - //garnet/lib/magma/include/virtio/virtio_magma.h.gen.py */ + //src/graphics/lib/magma/include/virtio/virtio_magma.h.gen.py */ #ifndef _LINUX_VIRTIO_MAGMA_H #define _LINUX_VIRTIO_MAGMA_H @@ -18,9 +18,6 @@ struct virtio_magma_config { enum virtio_magma_ctrl_type { /* magma commands */ - VIRTIO_MAGMA_CMD_QUERY = 0x1001, - VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER = 0x1002, - VIRTIO_MAGMA_CMD_CREATE_CONNECTION = 0x1003, VIRTIO_MAGMA_CMD_RELEASE_CONNECTION = 0x1004, VIRTIO_MAGMA_CMD_GET_ERROR = 0x1005, VIRTIO_MAGMA_CMD_CREATE_CONTEXT = 0x1006, @@ -58,10 +55,14 @@ enum virtio_magma_ctrl_type { VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE = 0x102A, VIRTIO_MAGMA_CMD_WAIT_NOTIFICATION_CHANNEL = 0x102B, 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, + VIRTIO_MAGMA_CMD_QUERY2 = 0x1030, + VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER2 = 0x1031, + VIRTIO_MAGMA_CMD_CREATE_CONNECTION2 = 0x1032, + VIRTIO_MAGMA_CMD_INITIALIZE_LOGGING = 0x1033, /* magma success responses */ - VIRTIO_MAGMA_RESP_QUERY = 0x2001, - VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER = 0x2002, - VIRTIO_MAGMA_RESP_CREATE_CONNECTION = 0x2003, VIRTIO_MAGMA_RESP_RELEASE_CONNECTION = 0x2004, VIRTIO_MAGMA_RESP_GET_ERROR = 0x2005, VIRTIO_MAGMA_RESP_CREATE_CONTEXT = 0x2006, @@ -99,6 +100,13 @@ enum virtio_magma_ctrl_type { VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE = 0x202A, VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL = 0x202B, 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, + VIRTIO_MAGMA_RESP_QUERY2 = 0x2030, + VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER2 = 0x2031, + VIRTIO_MAGMA_RESP_CREATE_CONNECTION2 = 0x2032, + VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING = 0x2033, /* magma error responses */ VIRTIO_MAGMA_RESP_ERR_UNIMPLEMENTED = 0x3001, VIRTIO_MAGMA_RESP_ERR_INTERNAL = 0x3002, @@ -110,12 +118,6 @@ enum virtio_magma_ctrl_type { inline const char* virtio_magma_ctrl_type_string(enum virtio_magma_ctrl_type type) { switch (type) { - case VIRTIO_MAGMA_CMD_QUERY: return "VIRTIO_MAGMA_CMD_QUERY"; - case VIRTIO_MAGMA_RESP_QUERY: return "VIRTIO_MAGMA_RESP_QUERY"; - case VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER: return "VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER"; - case VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER: return "VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER"; - case VIRTIO_MAGMA_CMD_CREATE_CONNECTION: return "VIRTIO_MAGMA_CMD_CREATE_CONNECTION"; - case VIRTIO_MAGMA_RESP_CREATE_CONNECTION: return "VIRTIO_MAGMA_RESP_CREATE_CONNECTION"; case VIRTIO_MAGMA_CMD_RELEASE_CONNECTION: return "VIRTIO_MAGMA_CMD_RELEASE_CONNECTION"; case VIRTIO_MAGMA_RESP_RELEASE_CONNECTION: return "VIRTIO_MAGMA_RESP_RELEASE_CONNECTION"; case VIRTIO_MAGMA_CMD_GET_ERROR: return "VIRTIO_MAGMA_CMD_GET_ERROR"; @@ -190,6 +192,20 @@ inline const char* virtio_magma_ctrl_type_string(enum virtio_magma_ctrl_type typ case VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL: return "VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL"; 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"; + case VIRTIO_MAGMA_RESP_DEVICE_IMPORT: return "VIRTIO_MAGMA_RESP_DEVICE_IMPORT"; + case VIRTIO_MAGMA_CMD_DEVICE_RELEASE: return "VIRTIO_MAGMA_CMD_DEVICE_RELEASE"; + case VIRTIO_MAGMA_RESP_DEVICE_RELEASE: return "VIRTIO_MAGMA_RESP_DEVICE_RELEASE"; + case VIRTIO_MAGMA_CMD_QUERY2: return "VIRTIO_MAGMA_CMD_QUERY2"; + case VIRTIO_MAGMA_RESP_QUERY2: return "VIRTIO_MAGMA_RESP_QUERY2"; + case VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER2: return "VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER2"; + case VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER2: return "VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER2"; + case VIRTIO_MAGMA_CMD_CREATE_CONNECTION2: return "VIRTIO_MAGMA_CMD_CREATE_CONNECTION2"; + case VIRTIO_MAGMA_RESP_CREATE_CONNECTION2: return "VIRTIO_MAGMA_RESP_CREATE_CONNECTION2"; + case VIRTIO_MAGMA_CMD_INITIALIZE_LOGGING: return "VIRTIO_MAGMA_CMD_INITIALIZE_LOGGING"; + case VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING: return "VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING"; case VIRTIO_MAGMA_RESP_ERR_UNIMPLEMENTED: return "VIRTIO_MAGMA_RESP_ERR_UNIMPLEMENTED"; case VIRTIO_MAGMA_RESP_ERR_INTERNAL: return "VIRTIO_MAGMA_RESP_ERR_INTERNAL"; case VIRTIO_MAGMA_RESP_ERR_HOST_DISCONNECTED: return "VIRTIO_MAGMA_RESP_ERR_HOST_DISCONNECTED"; @@ -202,9 +218,6 @@ inline const char* virtio_magma_ctrl_type_string(enum virtio_magma_ctrl_type typ inline enum virtio_magma_ctrl_type virtio_magma_expected_response_type(enum virtio_magma_ctrl_type type) { switch (type) { - case VIRTIO_MAGMA_CMD_QUERY: return VIRTIO_MAGMA_RESP_QUERY; - case VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER: return VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER; - case VIRTIO_MAGMA_CMD_CREATE_CONNECTION: return VIRTIO_MAGMA_RESP_CREATE_CONNECTION; case VIRTIO_MAGMA_CMD_RELEASE_CONNECTION: return VIRTIO_MAGMA_RESP_RELEASE_CONNECTION; case VIRTIO_MAGMA_CMD_GET_ERROR: return VIRTIO_MAGMA_RESP_GET_ERROR; case VIRTIO_MAGMA_CMD_CREATE_CONTEXT: return VIRTIO_MAGMA_RESP_CREATE_CONTEXT; @@ -242,6 +255,13 @@ inline enum virtio_magma_ctrl_type virtio_magma_expected_response_type(enum virt case VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE: return VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE; case VIRTIO_MAGMA_CMD_WAIT_NOTIFICATION_CHANNEL: return VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL; 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; + case VIRTIO_MAGMA_CMD_QUERY2: return VIRTIO_MAGMA_RESP_QUERY2; + case VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER2: return VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER2; + case VIRTIO_MAGMA_CMD_CREATE_CONNECTION2: return VIRTIO_MAGMA_RESP_CREATE_CONNECTION2; + case VIRTIO_MAGMA_CMD_INITIALIZE_LOGGING: return VIRTIO_MAGMA_RESP_INITIALIZE_LOGGING; default: return VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND; } } @@ -251,41 +271,6 @@ struct virtio_magma_ctrl_hdr { __le32 flags; } __attribute((packed)); -struct virtio_magma_query_ctrl { - struct virtio_magma_ctrl_hdr hdr; - __le32 file_descriptor; - __le64 id; -} __attribute((packed)); - -struct virtio_magma_query_resp { - struct virtio_magma_ctrl_hdr hdr; - __le64 value_out; - __le64 result_return; -} __attribute((packed)); - -struct virtio_magma_query_returns_buffer_ctrl { - struct virtio_magma_ctrl_hdr hdr; - __le32 file_descriptor; - __le64 id; -} __attribute((packed)); - -struct virtio_magma_query_returns_buffer_resp { - struct virtio_magma_ctrl_hdr hdr; - __le64 handle_out; - __le64 result_return; -} __attribute((packed)); - -struct virtio_magma_create_connection_ctrl { - struct virtio_magma_ctrl_hdr hdr; - __le32 file_descriptor; -} __attribute((packed)); - -struct virtio_magma_create_connection_resp { - struct virtio_magma_ctrl_hdr hdr; - __le64 connection_out; - __le64 result_return; -} __attribute((packed)); - struct virtio_magma_release_connection_ctrl { struct virtio_magma_ctrl_hdr hdr; __le64 connection; @@ -532,6 +517,7 @@ struct virtio_magma_commit_buffer_ctrl { struct virtio_magma_commit_buffer_resp { struct virtio_magma_ctrl_hdr hdr; + __le64 result_return; } __attribute((packed)); struct virtio_magma_export_ctrl { @@ -703,4 +689,79 @@ struct virtio_magma_read_notification_channel_resp { __le64 result_return; } __attribute((packed)); +struct virtio_magma_initialize_tracing_ctrl { + struct virtio_magma_ctrl_hdr hdr; + __le32 channel; +} __attribute((packed)); + +struct virtio_magma_initialize_tracing_resp { + struct virtio_magma_ctrl_hdr hdr; + __le64 result_return; +} __attribute((packed)); + +struct virtio_magma_device_import_ctrl { + struct virtio_magma_ctrl_hdr hdr; + __le32 device_channel; +} __attribute((packed)); + +struct virtio_magma_device_import_resp { + struct virtio_magma_ctrl_hdr hdr; + __le64 device_out; + __le64 result_return; +} __attribute((packed)); + +struct virtio_magma_device_release_ctrl { + struct virtio_magma_ctrl_hdr hdr; + __le64 device; +} __attribute((packed)); + +struct virtio_magma_device_release_resp { + struct virtio_magma_ctrl_hdr hdr; +} __attribute((packed)); + +struct virtio_magma_query2_ctrl { + struct virtio_magma_ctrl_hdr hdr; + __le64 device; + __le64 id; +} __attribute((packed)); + +struct virtio_magma_query2_resp { + struct virtio_magma_ctrl_hdr hdr; + __le64 value_out; + __le64 result_return; +} __attribute((packed)); + +struct virtio_magma_query_returns_buffer2_ctrl { + struct virtio_magma_ctrl_hdr hdr; + __le64 device; + __le64 id; +} __attribute((packed)); + +struct virtio_magma_query_returns_buffer2_resp { + struct virtio_magma_ctrl_hdr hdr; + __le64 handle_out; + __le64 result_return; +} __attribute((packed)); + +struct virtio_magma_create_connection2_ctrl { + struct virtio_magma_ctrl_hdr hdr; + __le64 device; +} __attribute((packed)); + +struct virtio_magma_create_connection2_resp { + struct virtio_magma_ctrl_hdr hdr; + __le64 connection_out; + __le64 result_return; +} __attribute((packed)); + +struct virtio_magma_initialize_logging_ctrl { + struct virtio_magma_ctrl_hdr hdr; + __le32 channel; +} __attribute((packed)); + +struct virtio_magma_initialize_logging_resp { + struct virtio_magma_ctrl_hdr hdr; + __le64 result_return; +} __attribute((packed)); + #endif /* _LINUX_VIRTIO_MAGMA_H */