Hi, Indirect CSD lets userspace defer the workgroup counts to a GPU buffer that is only filled at runtime, so the counts are unknown at submission time and can legitimately turn out to be zero.
However, exercing this case exposed two issues in the CSD path. 1. Virtual address leaks when the indirect CSD has zeroed workgroups. 2. CSD jobs with zeroed workgroups shouldn't be submitted to hardware. This series intends to address both issues. Tested with the following CTS tests: - dEQP-VK.compute.*.indirect_dispatch.upload_buffer.empty_command_x* - dEQP-VK.compute.*.indirect_dispatch.upload_buffer.empty_command_y* - dEQP-VK.compute.*.indirect_dispatch.upload_buffer.empty_command_z* Best regards, - Maíra --- v1 -> v2: https://lore.kernel.org/r/[email protected] - [2/2] Don't check the whole cfg[0-2], check only the number of workgroups (Iago Toral) - [2/2] Add a comment about how the HW interprets 0 (Iago Toral) v2 -> v3: https://lore.kernel.org/r/[email protected] - [1/2, 2/2] Add Iago's R-b (Iago Toral) - [2/2] Adjust the comment to make it more accurate (Iago Toral) v3 -> v4: https://lore.kernel.org/r/[email protected] - [2/2] Always rewrite CFG[0..2] from the indirect buffer to avoid preserving stale contents from user space. --- Maíra Canal (2): drm/v3d: Fix vaddr leak when indirect CSD has zeroed workgroups drm/v3d: Skip CSD when it has zeroed workgroups drivers/gpu/drm/v3d/v3d_sched.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) --- base-commit: ae0383e5a9a4b12d68c76c4769857def4665deff change-id: 20260516-v3d-fix-indirect-csd-6806cf20a57a
