drm/amdgpu: stop getting excl fence separately
authorChristian König <christian.koenig@amd.com>
Wed, 22 Sep 2021 12:13:13 +0000 (14:13 +0200)
committerChristian König <christian.koenig@amd.com>
Wed, 17 Nov 2021 13:32:27 +0000 (14:32 +0100)
Just grab all fences for the display flip in one go.

Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211028132630.2330-2-christian.koenig@amd.com
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c

index d58e37fd01f47595616904e4c112523ec40fe30e..4da7eb65e744783ed715aeba925740730c9aea49 100644 (file)
@@ -457,7 +457,6 @@ struct amdgpu_flip_work {
        uint64_t                        base;
        struct drm_pending_vblank_event *event;
        struct amdgpu_bo                *old_abo;
-       struct dma_fence                *excl;
        unsigned                        shared_count;
        struct dma_fence                **shared;
        struct dma_fence_cb             cb;
index dc50c05f23fc2d6490d045bf8ea444a2ab340748..68108f151dadfbb6cc5f54739e437aee7d01794f 100644 (file)
@@ -83,9 +83,6 @@ static void amdgpu_display_flip_work_func(struct work_struct *__work)
        unsigned i;
        int vpos, hpos;
 
-       if (amdgpu_display_flip_handle_fence(work, &work->excl))
-               return;
-
        for (i = 0; i < work->shared_count; ++i)
                if (amdgpu_display_flip_handle_fence(work, &work->shared[i]))
                        return;
@@ -203,7 +200,7 @@ int amdgpu_display_crtc_page_flip_target(struct drm_crtc *crtc,
                goto unpin;
        }
 
-       r = dma_resv_get_fences(new_abo->tbo.base.resv, &work->excl,
+       r = dma_resv_get_fences(new_abo->tbo.base.resv, NULL,
                                &work->shared_count, &work->shared);
        if (unlikely(r != 0)) {
                DRM_ERROR("failed to get fences for buffer\n");
@@ -253,7 +250,6 @@ unreserve:
 
 cleanup:
        amdgpu_bo_unref(&work->old_abo);
-       dma_fence_put(work->excl);
        for (i = 0; i < work->shared_count; ++i)
                dma_fence_put(work->shared[i]);
        kfree(work->shared);