]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amdgpu: reject gang submissions under SRIOV
authorChristian König <christian.koenig@amd.com>
Wed, 27 Aug 2025 11:14:43 +0000 (13:14 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Nov 2025 20:34:25 +0000 (15:34 -0500)
[ Upstream commit d7ddcf921e7d0d8ebe82e89635bc9dc26ba9540d ]

Gang submission means that the kernel driver guarantees that multiple
submissions are executed on the HW at the same time on different engines.

Background is that those submissions then depend on each other and each
can't finish stand alone.

SRIOV now uses world switch to preempt submissions on the engines to allow
sharing the HW resources between multiple VFs.

The problem is now that the SRIOV world switch can't know about such inter
dependencies and will cause a timeout if it waits for a partially running
gang submission.

To conclude SRIOV and gang submissions are fundamentally incompatible at
the moment. For now just disable them.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c

index 187263c0406ef530ea4887952fab1822467f8f06..082fc12fe28dc570232d94ae727e46fa1d553600 100644 (file)
@@ -286,7 +286,7 @@ static int amdgpu_cs_pass1(struct amdgpu_cs_parser *p,
                }
        }
 
-       if (!p->gang_size) {
+       if (!p->gang_size || (amdgpu_sriov_vf(p->adev) && p->gang_size > 1)) {
                ret = -EINVAL;
                goto free_all_kdata;
        }