On 2016å¹´08æ??24æ?¥ 17:39, Christian König wrote: > Am 24.08.2016 um 11:33 schrieb zhoucm1: >> >> >> On 2016å¹´08æ??18æ?¥ 16:15, Christian König wrote: >>> NAK to the whole approach. >>> >>> If we want to share dependencies in the form of fences between >>> devices and especially processes we must use android fences and the >>> sync file framework. >> Then if we want to share semaphore between devices and processes, we >> must re-implement semaphore and move it to kernel side from libdrm, >> right? >> then bind unused fd to semaphore object, and then export/import fd. >> What do you think of it? > > That is basically what sync_file does. It just doesn't call it > semaphore and doesn't use the signal/wait semantic. > > Instead fences can be added to a sync_file and waited for completion > before a command submission is made. I understand your mean, UMD don't want to touch command submission to semaphore, which isn't what semaphore want to do. semaphore does: 1. create a semaphore 2. signal semahore----append the last fence of that ctx to semaphore in lidrm 3. wait semaphore----add semaphore to ctx->semaphore_list in libdrm, when next submission is comming, then semaphore will be dependency of it. 4. destroy semaphore. the umd totally doesn't know what semaphore does, they just know the synchronization is completed after semaphore, then they can continue to do cs. sync_file seems cannot provide what semaphore does. So with thinking more, we seems have to move semaphore implementation to kernel, use unused fd and install it to fd like sync file mechanism to share semaphore between devices and processes, right? Regards, David Zhou > > Regards, > Christian. > >> >> Regards, >> David Zhou >>> >>> Sharing numbers in the form of the IDR is a security nightmare we >>> already ran into with the GEM flink design. >>> >>> Regards, >>> Christian. >>> >>> Am 18.08.2016 um 09:50 schrieb Chunming Zhou: >>>> If we want to share semaphore/dependency across process across >>>> device, we >>>> must make ctx id be global, so that we can index it everywhere. >>>> >>>> Chunming Zhou (6): >>>> drm/amdgpu: use global ctx mgr instead of vm specified >>>> drm/amdgpu: clean up for amdgpu ctx >>>> drm/amdgpu: allocate progressively higher ids for ctx until idr >>>> counter wraps >>>> drm/amdgpu: ctx id should be removed when ctx is freed >>>> drm/amdgpu: use fence-array for ctx release >>>> drm/amdgpu: dependency is already signaled if ctx has been freed >>>> >>>> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 17 ++-- >>>> drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 9 +- >>>> drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 142 >>>> ++++++++++++++++++-------------- >>>> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 + >>>> drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 4 - >>>> 5 files changed, 92 insertions(+), 83 deletions(-) >>>> >>> >> >