]> git.baikalelectronics.ru Git - kernel.git/commit
drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Wed, 8 Dec 2021 02:39:35 +0000 (03:39 +0100)
committerChristian König <christian.koenig@amd.com>
Wed, 8 Dec 2021 16:19:48 +0000 (17:19 +0100)
commit8e24a27d7f76a0c6658e3e2e2a30216795a670e1
treede78a31542b9d46444b3c1eeef1781268f0b9f31
parent06c9e91edffc0b1877dbb76baac5041243f55223
drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence.

dma_fence_chain_find_seqno only ever returns the top fence in the
chain or an unsignalled fence. Hence if we request a seqno that
is already signalled it returns a NULL fence. Some callers are
not prepared to handle this, like the syncobj transfer functions
for example.

This behavior is "new" with timeline syncobj and it looks like
not all callers were updated. To fix this behavior make sure
that a successful drm_sync_find_fence always returns a non-NULL
fence.

v2: Move the fix to drm_syncobj_find_fence from the transfer
    functions.

Fixes: e6fdfaa09e55 ("drm/syncobj: add transition iotcls between binary and timeline v2")
Cc: stable@vger.kernel.org
Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Christian König <christian.koenig@amd.com>
Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211208023935.17018-1-bas@basnieuwenhuizen.nl
drivers/gpu/drm/drm_syncobj.c