dma-buf: add dma_fence_timestamp helper
authorChristian König <christian.koenig@amd.com>
Fri, 8 Sep 2023 08:27:23 +0000 (10:27 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Oct 2023 21:08:57 +0000 (23:08 +0200)
commitd67b5a2b97b6e8959117ff71fc2daa30e66c8290
tree8226e937a3b951b0255c1144811197a74c649e60
parentcb8f1dd1b73cce453b38ce92da884d379daad3ad
dma-buf: add dma_fence_timestamp helper

commit b83ce9cb4a465b8f9a3fa45561b721a9551f60e3 upstream.

When a fence signals there is a very small race window where the timestamp
isn't updated yet. sync_file solves this by busy waiting for the
timestamp to appear, but on other ocassions didn't handled this
correctly.

Provide a dma_fence_timestamp() helper function for this and use it in
all appropriate cases.

Another alternative would be to grab the spinlock when that happens.

v2 by teddy: add a wait parameter to wait for the timestamp to show up, in case
   the accurate timestamp is needed and/or the timestamp is not based on
   ktime (e.g. hw timestamp)
v3 chk: drop the parameter again for unified handling

Signed-off-by: Yunxiang Li <Yunxiang.Li@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Fixes: 1774baa64f93 ("drm/scheduler: Change scheduled fence track v2")
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
CC: stable@vger.kernel.org
Link: https://patchwork.freedesktop.org/patch/msgid/20230929104725.2358-1-christian.koenig@amd.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/dma-buf/dma-fence-unwrap.c
drivers/dma-buf/sync_file.c
drivers/gpu/drm/scheduler/sched_main.c
include/linux/dma-fence.h