diff --git a/drivers/gpu/arm/mali400/mali/common/mali_timeline.c b/drivers/gpu/arm/mali400/mali/common/mali_timeline.c index ee42a997c7e6..9b9788cccb0d 100644 --- 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 = dma_fence_is_signaled(sync_fence->fence); + fence_status = mali_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 index dff480332868..30635dd2dbd3 100644 --- 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 == dma_fence_is_signaled(sync_fence->fence)) { + if (0 == mali_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 e0f89108d4fe..5f22a60cd92f 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 = dma_fence_is_signaled(sync_fence->fence); + ret = mali_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,7 +557,7 @@ int mali_internal_sync_fence_wait_async(struct mali_internal_sync_fence *sync_fe return !err; #else - err = dma_fence_is_signaled(sync_fence->fence); + err = mali_dma_fence_is_signaled(sync_fence->fence); if (0 > err) return err; @@ -580,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 = dma_fence_is_signaled(sync_fence->fence); + err = mali_dma_fence_is_signaled(sync_fence->fence); if (0 == err){ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0) diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.h b/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.h index dbb29222ba98..999502671817 100644 --- a/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.h +++ b/drivers/gpu/arm/mali400/mali/linux/mali_internal_sync.h @@ -187,5 +187,20 @@ int mali_internal_sync_fence_wait_async(struct mali_internal_sync_fence *sync_fe int mali_internal_sync_fence_cancel_async(struct mali_internal_sync_fence *sync_fence, struct mali_internal_sync_fence_waiter *waiter); +/** + * This function is a simplified version of dma_fence_is_signaled(), + * dma_fence_signal() is not called here. + */ +static inline bool mali_dma_fence_is_signaled(struct dma_fence *fence) +{ + if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) + return true; + + if (fence->ops->signaled && fence->ops->signaled(fence)) + return true; + + return false; +} + #endif /*LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)*/ #endif /* _MALI_INTERNAL_SYNC_H */