Shared semaphores for amdgpu

Christian König christian.koenig at amd.com
Fri Mar 10 09:12:45 UTC 2017


Am 10.03.2017 um 05:43 schrieb Dave Airlie:
> On 10 March 2017 at 14:27, Dave Airlie <airlied at gmail.com> wrote:
>> On 10 March 2017 at 13:25, Dave Airlie <airlied at gmail.com> wrote:
>>>> As far as I can see the only functionality we are missing here is:
>>>>
>>>> void sync_file_signal(struct sync_file *sync_file, struct dma_fence *fence)
>>>> {
>>>>      dma_fence_put(sync_file->fence);
>>>>      sync_file->fence = fence;
>>>> }
>>>>
>>>> We probably should do this atomically, but that is only a matter of taking
>>>> locks/atomic pointer operation.
>>>>
>>>> The waiting is done using the normal sync_file_get_fence() function.
>>>>
>>>> The rest is David's patch to import/export the fd handle into a local idr
>>>> based handle.
>>> Are you suggesting we start keeping track of sync_file objects in a local idr?

Yes, exactly.

>>> As currently they are only tracked as files, which is probably not what we want
>>> for every unshared semaphore, or are you thinking more that the amdgpu local
>>> sem should be just storing a sync_file pointer, rather than what it does now.
>> Okay here's a first pass at what I think you mean, it's missing
>> things, but the idea
>> should be what you said.

Yeah, that's pretty much what I had in mind.

If we can find consensus with the Intel guys on this we might want to 
move parts of the idr handling stuff into common code.

And I would give it another name, something like sync_handle or similar. 
As far as I can see it's just another representation of sync_file 
structures to userspace.

> (This version oopses of course due to NULL into sync_file_create,
> but that should be tirival to fix next week,)

Yeah, we of course need to figure out all the implementation details. 
But I think that won't be much trouble.

Christian.

>
> Dave.




More information about the amd-gfx mailing list