Displaying 20 results from an estimated 26 matches for "target_seq".
2014 May 15
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
Am 15.05.2014 11:38, schrieb Maarten Lankhorst:
> op 15-05-14 11:21, Christian K?nig schreef:
>> Am 15.05.2014 03:06, schrieb Maarten Lankhorst:
>>> op 14-05-14 17:29, Christian K?nig schreef:
>>>>> + /* did fence get signaled after we enabled the sw irq? */
>>>>> + if
>>>>>
2014 Jun 02
1
[RFC PATCH v1.3 08/16 1/2] drm/radeon: add timeout argument to radeon_fence_wait_seq
...adeon_fence_wait_seq - wait for a specific sequence numbers
> + * radeon_fence_wait_seq_timeout - wait for a specific sequence numbers
Not necessary a hard requirement, but I would like to keep the name
since it's already long enough.
> *
> * @rdev: radeon device pointer
> * @target_seq: sequence number(s) we want to wait for
> * @intr: use interruptable sleep
> + * @timeout: maximum time to wait, or MAX_SCHEDULE_TIMEOUT for
> infinite wait
> *
> * Wait for the requested sequence number(s) to be written by any ring
> * (all asics). Sequnce number array...
2014 May 15
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...gt; Does this modification look sane?
Adding the timeout is on my todo list for quite some time as well, so
this part makes sense.
> +static long __radeon_fence_wait(struct fence *f, bool intr, long
> timeout)
> +{
> + struct radeon_fence *fence = to_radeon_fence(f);
> + u64 target_seq[RADEON_NUM_RINGS] = {};
> +
> + target_seq[fence->ring] = fence->seq;
> + return radeon_fence_wait_seq_timeout(fence->rdev, target_seq,
> intr, timeout);
> +}
When this call is comming from outside the radeon driver you need to
lock rdev->exclusive_lock here to ma...
2014 May 15
0
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...c
@@ -361,28 +361,35 @@ static bool radeon_fence_any_seq_signaled(struct radeon_device *rdev, u64 *seq)
}
/**
- * radeon_fence_wait_seq - wait for a specific sequence numbers
+ * radeon_fence_wait_seq_timeout - wait for a specific sequence numbers
*
* @rdev: radeon device pointer
* @target_seq: sequence number(s) we want to wait for
* @intr: use interruptable sleep
+ * @timeout: maximum time to wait, or MAX_SCHEDULE_TIMEOUT for infinite wait
*
* Wait for the requested sequence number(s) to be written by any ring
* (all asics). Sequnce number array is indexed by ring id.
*...
2014 Jun 02
0
[RFC PATCH v1.3 08/16 1/2] drm/radeon: add timeout argument to radeon_fence_wait_seq
...c
@@ -283,28 +283,35 @@ static bool radeon_fence_any_seq_signaled(struct radeon_device *rdev, u64 *seq)
}
/**
- * radeon_fence_wait_seq - wait for a specific sequence numbers
+ * radeon_fence_wait_seq_timeout - wait for a specific sequence numbers
*
* @rdev: radeon device pointer
* @target_seq: sequence number(s) we want to wait for
* @intr: use interruptable sleep
+ * @timeout: maximum time to wait, or MAX_SCHEDULE_TIMEOUT for infinite wait
*
* Wait for the requested sequence number(s) to be written by any ring
* (all asics). Sequnce number array is indexed by ring id.
*...
2014 Jun 02
3
[RFC PATCH v1.2 08/16] drm/radeon: use common fence implementation for fences
...deon_fence_any_seq_signaled(struct
> radeon_device *rdev, u64 *seq)
> }
>
> /**
> - * radeon_fence_wait_seq - wait for a specific sequence numbers
> + * radeon_fence_wait_seq_timeout - wait for a specific sequence numbers
> *
> * @rdev: radeon device pointer
> * @target_seq: sequence number(s) we want to wait for
> * @intr: use interruptable sleep
> + * @timeout: maximum time to wait, or MAX_SCHEDULE_TIMEOUT for
> infinite wait
> *
> * Wait for the requested sequence number(s) to be written by any ring
> * (all asics). Sequnce number array...
2014 Jul 31
0
[PATCH 09/19] drm/radeon: handle lockup in delayed work, v2
...if the sequence number has increased (all asics).
+ */
+void radeon_fence_process(struct radeon_device *rdev, int ring)
+{
+ if (__radeon_fence_process(rdev, ring))
wake_up_all(&rdev->fence_queue);
}
@@ -302,9 +337,10 @@ static int radeon_fence_wait_seq(struct radeon_device *rdev, u64 *target_seq,
{
uint64_t last_seq[RADEON_NUM_RINGS];
bool signaled;
- int i, r;
+ int i;
while (!radeon_fence_any_seq_signaled(rdev, target_seq)) {
+ long r;
/* Save current sequence values, used to check for GPU lockups */
for (i = 0; i < RADEON_NUM_RINGS; ++i) {
@@ -319,11 +355,11 @@ stat...
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 Aug 01
2
[PATCH 09/19] drm/radeon: handle lockup in delayed work, v2
...sics).
> + */
> +void radeon_fence_process(struct radeon_device *rdev, int ring)
> +{
> + if (__radeon_fence_process(rdev, ring))
> wake_up_all(&rdev->fence_queue);
> }
>
> @@ -302,9 +337,10 @@ static int radeon_fence_wait_seq(struct radeon_device *rdev, u64 *target_seq,
> {
> uint64_t last_seq[RADEON_NUM_RINGS];
> bool signaled;
> - int i, r;
> + int i;
>
> while (!radeon_fence_any_seq_signaled(rdev, target_seq)) {
> + long r;
>
> /* Save current sequence values, used to check for GPU lockups */
> for (i...
2014 Jun 02
0
[RFC PATCH v1.2 08/16] drm/radeon: use common fence implementation for fences
...;
@@ -283,28 +381,35 @@ static bool radeon_fence_any_seq_signaled(struct radeon_device *rdev, u64 *seq)
}
/**
- * radeon_fence_wait_seq - wait for a specific sequence numbers
+ * radeon_fence_wait_seq_timeout - wait for a specific sequence numbers
*
* @rdev: radeon device pointer
* @target_seq: sequence number(s) we want to wait for
* @intr: use interruptable sleep
+ * @timeout: maximum time to wait, or MAX_SCHEDULE_TIMEOUT for infinite wait
*
* Wait for the requested sequence number(s) to be written by any ring
* (all asics). Sequnce number array is indexed by ring id.
*...
2014 May 19
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...>>>
>>>>>>> +static long __radeon_fence_wait(struct fence *f, bool intr,
>>>>>>> long timeout)
>>>>>>> +{
>>>>>>> + struct radeon_fence *fence = to_radeon_fence(f);
>>>>>>> + u64 target_seq[RADEON_NUM_RINGS] = {};
>>>>>>> +
>>>>>>> + target_seq[fence->ring] = fence->seq;
>>>>>>> + return radeon_fence_wait_seq_timeout(fence->rdev,
>>>>>>> target_seq, intr, timeout);
>>>>>&...
2014 May 19
0
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...t;>>>>>>
>>>>>>>> +static long __radeon_fence_wait(struct fence *f, bool intr, long timeout)
>>>>>>>> +{
>>>>>>>> + struct radeon_fence *fence = to_radeon_fence(f);
>>>>>>>> + u64 target_seq[RADEON_NUM_RINGS] = {};
>>>>>>>> +
>>>>>>>> + target_seq[fence->ring] = fence->seq;
>>>>>>>> + return radeon_fence_wait_seq_timeout(fence->rdev, target_seq, intr, timeout);
>>>>>>>> +}
>...
2014 May 15
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...is on my todo list for quite some time as well, so
>> this part makes sense.
>>
>>> +static long __radeon_fence_wait(struct fence *f, bool intr, long
>>> timeout)
>>> +{
>>> + struct radeon_fence *fence = to_radeon_fence(f);
>>> + u64 target_seq[RADEON_NUM_RINGS] = {};
>>> +
>>> + target_seq[fence->ring] = fence->seq;
>>> + return radeon_fence_wait_seq_timeout(fence->rdev, target_seq,
>>> intr, timeout);
>>> +}
>> When this call is comming from outside the radeon driver you...
2014 May 19
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...deon_fence_any_seq_signaled(struct
> radeon_device *rdev, u64 *seq)
> }
>
> /**
> - * radeon_fence_wait_seq - wait for a specific sequence numbers
> + * radeon_fence_wait_seq_timeout - wait for a specific sequence numbers
> *
> * @rdev: radeon device pointer
> * @target_seq: sequence number(s) we want to wait for
> * @intr: use interruptable sleep
> + * @timeout: maximum time to wait, or MAX_SCHEDULE_TIMEOUT for
> infinite wait
> *
> * Wait for the requested sequence number(s) to be written by any ring
> * (all asics). Sequnce number array...
2014 May 15
2
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...;>> so this part makes sense.
>>>>
>>>>> +static long __radeon_fence_wait(struct fence *f, bool intr, long
>>>>> timeout)
>>>>> +{
>>>>> + struct radeon_fence *fence = to_radeon_fence(f);
>>>>> + u64 target_seq[RADEON_NUM_RINGS] = {};
>>>>> +
>>>>> + target_seq[fence->ring] = fence->seq;
>>>>> + return radeon_fence_wait_seq_timeout(fence->rdev, target_seq,
>>>>> intr, timeout);
>>>>> +}
>>>> When this ca...
2014 May 15
0
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...fication look sane?
> Adding the timeout is on my todo list for quite some time as well, so this part makes sense.
>
>> +static long __radeon_fence_wait(struct fence *f, bool intr, long timeout)
>> +{
>> + struct radeon_fence *fence = to_radeon_fence(f);
>> + u64 target_seq[RADEON_NUM_RINGS] = {};
>> +
>> + target_seq[fence->ring] = fence->seq;
>> + return radeon_fence_wait_seq_timeout(fence->rdev, target_seq, intr, timeout);
>> +}
> When this call is comming from outside the radeon driver you need to lock rdev->exclusive_l...
2014 May 15
0
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...out is on my todo list for quite some time as well, so this part makes sense.
>>>
>>>> +static long __radeon_fence_wait(struct fence *f, bool intr, long timeout)
>>>> +{
>>>> + struct radeon_fence *fence = to_radeon_fence(f);
>>>> + u64 target_seq[RADEON_NUM_RINGS] = {};
>>>> +
>>>> + target_seq[fence->ring] = fence->seq;
>>>> + return radeon_fence_wait_seq_timeout(fence->rdev, target_seq, intr, timeout);
>>>> +}
>>> When this call is comming from outside the radeon driv...
2014 May 19
0
[RFC PATCH v1 08/16] drm/radeon: use common fence implementation for fences
...me as well, so this part makes sense.
>>>>>
>>>>>> +static long __radeon_fence_wait(struct fence *f, bool intr, long timeout)
>>>>>> +{
>>>>>> + struct radeon_fence *fence = to_radeon_fence(f);
>>>>>> + u64 target_seq[RADEON_NUM_RINGS] = {};
>>>>>> +
>>>>>> + target_seq[fence->ring] = fence->seq;
>>>>>> + return radeon_fence_wait_seq_timeout(fence->rdev, target_seq, intr, timeout);
>>>>>> +}
>>>>> When this call...
2014 Jul 09
2
[PATCH 09/17] drm/radeon: use common fence implementation for fences
...> /**
> @@ -872,3 +967,51 @@ int radeon_debugfs_fence_init(struct
> radeon_device *rdev)
> return 0;
> #endif
> }
> +
> +static long __radeon_fence_wait(struct fence *f, bool intr, long timeout)
> +{
> + struct radeon_fence *fence = to_radeon_fence(f);
> + u64 target_seq[RADEON_NUM_RINGS] = {};
> + struct radeon_device *rdev = fence->rdev;
> + long r;
> +
> + target_seq[fence->ring] = fence->seq;
> +
> + down_read(&rdev->exclusive_lock);
> + r = radeon_fence_wait_seq_timeout(fence->rdev, target_seq, intr,
> timeout);
>...
2014 Jul 09
0
[PATCH 09/17] drm/radeon: use common fence implementation for fences
...);
- }
+ if (tmp)
+ fence_put(&tmp->base);
}
/**
@@ -872,3 +967,51 @@ int radeon_debugfs_fence_init(struct radeon_device *rdev)
return 0;
#endif
}
+
+static long __radeon_fence_wait(struct fence *f, bool intr, long timeout)
+{
+ struct radeon_fence *fence = to_radeon_fence(f);
+ u64 target_seq[RADEON_NUM_RINGS] = {};
+ struct radeon_device *rdev = fence->rdev;
+ long r;
+
+ target_seq[fence->ring] = fence->seq;
+
+ down_read(&rdev->exclusive_lock);
+ r = radeon_fence_wait_seq_timeout(fence->rdev, target_seq, intr, timeout);
+
+ if (r > 0 && !fence_signal(&am...