]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: fix missing check in vm_flush()
authorAlex Deucher <alexander.deucher@amd.com>
Fri, 5 Jun 2026 21:46:19 +0000 (17:46 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 12 Aug 2026 14:21:14 +0000 (10:21 -0400)
We shouldn't return early if we need to emit spm update.

Reviewed-by: David Rosca <david.rosca@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 54a118f1d7e184fcbb18f83889f48f17a767878a)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

index dc6a9d7dd0b28e191df8714dd24066d38e99a009..1baad7624f1f9870e6360d7b2af615e5741c2743 100644 (file)
@@ -800,6 +800,7 @@ void amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job,
        mutex_unlock(&id_mgr->lock);
 
        gds_switch_needed &= !!ring->funcs->emit_gds_switch;
+       spm_update_needed &= !!adev->gfx.rlc.funcs->update_spm_vmid;
        vm_flush_needed &= !!ring->funcs->emit_vm_flush  &&
                        job->vm_pd_addr != AMDGPU_BO_INVALID_OFFSET;
        pasid_mapping_needed &= adev->gmc.gmc_funcs->emit_pasid_mapping &&
@@ -811,7 +812,7 @@ void amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job,
                &job->base.s_fence->scheduled == isolation->spearhead;
 
        if (!vm_flush_needed && !gds_switch_needed && !need_pipe_sync &&
-           !cleaner_shader_needed)
+           !cleaner_shader_needed && !spm_update_needed)
                return;
 
        amdgpu_ring_ib_begin(ring);