[PATCH 1/2] drm: rename null fence to stub fence in syncobj

Christian König ckoenig.leichtzumerken at gmail.com
Wed Aug 22 09:05:57 UTC 2018


Am 22.08.2018 um 11:02 schrieb zhoucm1:
>
>
> On 2018年08月22日 16:52, Christian König wrote:
>> Am 22.08.2018 um 10:38 schrieb Chunming Zhou:
>>> stub fence will be used by timeline syncobj as well.
>>>
>>> Change-Id: Ia4252f03c07a8105491d2791dc7c8c6976682285
>>> Signed-off-by: Chunming Zhou <david1.zhou at amd.com>
>>> Cc: Jason Ekstrand <jason at jlekstrand.net>
>>> ---
>>>   drivers/gpu/drm/drm_syncobj.c | 28 ++--------------------------
>>>   include/drm/drm_syncobj.h     | 24 ++++++++++++++++++++++++
>>>   2 files changed, 26 insertions(+), 26 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/drm_syncobj.c 
>>> b/drivers/gpu/drm/drm_syncobj.c
>>> index d4f4ce484529..70af32d0def1 100644
>>> --- a/drivers/gpu/drm/drm_syncobj.c
>>> +++ b/drivers/gpu/drm/drm_syncobj.c
>>> @@ -187,39 +187,15 @@ void drm_syncobj_replace_fence(struct 
>>> drm_syncobj *syncobj,
>>>   }
>>>   EXPORT_SYMBOL(drm_syncobj_replace_fence);
>>>   -struct drm_syncobj_null_fence {
>>> -    struct dma_fence base;
>>> -    spinlock_t lock;
>>> -};
>>> -
>>> -static const char *drm_syncobj_null_fence_get_name(struct dma_fence 
>>> *fence)
>>> -{
>>> -        return "syncobjnull";
>>> -}
>>> -
>>> -static bool drm_syncobj_null_fence_enable_signaling(struct 
>>> dma_fence *fence)
>>> -{
>>> -    dma_fence_enable_sw_signaling(fence);
>>> -    return !dma_fence_is_signaled(fence);
>>> -}
>>> -
>>> -static const struct dma_fence_ops drm_syncobj_null_fence_ops = {
>>> -    .get_driver_name = drm_syncobj_null_fence_get_name,
>>> -    .get_timeline_name = drm_syncobj_null_fence_get_name,
>>> -    .enable_signaling = drm_syncobj_null_fence_enable_signaling,
>>> -    .wait = dma_fence_default_wait,
>>> -    .release = NULL,
>>> -};
>>> -
>>>   static int drm_syncobj_assign_null_handle(struct drm_syncobj 
>>> *syncobj)
>>>   {
>>> -    struct drm_syncobj_null_fence *fence;
>>> +    struct drm_syncobj_stub_fence *fence;
>>>       fence = kzalloc(sizeof(*fence), GFP_KERNEL);
>>>       if (fence == NULL)
>>>           return -ENOMEM;
>>>         spin_lock_init(&fence->lock);
>>> -    dma_fence_init(&fence->base, &drm_syncobj_null_fence_ops,
>>> +    dma_fence_init(&fence->base, &drm_syncobj_stub_fence_ops,
>>>                  &fence->lock, 0, 0);
>>>       dma_fence_signal(&fence->base);
>>>   diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h
>>> index 3980602472c0..b04c492ddbb5 100644
>>> --- a/include/drm/drm_syncobj.h
>>> +++ b/include/drm/drm_syncobj.h
>>> @@ -30,6 +30,30 @@
>>>     struct drm_syncobj_cb;
>>>   +struct drm_syncobj_stub_fence {
>>> +    struct dma_fence base;
>>> +    spinlock_t lock;
>>> +};
>>> +
>>> +const char *drm_syncobj_stub_fence_get_name(struct dma_fence *fence)
>>> +{
>>> +        return "syncobjstub";
>>> +}
>>> +
>>> +bool drm_syncobj_stub_fence_enable_signaling(struct dma_fence *fence)
>>> +{
>>> +    dma_fence_enable_sw_signaling(fence);
>>
>> Copy&pasted from the old implementation, but that is certainly 
>> totally nonsense.
>>
>> dma_fence_enable_sw_signaling() is the function who is calling this 
>> callback.
> indeed, will fix.
>>
>>> +    return !dma_fence_is_signaled(fence);
>>> +}
>>> +
>>> +const struct dma_fence_ops drm_syncobj_stub_fence_ops = {
>>> +    .get_driver_name = drm_syncobj_stub_fence_get_name,
>>> +    .get_timeline_name = drm_syncobj_stub_fence_get_name,
>>> +    .enable_signaling = drm_syncobj_stub_fence_enable_signaling,
>>> +    .wait = dma_fence_default_wait,
>>
>> The .wait callback should be dropped.
> why?
>
> fence->ops->wait(fence, intr, timeout) is called by dma_fence_wait(). 
> If dropped, how does dma_fence_wait() work?

You are working on an older code base, fence->ops->wait is optional by now.

Christian.

>
> Thanks,
> David
>>
>> Apart from that looks good to me.
>>
>> Christian.
>>
>>> +    .release = NULL,
>>> +};
>>> +
>>>   /**
>>>    * struct drm_syncobj - sync object.
>>>    *
>>
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx



More information about the amd-gfx mailing list