Commit 0ce07296 authored by Gurchetan Singh's avatar Gurchetan Singh Committed by Gerd Hoffmann
Browse files

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

parent 30172efb
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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;
+3 −3
Original line number Diff line number Diff line
@@ -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;
+5 −5
Original line number Diff line number Diff line
@@ -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;