[Nouveau] [PATCH 5/9] drm/nouveau: stop using ttm_bo_wait

Christian König ckoenig.leichtzumerken at gmail.com
Wed Jan 18 09:42:15 UTC 2023


Hi Danilo,

maybe you can give me a quick acked-by for this patch here.

I promise I've going to finish my drm_exec patches so you can use them 
for Nouveau as well :)

Thanks,
Christian.

Am 18.01.23 um 10:04 schrieb Christian König:
> Hi guys,
>
> another ping for this. It's just a minor cleanup.
>
> Dave/Daniel can you help me out here?
>
> Thanks,
> Christian.
>
> Am 11.01.23 um 10:52 schrieb Christian König:
>> Hi guys,
>>
>> can I get a quick ack for this?
>>
>> The patch has no functional change and is just a cleanup.
>>
>> Thanks,
>> Christian.
>>
>> Am 25.11.22 um 11:21 schrieb Christian König:
>>> TTM is just wrapping core DMA functionality here, remove the mid-layer.
>>> No functional change.
>>>
>>> Signed-off-by: Christian König <christian.koenig at amd.com>
>>> ---
>>>   drivers/gpu/drm/nouveau/nouveau_bo.c  |  6 +++++-
>>>   drivers/gpu/drm/nouveau/nouveau_gem.c | 11 ++++++++---
>>>   2 files changed, 13 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c 
>>> b/drivers/gpu/drm/nouveau/nouveau_bo.c
>>> index 335fa91ca4ad..288eebc70a67 100644
>>> --- a/drivers/gpu/drm/nouveau/nouveau_bo.c
>>> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
>>> @@ -922,6 +922,7 @@ static void nouveau_bo_move_ntfy(struct 
>>> ttm_buffer_object *bo,
>>>       struct nouveau_mem *mem = new_reg ? nouveau_mem(new_reg) : NULL;
>>>       struct nouveau_bo *nvbo = nouveau_bo(bo);
>>>       struct nouveau_vma *vma;
>>> +    long ret;
>>>         /* ttm can now (stupidly) pass the driver bos it didn't 
>>> create... */
>>>       if (bo->destroy != nouveau_bo_del_ttm)
>>> @@ -936,7 +937,10 @@ static void nouveau_bo_move_ntfy(struct 
>>> ttm_buffer_object *bo,
>>>           }
>>>       } else {
>>>           list_for_each_entry(vma, &nvbo->vma_list, head) {
>>> -            WARN_ON(ttm_bo_wait(bo, false, false));
>>> +            ret = dma_resv_wait_timeout(bo->base.resv,
>>> +                            DMA_RESV_USAGE_BOOKKEEP,
>>> +                            false, 15 * HZ);
>>> +            WARN_ON(ret <= 0);
>>>               nouveau_vma_unmap(vma);
>>>           }
>>>       }
>>> diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c 
>>> b/drivers/gpu/drm/nouveau/nouveau_gem.c
>>> index ac5793c96957..f77e44958037 100644
>>> --- a/drivers/gpu/drm/nouveau/nouveau_gem.c
>>> +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
>>> @@ -645,7 +645,7 @@ nouveau_gem_pushbuf_reloc_apply(struct 
>>> nouveau_cli *cli,
>>>                   struct drm_nouveau_gem_pushbuf_reloc *reloc,
>>>                   struct drm_nouveau_gem_pushbuf_bo *bo)
>>>   {
>>> -    int ret = 0;
>>> +    long ret = 0;
>>>       unsigned i;
>>>         for (i = 0; i < req->nr_relocs; i++) {
>>> @@ -703,9 +703,14 @@ nouveau_gem_pushbuf_reloc_apply(struct 
>>> nouveau_cli *cli,
>>>                   data |= r->vor;
>>>           }
>>>   -        ret = ttm_bo_wait(&nvbo->bo, false, false);
>>> +        ret = dma_resv_wait_timeout(nvbo->bo.base.resv,
>>> +                        DMA_RESV_USAGE_BOOKKEEP,
>>> +                        false, 15 * HZ);
>>> +        if (ret == 0)
>>> +            ret = -EBUSY;
>>>           if (ret) {
>>> -            NV_PRINTK(err, cli, "reloc wait_idle failed: %d\n", ret);
>>> +            NV_PRINTK(err, cli, "reloc wait_idle failed: %ld\n",
>>> +                  ret);
>>>               break;
>>>           }
>>
>



More information about the Nouveau mailing list