+++ /dev/null
-From 1c824497d8acd3187d585d6187cedc1897dcc871 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
-Date: Wed, 18 Feb 2026 12:31:29 +0100
-Subject: drm/amdgpu: fix calling VM invalidation in amdgpu_hmm_invalidate_gfx
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Christian König <christian.koenig@amd.com>
-
-commit 1c824497d8acd3187d585d6187cedc1897dcc871 upstream.
-
-Otherwise we don't invalidate page tables on next CS.
-
-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 b6444d1bcbc34f6f2a31a3aab3059be082f3683e)
-Cc: stable@vger.kernel.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c | 1 +
- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 7 +++++--
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c
-@@ -78,6 +78,7 @@ static bool amdgpu_hmm_invalidate_gfx(st
-
- 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);
- mutex_unlock(&adev->notifier_lock);
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-@@ -1492,6 +1492,7 @@ int amdgpu_vm_handle_moved(struct amdgpu
- {
- struct amdgpu_bo_va *bo_va;
- struct dma_resv *resv;
-+ struct amdgpu_bo *bo;
- bool clear, unlock;
- int r;
-
-@@ -1511,11 +1512,13 @@ int amdgpu_vm_handle_moved(struct amdgpu
- while (!list_empty(&vm->invalidated)) {
- bo_va = list_first_entry(&vm->invalidated, struct amdgpu_bo_va,
- base.vm_status);
-- resv = bo_va->base.bo->tbo.base.resv;
-+ bo = bo_va->base.bo;
-+ resv = bo->tbo.base.resv;
- spin_unlock(&vm->status_lock);
-
- /* Try to reserve the BO to avoid clearing its ptes */
-- if (!adev->debug_vm && dma_resv_trylock(resv)) {
-+ if (!adev->debug_vm && !amdgpu_ttm_tt_get_usermm(bo->tbo.ttm) &&
-+ dma_resv_trylock(resv)) {
- clear = false;
- unlock = true;
- /* The caller is already holding the reservation lock */