]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: fix waiting for all submissions for userptrs
authorChristian König <christian.koenig@amd.com>
Wed, 18 Feb 2026 12:05:46 +0000 (13:05 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 3 Jun 2026 18:53:05 +0000 (14:53 -0400)
Wait for all submissions when userptrs need to be invalidated by the MMU
notifier, not just the one the userptr was involved into.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Vitaly Prosyak <vitaly.prosyak@amd.com>
Tested-by: Vitaly Prosyak <vitaly.prosyak@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 91250893cbaa25c86872deca95a540d08de1f91e)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c

index 5bfa5a84b09cbe57eff8cec85cff28778cab3775..e452444b33b08bdd4f725f72b4147bdcf31571af 100644 (file)
@@ -67,6 +67,7 @@ static bool amdgpu_hmm_invalidate_gfx(struct mmu_interval_notifier *mni,
 {
        struct amdgpu_bo *bo = container_of(mni, struct amdgpu_bo, notifier);
        struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
+       struct amdgpu_bo *vm_root = bo->vm_bo->vm->root.bo;
        long r;
 
        if (!mmu_notifier_range_blockable(range))
@@ -77,8 +78,9 @@ static bool amdgpu_hmm_invalidate_gfx(struct mmu_interval_notifier *mni,
        mmu_interval_set_seq(mni, cur_seq);
 
        amdgpu_vm_bo_invalidate(bo, false);
-       r = dma_resv_wait_timeout(bo->tbo.base.resv, DMA_RESV_USAGE_BOOKKEEP,
-                                 false, MAX_SCHEDULE_TIMEOUT);
+       r = dma_resv_wait_timeout(vm_root->tbo.base.resv,
+                                 DMA_RESV_USAGE_BOOKKEEP, false,
+                                 MAX_SCHEDULE_TIMEOUT);
        mutex_unlock(&adev->notifier_lock);
        if (r <= 0)
                DRM_ERROR("(%ld) failed to wait for user bo\n", r);