* @vm: vm to allocate id for
  * @ring: ring we want to submit job to
  * @sync: sync object where we add dependencies
- * @fence: fence protecting ID from reuse
  * @job: job who wants to use the VMID
  * @id: resulting VMID
  *
 static int amdgpu_vmid_grab_reserved(struct amdgpu_vm *vm,
                                     struct amdgpu_ring *ring,
                                     struct amdgpu_sync *sync,
-                                    struct dma_fence *fence,
                                     struct amdgpu_job *job,
                                     struct amdgpu_vmid **id)
 {
        /* Good we can use this VMID. Remember this submission as
        * user of the VMID.
        */
-       r = amdgpu_sync_fence(&(*id)->active, fence);
+       r = amdgpu_sync_fence(&(*id)->active, &job->base.s_fence->finished);
        if (r)
                return r;
 
  * @vm: vm to allocate id for
  * @ring: ring we want to submit job to
  * @sync: sync object where we add dependencies
- * @fence: fence protecting ID from reuse
  * @job: job who wants to use the VMID
  * @id: resulting VMID
  *
 static int amdgpu_vmid_grab_used(struct amdgpu_vm *vm,
                                 struct amdgpu_ring *ring,
                                 struct amdgpu_sync *sync,
-                                struct dma_fence *fence,
                                 struct amdgpu_job *job,
                                 struct amdgpu_vmid **id)
 {
                /* Good, we can use this VMID. Remember this submission as
                 * user of the VMID.
                 */
-               r = amdgpu_sync_fence(&(*id)->active, fence);
+               r = amdgpu_sync_fence(&(*id)->active,
+                                     &job->base.s_fence->finished);
                if (r)
                        return r;
 
  * @vm: vm to allocate id for
  * @ring: ring we want to submit job to
  * @sync: sync object where we add dependencies
- * @fence: fence protecting ID from reuse
  * @job: job who wants to use the VMID
  *
  * Allocate an id for the vm, adding fences to the sync obj as necessary.
  */
 int amdgpu_vmid_grab(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
-                    struct amdgpu_sync *sync, struct dma_fence *fence,
-                    struct amdgpu_job *job)
+                    struct amdgpu_sync *sync, struct amdgpu_job *job)
 {
        struct amdgpu_device *adev = ring->adev;
        unsigned vmhub = ring->funcs->vmhub;
                goto error;
 
        if (vm->reserved_vmid[vmhub]) {
-               r = amdgpu_vmid_grab_reserved(vm, ring, sync, fence, job, &id);
+               r = amdgpu_vmid_grab_reserved(vm, ring, sync, job, &id);
                if (r || !id)
                        goto error;
        } else {
-               r = amdgpu_vmid_grab_used(vm, ring, sync, fence, job, &id);
+               r = amdgpu_vmid_grab_used(vm, ring, sync, job, &id);
                if (r)
                        goto error;
 
                        id = idle;
 
                        /* Remember this submission as user of the VMID */
-                       r = amdgpu_sync_fence(&id->active, fence);
+                       r = amdgpu_sync_fence(&id->active,
+                                             &job->base.s_fence->finished);
                        if (r)
                                goto error;