mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
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 <chenzhen@rock-chips.com>
This commit is contained in:
2
drivers/gpu/arm/mali400/mali/common/mali_timeline.c
Executable file → Normal file
2
drivers/gpu/arm/mali400/mali/common/mali_timeline.c
Executable file → Normal file
@@ -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;
|
||||
|
||||
2
drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c
Executable file → Normal file
2
drivers/gpu/arm/mali400/mali/common/mali_timeline_fence_wait.c
Executable file → Normal file
@@ -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;
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user