drm/virtio: blob prep: make CPU responses more generic
RESOURCE_MAP_BLOB / RESOURCE_UNMAP_BLOB can use this. Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org> Acked-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Link: http://patchwork.freedesktop.org/patch/msgid/20200924003214.662-2-gurchetansingh@chromium.org Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
30172efbfb
commit
0ce0729656
@ -49,9 +49,9 @@
|
||||
#define DRIVER_MINOR 1
|
||||
#define DRIVER_PATCHLEVEL 0
|
||||
|
||||
#define UUID_INITIALIZING 0
|
||||
#define UUID_INITIALIZED 1
|
||||
#define UUID_INITIALIZATION_FAILED 2
|
||||
#define STATE_INITIALIZING 0
|
||||
#define STATE_OK 1
|
||||
#define STATE_ERR 2
|
||||
|
||||
struct virtio_gpu_object_params {
|
||||
uint32_t format;
|
||||
|
@ -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_device *vgdev = obj->dev->dev_private;
|
||||
|
||||
wait_event(vgdev->resp_wq, bo->uuid_state != UUID_INITIALIZING);
|
||||
if (bo->uuid_state != UUID_INITIALIZED)
|
||||
wait_event(vgdev->resp_wq, bo->uuid_state != STATE_INITIALIZING);
|
||||
if (bo->uuid_state != STATE_OK)
|
||||
return -ENODEV;
|
||||
|
||||
uuid_copy(uuid, &bo->uuid);
|
||||
@ -81,7 +81,7 @@ struct dma_buf *virtgpu_gem_prime_export(struct drm_gem_object *obj,
|
||||
return ERR_PTR(ret);
|
||||
virtio_gpu_notify(vgdev);
|
||||
} else {
|
||||
bo->uuid_state = UUID_INITIALIZATION_FAILED;
|
||||
bo->uuid_state = STATE_ERR;
|
||||
}
|
||||
|
||||
exp_info.ops = &virtgpu_dmabuf_ops.ops;
|
||||
|
@ -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);
|
||||
|
||||
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 &&
|
||||
obj->uuid_state == UUID_INITIALIZING) {
|
||||
obj->uuid_state == STATE_INITIALIZING) {
|
||||
memcpy(&obj->uuid.b, resp->uuid, sizeof(obj->uuid.b));
|
||||
obj->uuid_state = UUID_INITIALIZED;
|
||||
obj->uuid_state = STATE_OK;
|
||||
} else {
|
||||
obj->uuid_state = UUID_INITIALIZATION_FAILED;
|
||||
obj->uuid_state = STATE_ERR;
|
||||
}
|
||||
spin_unlock(&vgdev->resource_export_lock);
|
||||
|
||||
@ -1153,7 +1153,7 @@ virtio_gpu_cmd_resource_assign_uuid(struct virtio_gpu_device *vgdev,
|
||||
resp_buf = kzalloc(sizeof(*resp_buf), GFP_KERNEL);
|
||||
if (!resp_buf) {
|
||||
spin_lock(&vgdev->resource_export_lock);
|
||||
bo->uuid_state = UUID_INITIALIZATION_FAILED;
|
||||
bo->uuid_state = STATE_ERR;
|
||||
spin_unlock(&vgdev->resource_export_lock);
|
||||
virtio_gpu_array_put_free(objs);
|
||||
return -ENOMEM;
|
||||
|
Loading…
x
Reference in New Issue
Block a user