Merge "msm: kgsl: Keep the timeline fence valid for logging"

This commit is contained in:
qctecmdr 2024-01-31 21:04:15 -08:00 committed by Gerrit - the friendly Code Review server
commit 995eaab1e4

View File

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/ */
/* /*
@ -510,6 +510,8 @@ static int drawobj_add_sync_timeline(struct kgsl_device *device,
/* Set pending flag before adding callback to avoid race */ /* Set pending flag before adding callback to avoid race */
set_bit(event->id, &syncobj->pending); set_bit(event->id, &syncobj->pending);
/* Get a dma_fence refcount to hand over to the callback */
dma_fence_get(event->fence);
ret = dma_fence_add_callback(event->fence, ret = dma_fence_add_callback(event->fence,
&event->cb, drawobj_sync_timeline_fence_callback); &event->cb, drawobj_sync_timeline_fence_callback);
@ -522,11 +524,16 @@ static int drawobj_add_sync_timeline(struct kgsl_device *device,
ret = 0; ret = 0;
} }
/* Put the refcount from fence creation */
dma_fence_put(event->fence);
kgsl_drawobj_put(drawobj); kgsl_drawobj_put(drawobj);
return ret; return ret;
} }
trace_syncpoint_timeline_fence(event->syncobj, event->fence, false); trace_syncpoint_timeline_fence(event->syncobj, event->fence, false);
/* Put the refcount from fence creation */
dma_fence_put(event->fence);
return 0; return 0;
} }