Displaying 20 results from an estimated 25 matches for "radeon_fence_check_sign".
2014 May 14
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...ence->rdev->fence_drv[fence->ring].last_seq) >= fence->seq) {
> + radeon_irq_kms_sw_irq_put(fence->rdev, fence->ring);
> + return false;
> + }
> +
> + fence->fence_wake.flags = 0;
> + fence->fence_wake.private = NULL;
> + fence->fence_wake.func = radeon_fence_check_signaled;
> + __add_wait_queue(&fence->rdev->fence_queue, &fence->fence_wake);
> + fence_get(f);
That looks like a race condition to me. The fence needs to be added to
the wait queue before the check, not after.
Apart from that the whole approach looks like a really bad idea to...
2014 May 15
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...;>> + radeon_irq_kms_sw_irq_put(fence->rdev, fence->ring);
>>> + return false;
>>> + }
>>> +
>>> + fence->fence_wake.flags = 0;
>>> + fence->fence_wake.private = NULL;
>>> + fence->fence_wake.func = radeon_fence_check_signaled;
>>> + __add_wait_queue(&fence->rdev->fence_queue, &fence->fence_wake);
>>> + fence_get(f);
>> That looks like a race condition to me. The fence needs to be added
>> to the wait queue before the check, not after.
>>
>> Apart from...
2014 Jul 09
2
[PATCH 09/17] drm/radeon: use common fence implementation for fences
...ing,
> seq);
> + (*fence)->rdev = rdev;
> + (*fence)->seq = seq;
> radeon_fence_ring_emit(rdev, ring, *fence);
> trace_radeon_fence_emit(rdev->ddev, ring, (*fence)->seq);
> return 0;
> }
>
> /**
> - * radeon_fence_process - process a fence
> + * radeon_fence_check_signaled - callback from fence_queue
> *
> - * @rdev: radeon_device pointer
> - * @ring: ring index the fence is associated with
> - *
> - * Checks the current fence value and wakes the fence queue
> - * if the sequence number has increased (all asics).
> + * this function is call...
2014 May 14
0
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...;rdev->fence_queue.lock, rdev->fence_context + ring, seq);
+ (*fence)->rdev = rdev;
+ (*fence)->seq = seq;
radeon_fence_ring_emit(rdev, ring, *fence);
trace_radeon_fence_emit(rdev->ddev, ring, (*fence)->seq);
return 0;
}
/**
- * radeon_fence_process - process a fence
+ * radeon_fence_check_signaled - callback from fence_queue
*
- * @rdev: radeon_device pointer
- * @ring: ring index the fence is associated with
- *
- * Checks the current fence value and wakes the fence queue
- * if the sequence number has increased (all asics).
+ * this function is called with fence_queue lock held, whic...
2014 Jul 09
0
[PATCH 09/17] drm/radeon: use common fence implementation for fences
...;rdev->fence_queue.lock, rdev->fence_context + ring, seq);
+ (*fence)->rdev = rdev;
+ (*fence)->seq = seq;
radeon_fence_ring_emit(rdev, ring, *fence);
trace_radeon_fence_emit(rdev->ddev, ring, (*fence)->seq);
return 0;
}
/**
- * radeon_fence_process - process a fence
+ * radeon_fence_check_signaled - callback from fence_queue
*
- * @rdev: radeon_device pointer
- * @ring: ring index the fence is associated with
- *
- * Checks the current fence value and wakes the fence queue
- * if the sequence number has increased (all asics).
+ * this function is called with fence_queue lock held, whic...
2014 Jul 09
0
[PATCH v2 09/17] drm/radeon: use common fence implementation for fences
...;rdev->fence_queue.lock, rdev->fence_context + ring, seq);
+ (*fence)->rdev = rdev;
+ (*fence)->seq = seq;
radeon_fence_ring_emit(rdev, ring, *fence);
trace_radeon_fence_emit(rdev->ddev, ring, (*fence)->seq);
return 0;
}
/**
- * radeon_fence_process - process a fence
+ * radeon_fence_check_signaled - callback from fence_queue
*
- * @rdev: radeon_device pointer
- * @ring: ring index the fence is associated with
- *
- * Checks the current fence value and wakes the fence queue
- * if the sequence number has increased (all asics).
+ * this function is called with fence_queue lock held, whic...
2014 May 19
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
Am 19.05.2014 15:35, schrieb Maarten Lankhorst:
> op 19-05-14 14:30, Christian K?nig schreef:
>> Am 19.05.2014 12:10, schrieb Maarten Lankhorst:
>>> op 19-05-14 10:27, Christian K?nig schreef:
>>>> Am 19.05.2014 10:00, schrieb Maarten Lankhorst:
>>>> [SNIP]
>>>> The problem here is that the whole approach collides with the way
>>>>
2014 May 19
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...t;>>>>>> +
>>>>>>>>>>>>> + fence->fence_wake.flags = 0;
>>>>>>>>>>>>> + fence->fence_wake.private = NULL;
>>>>>>>>>>>>> + fence->fence_wake.func = radeon_fence_check_signaled;
>>>>>>>>>>>>> + __add_wait_queue(&fence->rdev->fence_queue,
>>>>>>>>>>>>> &fence->fence_wake);
>>>>>>>>>>>>> + fence_get(f);
>>>>>>>>...
2014 May 15
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...t;>>>>>>> + }
>>>>>>>>> +
>>>>>>>>> + fence->fence_wake.flags = 0;
>>>>>>>>> + fence->fence_wake.private = NULL;
>>>>>>>>> + fence->fence_wake.func = radeon_fence_check_signaled;
>>>>>>>>> + __add_wait_queue(&fence->rdev->fence_queue,
>>>>>>>>> &fence->fence_wake);
>>>>>>>>> + fence_get(f);
>>>>>>>> That looks like a race condition to me. The fe...
2014 Jun 02
0
[RFC PATCH v1.2 08/16] drm/radeon: use common fence implementation for fences
...(*fence)->seq = seq;
radeon_fence_ring_emit(rdev, ring, *fence);
trace_radeon_fence_emit(rdev->ddev, ring, (*fence)->seq);
return 0;
}
/**
- * radeon_fence_process - process a fence
- *
- * @rdev: radeon_device pointer
- * @ring: ring index the fence is associated with
+ * radeon_fence_check_signaled - callback from fence_queue
*
- * Checks the current fence value and wakes the fence queue
- * if the sequence number has increased (all asics).
+ * this function is called with fence_queue lock held, which is also used
+ * for the fence locking itself, so unlocked variants are used for
+ *...
2014 Jun 02
3
[RFC PATCH v1.2 08/16] drm/radeon: use common fence implementation for fences
...t(rdev, ring, *fence);
> trace_radeon_fence_emit(rdev->ddev, ring, (*fence)->seq);
> return 0;
> }
>
> /**
> - * radeon_fence_process - process a fence
> - *
> - * @rdev: radeon_device pointer
> - * @ring: ring index the fence is associated with
> + * radeon_fence_check_signaled - callback from fence_queue
> *
> - * Checks the current fence value and wakes the fence queue
> - * if the sequence number has increased (all asics).
> + * this function is called with fence_queue lock held, which is also
> used
> + * for the fence locking itself, so unloc...
2014 May 19
0
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...t;>>> +
>>>>>>>>>>>>>> + fence->fence_wake.flags = 0;
>>>>>>>>>>>>>> + fence->fence_wake.private = NULL;
>>>>>>>>>>>>>> + fence->fence_wake.func = radeon_fence_check_signaled;
>>>>>>>>>>>>>> + __add_wait_queue(&fence->rdev->fence_queue, &fence->fence_wake);
>>>>>>>>>>>>>> + fence_get(f);
>>>>>>>>>>>>> That looks like a race c...
2014 May 15
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...t;>> + return false;
>>>>>>> + }
>>>>>>> +
>>>>>>> + fence->fence_wake.flags = 0;
>>>>>>> + fence->fence_wake.private = NULL;
>>>>>>> + fence->fence_wake.func = radeon_fence_check_signaled;
>>>>>>> + __add_wait_queue(&fence->rdev->fence_queue, &fence->fence_wake);
>>>>>>> + fence_get(f);
>>>>>> That looks like a race condition to me. The fence needs to be
>>>>>> added to the wait qu...
2014 May 15
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...ce->rdev, fence->ring);
>>>>> + return false;
>>>>> + }
>>>>> +
>>>>> + fence->fence_wake.flags = 0;
>>>>> + fence->fence_wake.private = NULL;
>>>>> + fence->fence_wake.func = radeon_fence_check_signaled;
>>>>> + __add_wait_queue(&fence->rdev->fence_queue, &fence->fence_wake);
>>>>> + fence_get(f);
>>>> That looks like a race condition to me. The fence needs to be added
>>>> to the wait queue before the check, not aft...
2014 May 15
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...}
>>>>>>>>>>> +
>>>>>>>>>>> + fence->fence_wake.flags = 0;
>>>>>>>>>>> + fence->fence_wake.private = NULL;
>>>>>>>>>>> + fence->fence_wake.func = radeon_fence_check_signaled;
>>>>>>>>>>> + __add_wait_queue(&fence->rdev->fence_queue,
>>>>>>>>>>> &fence->fence_wake);
>>>>>>>>>>> + fence_get(f);
>>>>>>>>>> That looks lik...
2014 May 15
0
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...) >= fence->seq) {
>> + radeon_irq_kms_sw_irq_put(fence->rdev, fence->ring);
>> + return false;
>> + }
>> +
>> + fence->fence_wake.flags = 0;
>> + fence->fence_wake.private = NULL;
>> + fence->fence_wake.func = radeon_fence_check_signaled;
>> + __add_wait_queue(&fence->rdev->fence_queue, &fence->fence_wake);
>> + fence_get(f);
> That looks like a race condition to me. The fence needs to be added to the wait queue before the check, not after.
>
> Apart from that the whole approach looks...
2014 May 15
0
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...n_irq_kms_sw_irq_put(fence->rdev, fence->ring);
>>>> + return false;
>>>> + }
>>>> +
>>>> + fence->fence_wake.flags = 0;
>>>> + fence->fence_wake.private = NULL;
>>>> + fence->fence_wake.func = radeon_fence_check_signaled;
>>>> + __add_wait_queue(&fence->rdev->fence_queue, &fence->fence_wake);
>>>> + fence_get(f);
>>> That looks like a race condition to me. The fence needs to be added to the wait queue before the check, not after.
>>>
>>>...
2014 May 15
0
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...return false;
>>>>>>>> + }
>>>>>>>> +
>>>>>>>> + fence->fence_wake.flags = 0;
>>>>>>>> + fence->fence_wake.private = NULL;
>>>>>>>> + fence->fence_wake.func = radeon_fence_check_signaled;
>>>>>>>> + __add_wait_queue(&fence->rdev->fence_queue, &fence->fence_wake);
>>>>>>>> + fence_get(f);
>>>>>>> That looks like a race condition to me. The fence needs to be added to the wait queue before the...
2014 May 19
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...t(rdev, ring, *fence);
> trace_radeon_fence_emit(rdev->ddev, ring, (*fence)->seq);
> return 0;
> }
>
> /**
> - * radeon_fence_process - process a fence
> - *
> - * @rdev: radeon_device pointer
> - * @ring: ring index the fence is associated with
> + * radeon_fence_check_signaled - callback from fence_queue
> *
> - * Checks the current fence value and wakes the fence queue
> - * if the sequence number has increased (all asics).
> + * this function is called with fence_queue lock held, which is also
> used
> + * for the fence locking itself, so unloc...
2014 May 15
0
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...t;>>> + }
>>>>>>>>>> +
>>>>>>>>>> + fence->fence_wake.flags = 0;
>>>>>>>>>> + fence->fence_wake.private = NULL;
>>>>>>>>>> + fence->fence_wake.func = radeon_fence_check_signaled;
>>>>>>>>>> + __add_wait_queue(&fence->rdev->fence_queue, &fence->fence_wake);
>>>>>>>>>> + fence_get(f);
>>>>>>>>> That looks like a race condition to me. The fence needs to be added to t...