drm/nouveau/nv50-: separate CHANNEL_GPFIFO handling out from CHANNEL_DMA
authorBen Skeggs <bskeggs@nvidia.com>
Wed, 19 Jun 2024 04:15:22 +0000 (14:15 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 18 May 2025 21:14:44 +0000 (07:14 +1000)
commitd1fb887a08d8a21284e9a4be476f103353a32e7a
tree6c9b0bf711f8e60667dcd9a10e220ad0b5efcbca
parent627664de4b8e908b0e9073031dd5e0b6d565e759
drm/nouveau/nv50-: separate CHANNEL_GPFIFO handling out from CHANNEL_DMA

Primarily a cleanup to allow for changes in newer CHANNEL_GPFIFO classes
to be more easily implemented.

Compared to the prior implementation, this submits userspace push buffer
segments as subroutines and uses the NV_RAMUSERD_TOP_LEVEL_GET registers
to track the main (kernel) push buffer progress.

Fixes a number of sporadic failures seen during piglit runs.

Signed-off-by: Ben Skeggs <bskeggs@nvidia.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Timur Tabi <ttabi@nvidia.com>
Tested-by: Timur Tabi <ttabi@nvidia.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 files changed:
drivers/gpu/drm/nouveau/include/nvif/chan.h [new file with mode: 0644]
drivers/gpu/drm/nouveau/include/nvif/object.h
drivers/gpu/drm/nouveau/include/nvif/push.h
drivers/gpu/drm/nouveau/nouveau_abi16.c
drivers/gpu/drm/nouveau/nouveau_chan.c
drivers/gpu/drm/nouveau/nouveau_chan.h
drivers/gpu/drm/nouveau/nouveau_dma.c
drivers/gpu/drm/nouveau/nouveau_dma.h
drivers/gpu/drm/nouveau/nouveau_exec.c
drivers/gpu/drm/nouveau/nouveau_gem.c
drivers/gpu/drm/nouveau/nvif/Kbuild
drivers/gpu/drm/nouveau/nvif/chan.c [new file with mode: 0644]
drivers/gpu/drm/nouveau/nvif/chan506f.c [new file with mode: 0644]
drivers/gpu/drm/nouveau/nvif/chanc36f.c [new file with mode: 0644]