From b2a3a286187dbd513d7e8cf91fbf7aa834d311ef Mon Sep 17 00:00:00 2001 From: Zhen Chen Date: Wed, 20 Nov 2024 16:34:53 +0800 Subject: [PATCH] Mali: utgard: Replace calls to dma_fence_ops::signaled with dma_fence_is_signaled() To address the issue in kernel 6.1 that 'dma_fence_ops::signaled' is NULL for certain signaled fence instances. Change-Id: Ie5e03e849947a9cd2b02fd057ebb44878aa2d0b0 Signed-off-by: Zhen Chen --- drivers/gpu/arm/mali400/mali/common/mali_timeline.c | 2 +- .../arm/mali400/mali/common/mali_timeline_fence_wait.c | 2 +- drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c | 9 +++------ 3 files changed, 5 insertions(+), 8 deletions(-) mode change 100755 => 100644 drivers/gpu/arm/mali400/mali/common/mali_timeline.c mode change 100755 => 100644 drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c diff --git a/drivers/gpu/arm/mali400/mali/common/mali_timeline.c b/drivers/gpu/arm/mali400/mali/common/mali_timeline.c old mode 100755 new mode 100644 index ffffee9306ce..ee42a997c7e6 --- a/drivers/gpu/arm/mali400/mali/common/mali_timeline.c +++ b/drivers/gpu/arm/mali400/mali/common/mali_timeline.c @@ -1551,7 +1551,7 @@ static void mali_timeline_do_sync_fence_callback(void *arg) #elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) fence_status = atomic_read(&sync_fence->status); #else - fence_status = sync_fence->fence->ops->signaled(sync_fence->fence); + fence_status = dma_fence_is_signaled(sync_fence->fence); #endif system = tracker->system; diff --git a/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c b/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c old mode 100755 new mode 100644 index 1ab13f50997f..dff480332868 --- a/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c +++ b/drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c @@ -113,7 +113,7 @@ static mali_bool mali_timeline_fence_wait_check_status(struct mali_timeline_syst #elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) if (0 < atomic_read(&sync_fence->status)) { #else - if (0 == sync_fence->fence->ops->signaled(sync_fence->fence)) { + if (0 == dma_fence_is_signaled(sync_fence->fence)) { #endif ret = MALI_FALSE; diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c b/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c index e13cbad3e513..e0f89108d4fe 100644 --- a/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c +++ b/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.c @@ -92,7 +92,7 @@ static void mali_internal_fence_check_cb_func(struct dma_fence *fence, struct dm if (ret) wake_up_all(&sync_fence->wq); #else - ret = sync_fence->fence->ops->signaled(sync_fence->fence); + ret = dma_fence_is_signaled(sync_fence->fence); if (0 > ret) MALI_PRINT_ERROR(("Mali internal sync:Failed to wait fence 0x%x for sync_fence 0x%x.\n", fence, sync_fence)); @@ -557,10 +557,7 @@ int mali_internal_sync_fence_wait_async(struct mali_internal_sync_fence *sync_fe return !err; #else - if ((sync_fence->fence) && (sync_fence->fence->ops) && (sync_fence->fence->ops->signaled)) - err = sync_fence->fence->ops->signaled(sync_fence->fence); - else - err = -1; + err = dma_fence_is_signaled(sync_fence->fence); if (0 > err) return err; @@ -583,7 +580,7 @@ int mali_internal_sync_fence_wait_async(struct mali_internal_sync_fence *sync_fe waiter->work.private = sync_fence; spin_lock_irqsave(&sync_fence->wq.lock, flags); - err = sync_fence->fence->ops->signaled(sync_fence->fence); + err = dma_fence_is_signaled(sync_fence->fence); if (0 == err){ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)