提交 6c455ac1 编写于 作者: C Christian König 提交者: Alex Deucher

dma-buf/fence: add fence_is_later()

Return true when fence 1 is later than fence 2 without
checking if any of them are signaled.

Useful for driver specific resource handling based on fences.
Signed-off-by: NChristian König <christian.koenig@amd.com>
Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
上级 a519435a
...@@ -279,6 +279,22 @@ fence_is_signaled(struct fence *fence) ...@@ -279,6 +279,22 @@ fence_is_signaled(struct fence *fence)
return false; return false;
} }
/**
* fence_is_later - return if f1 is chronologically later than f2
* @f1: [in] the first fence from the same context
* @f2: [in] the second fence from the same context
*
* Returns true if f1 is chronologically later than f2. Both fences must be
* from the same context, since a seqno is not re-used across contexts.
*/
static inline bool fence_is_later(struct fence *f1, struct fence *f2)
{
if (WARN_ON(f1->context != f2->context))
return false;
return f1->seqno - f2->seqno < INT_MAX;
}
/** /**
* fence_later - return the chronologically later fence * fence_later - return the chronologically later fence
* @f1: [in] the first fence from the same context * @f1: [in] the first fence from the same context
...@@ -298,10 +314,10 @@ static inline struct fence *fence_later(struct fence *f1, struct fence *f2) ...@@ -298,10 +314,10 @@ static inline struct fence *fence_later(struct fence *f1, struct fence *f2)
* set if enable_signaling wasn't called, and enabling that here is * set if enable_signaling wasn't called, and enabling that here is
* overkill. * overkill.
*/ */
if (f2->seqno - f1->seqno <= INT_MAX) if (fence_is_later(f1, f2))
return fence_is_signaled(f2) ? NULL : f2;
else
return fence_is_signaled(f1) ? NULL : f1; return fence_is_signaled(f1) ? NULL : f1;
else
return fence_is_signaled(f2) ? NULL : f2;
} }
signed long fence_wait_timeout(struct fence *, bool intr, signed long timeout); signed long fence_wait_timeout(struct fence *, bool intr, signed long timeout);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册