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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]<

 



Am 18.01.23 um 14:01 schrieb Karol Herbst:
On Wed, Jan 18, 2023 at 10:04 AM Christian König
<ckoenig.leichtzumerken@xxxxxxxxx> wrote:
Hi guys,

another ping for this. It's just a minor cleanup.

Acked-by: Karol Herbst <kherbst@xxxxxxxxxx>

Thanks!


Though I'd say that having a wrapper function like that isn't
pointless on its own and I kind of fail to see the reason it gets
removed in the first place.

Also.. I wouldn't call this a "cleanup" because it actually removes
something useful. Yes, it's only calling one function, but it's more
of a pain to use the wrapped one than the outer one.

The problem is that it's hiding the timeout.

Just read up what discussion this triggered within the Intel driver.

Christian.


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@xxxxxxx>
---
   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;
           }




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux