]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amdgpu: Forward VMID reservation errors
authorNatalie Vock <natalie.vock@gmx.de>
Wed, 7 Jan 2026 10:53:17 +0000 (05:53 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 11 Jan 2026 14:25:20 +0000 (15:25 +0100)
[ Upstream commit 8defb4f081a5feccc3ea8372d0c7af3522124e1f ]

Otherwise userspace may be fooled into believing it has a reserved VMID
when in reality it doesn't, ultimately leading to GPU hangs when SPM is
used.

Fixes: 80e709ee6ecc ("drm/amdgpu: add option params to enforce process isolation between graphics and compute")
Cc: stable@vger.kernel.org
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Natalie Vock <natalie.vock@gmx.de>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
[ adapted 3-argument amdgpu_vmid_alloc_reserved(adev, vm, vmhub) call to 2-argument version and added separate error check to preserve reserved_vmid tracking logic. ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

index 37d53578825b33c795196fd592553cd6146d5222..211d67a2e48dd988b48f476d3a72681144fef154 100644 (file)
@@ -2747,10 +2747,12 @@ int amdgpu_vm_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
        case AMDGPU_VM_OP_RESERVE_VMID:
                /* We only have requirement to reserve vmid from gfxhub */
                if (!fpriv->vm.reserved_vmid[AMDGPU_GFXHUB(0)]) {
-                       amdgpu_vmid_alloc_reserved(adev, AMDGPU_GFXHUB(0));
+                       int r = amdgpu_vmid_alloc_reserved(adev, AMDGPU_GFXHUB(0));
+
+                       if (r)
+                               return r;
                        fpriv->vm.reserved_vmid[AMDGPU_GFXHUB(0)] = true;
                }
-
                break;
        case AMDGPU_VM_OP_UNRESERVE_VMID:
                if (fpriv->vm.reserved_vmid[AMDGPU_GFXHUB(0)]) {