diff mbox series

[1/1] drm/ttm: Ignore signaled move fences

Message ID 20210227034524.21763-1-Felix.Kuehling@amd.com (mailing list archive)
State New, archived
Headers show
Series [1/1] drm/ttm: Ignore signaled move fences | expand

Commit Message

Felix Kuehling Feb. 27, 2021, 3:45 a.m. UTC
Move fences that have already signaled should not prevent memory
allocations with no_wait_gpu.

Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
---
 drivers/gpu/drm/ttm/ttm_bo.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Christian König March 1, 2021, 3:09 p.m. UTC | #1
Am 27.02.21 um 04:45 schrieb Felix Kuehling:
> Move fences that have already signaled should not prevent memory
> allocations with no_wait_gpu.
>
> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>

Reviewed-by: Christian König <christian.koenig@amd.com>

> ---
>   drivers/gpu/drm/ttm/ttm_bo.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index 3a10bebb75d6..de1ec838cf8b 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -730,8 +730,9 @@ static int ttm_bo_add_move_fence(struct ttm_buffer_object *bo,
>   		return 0;
>   
>   	if (no_wait_gpu) {
> +		ret = dma_fence_is_signaled(fence) ? 0 : -EBUSY;
>   		dma_fence_put(fence);
> -		return -EBUSY;
> +		return ret;
>   	}
>   
>   	dma_resv_add_shared_fence(bo->base.resv, fence);
Felix Kuehling March 5, 2021, 1:21 a.m. UTC | #2
Am 2021-03-01 um 10:09 a.m. schrieb Christian König:
> Am 27.02.21 um 04:45 schrieb Felix Kuehling:
>> Move fences that have already signaled should not prevent memory
>> allocations with no_wait_gpu.
>>
>> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
>
> Reviewed-by: Christian König <christian.koenig@amd.com>

I work on this on Alex's rebased amd-staging-drm-next. Should this go
into any other branches?

Thanks,
  Felix


>
>> ---
>>   drivers/gpu/drm/ttm/ttm_bo.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
>> index 3a10bebb75d6..de1ec838cf8b 100644
>> --- a/drivers/gpu/drm/ttm/ttm_bo.c
>> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
>> @@ -730,8 +730,9 @@ static int ttm_bo_add_move_fence(struct
>> ttm_buffer_object *bo,
>>           return 0;
>>         if (no_wait_gpu) {
>> +        ret = dma_fence_is_signaled(fence) ? 0 : -EBUSY;
>>           dma_fence_put(fence);
>> -        return -EBUSY;
>> +        return ret;
>>       }
>>         dma_resv_add_shared_fence(bo->base.resv, fence);
>
Christian König March 5, 2021, 7:56 a.m. UTC | #3
Am 05.03.21 um 02:21 schrieb Felix Kuehling:
> Am 2021-03-01 um 10:09 a.m. schrieb Christian König:
>> Am 27.02.21 um 04:45 schrieb Felix Kuehling:
>>> Move fences that have already signaled should not prevent memory
>>> allocations with no_wait_gpu.
>>>
>>> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
>> Reviewed-by: Christian König <christian.koenig@amd.com>
> I work on this on Alex's rebased amd-staging-drm-next. Should this go
> into any other branches?

I have a branch with stuff for 5.13 which I want to push to 
drm-misc-next as soon as 5.12-rc1 is out.

Going to add this one here to that collection as well unless you say 
that this is really a bug fix and we need it earlier.

Regards,
Christian.

>
> Thanks,
>    Felix
>
>
>>> ---
>>>    drivers/gpu/drm/ttm/ttm_bo.c | 3 ++-
>>>    1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
>>> index 3a10bebb75d6..de1ec838cf8b 100644
>>> --- a/drivers/gpu/drm/ttm/ttm_bo.c
>>> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
>>> @@ -730,8 +730,9 @@ static int ttm_bo_add_move_fence(struct
>>> ttm_buffer_object *bo,
>>>            return 0;
>>>          if (no_wait_gpu) {
>>> +        ret = dma_fence_is_signaled(fence) ? 0 : -EBUSY;
>>>            dma_fence_put(fence);
>>> -        return -EBUSY;
>>> +        return ret;
>>>        }
>>>          dma_resv_add_shared_fence(bo->base.resv, fence);
Felix Kuehling March 5, 2021, 6:20 p.m. UTC | #4
It fixed an intermittent failure to allocate page tables in the page
fault handler (turning retry faults into no-retry faults). I'm not sure
if this caused real problems. I think it could potentially result in
fault storms and a failure to report page faults properly. I'm not sure
if it's a regression or was always present. So I'm not sure if it's an
urgent fix.

Regards,
  Felix

Am 2021-03-05 um 2:56 a.m. schrieb Christian König:
>
>
> Am 05.03.21 um 02:21 schrieb Felix Kuehling:
>> Am 2021-03-01 um 10:09 a.m. schrieb Christian König:
>>> Am 27.02.21 um 04:45 schrieb Felix Kuehling:
>>>> Move fences that have already signaled should not prevent memory
>>>> allocations with no_wait_gpu.
>>>>
>>>> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
>>> Reviewed-by: Christian König <christian.koenig@amd.com>
>> I work on this on Alex's rebased amd-staging-drm-next. Should this go
>> into any other branches?
>
> I have a branch with stuff for 5.13 which I want to push to
> drm-misc-next as soon as 5.12-rc1 is out.
>
> Going to add this one here to that collection as well unless you say
> that this is really a bug fix and we need it earlier.
>
> Regards,
> Christian.
>
>>
>> Thanks,
>>    Felix
>>
>>
>>>> ---
>>>>    drivers/gpu/drm/ttm/ttm_bo.c | 3 ++-
>>>>    1 file changed, 2 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c
>>>> b/drivers/gpu/drm/ttm/ttm_bo.c
>>>> index 3a10bebb75d6..de1ec838cf8b 100644
>>>> --- a/drivers/gpu/drm/ttm/ttm_bo.c
>>>> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
>>>> @@ -730,8 +730,9 @@ static int ttm_bo_add_move_fence(struct
>>>> ttm_buffer_object *bo,
>>>>            return 0;
>>>>          if (no_wait_gpu) {
>>>> +        ret = dma_fence_is_signaled(fence) ? 0 : -EBUSY;
>>>>            dma_fence_put(fence);
>>>> -        return -EBUSY;
>>>> +        return ret;
>>>>        }
>>>>          dma_resv_add_shared_fence(bo->base.resv, fence);
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index 3a10bebb75d6..de1ec838cf8b 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -730,8 +730,9 @@  static int ttm_bo_add_move_fence(struct ttm_buffer_object *bo,
 		return 0;
 
 	if (no_wait_gpu) {
+		ret = dma_fence_is_signaled(fence) ? 0 : -EBUSY;
 		dma_fence_put(fence);
-		return -EBUSY;
+		return ret;
 	}
 
 	dma_resv_add_shared_fence(bo->base.resv, fence);