提交 0ce07296 编写于 作者: G Gurchetan Singh 提交者: Gerd Hoffmann

drm/virtio: blob prep: make CPU responses more generic

RESOURCE_MAP_BLOB / RESOURCE_UNMAP_BLOB can use this.
Signed-off-by: NGurchetan Singh <gurchetansingh@chromium.org>
Acked-by: NTomeu Vizoso <tomeu.vizoso@collabora.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20200924003214.662-2-gurchetansingh@chromium.orgSigned-off-by: NGerd Hoffmann <kraxel@redhat.com>
上级 30172efb
...@@ -49,9 +49,9 @@ ...@@ -49,9 +49,9 @@
#define DRIVER_MINOR 1 #define DRIVER_MINOR 1
#define DRIVER_PATCHLEVEL 0 #define DRIVER_PATCHLEVEL 0
#define UUID_INITIALIZING 0 #define STATE_INITIALIZING 0
#define UUID_INITIALIZED 1 #define STATE_OK 1
#define UUID_INITIALIZATION_FAILED 2 #define STATE_ERR 2
struct virtio_gpu_object_params { struct virtio_gpu_object_params {
uint32_t format; uint32_t format;
......
...@@ -34,8 +34,8 @@ static int virtgpu_virtio_get_uuid(struct dma_buf *buf, ...@@ -34,8 +34,8 @@ static int virtgpu_virtio_get_uuid(struct dma_buf *buf,
struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj); struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
struct virtio_gpu_device *vgdev = obj->dev->dev_private; struct virtio_gpu_device *vgdev = obj->dev->dev_private;
wait_event(vgdev->resp_wq, bo->uuid_state != UUID_INITIALIZING); wait_event(vgdev->resp_wq, bo->uuid_state != STATE_INITIALIZING);
if (bo->uuid_state != UUID_INITIALIZED) if (bo->uuid_state != STATE_OK)
return -ENODEV; return -ENODEV;
uuid_copy(uuid, &bo->uuid); uuid_copy(uuid, &bo->uuid);
...@@ -81,7 +81,7 @@ struct dma_buf *virtgpu_gem_prime_export(struct drm_gem_object *obj, ...@@ -81,7 +81,7 @@ struct dma_buf *virtgpu_gem_prime_export(struct drm_gem_object *obj,
return ERR_PTR(ret); return ERR_PTR(ret);
virtio_gpu_notify(vgdev); virtio_gpu_notify(vgdev);
} else { } else {
bo->uuid_state = UUID_INITIALIZATION_FAILED; bo->uuid_state = STATE_ERR;
} }
exp_info.ops = &virtgpu_dmabuf_ops.ops; exp_info.ops = &virtgpu_dmabuf_ops.ops;
......
...@@ -1127,14 +1127,14 @@ static void virtio_gpu_cmd_resource_uuid_cb(struct virtio_gpu_device *vgdev, ...@@ -1127,14 +1127,14 @@ static void virtio_gpu_cmd_resource_uuid_cb(struct virtio_gpu_device *vgdev,
uint32_t resp_type = le32_to_cpu(resp->hdr.type); uint32_t resp_type = le32_to_cpu(resp->hdr.type);
spin_lock(&vgdev->resource_export_lock); spin_lock(&vgdev->resource_export_lock);
WARN_ON(obj->uuid_state != UUID_INITIALIZING); WARN_ON(obj->uuid_state != STATE_INITIALIZING);
if (resp_type == VIRTIO_GPU_RESP_OK_RESOURCE_UUID && if (resp_type == VIRTIO_GPU_RESP_OK_RESOURCE_UUID &&
obj->uuid_state == UUID_INITIALIZING) { obj->uuid_state == STATE_INITIALIZING) {
memcpy(&obj->uuid.b, resp->uuid, sizeof(obj->uuid.b)); memcpy(&obj->uuid.b, resp->uuid, sizeof(obj->uuid.b));
obj->uuid_state = UUID_INITIALIZED; obj->uuid_state = STATE_OK;
} else { } else {
obj->uuid_state = UUID_INITIALIZATION_FAILED; obj->uuid_state = STATE_ERR;
} }
spin_unlock(&vgdev->resource_export_lock); spin_unlock(&vgdev->resource_export_lock);
...@@ -1153,7 +1153,7 @@ virtio_gpu_cmd_resource_assign_uuid(struct virtio_gpu_device *vgdev, ...@@ -1153,7 +1153,7 @@ virtio_gpu_cmd_resource_assign_uuid(struct virtio_gpu_device *vgdev,
resp_buf = kzalloc(sizeof(*resp_buf), GFP_KERNEL); resp_buf = kzalloc(sizeof(*resp_buf), GFP_KERNEL);
if (!resp_buf) { if (!resp_buf) {
spin_lock(&vgdev->resource_export_lock); spin_lock(&vgdev->resource_export_lock);
bo->uuid_state = UUID_INITIALIZATION_FAILED; bo->uuid_state = STATE_ERR;
spin_unlock(&vgdev->resource_export_lock); spin_unlock(&vgdev->resource_export_lock);
virtio_gpu_array_put_free(objs); virtio_gpu_array_put_free(objs);
return -ENOMEM; return -ENOMEM;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册