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? >> >> 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. (This version oopses of course due to NULL into sync_file_create, but that should be tirival to fix next week,) Dave.