862450a8 | 19-Jun-2024 |
Ben Skeggs <bskeggs@nvidia.com> |
drm/nouveau/gf100-: track chan progress with non-WFI semaphore release
From VOLTA_CHANNEL_GPFIFO_A onwards, HW no longer updates the GET/GP_GET pointers in USERD following channel progress, but inst
drm/nouveau/gf100-: track chan progress with non-WFI semaphore release
From VOLTA_CHANNEL_GPFIFO_A onwards, HW no longer updates the GET/GP_GET pointers in USERD following channel progress, but instead updates on a timer for compatibility, and SW is expected to implement its own method of tracking channel progress (typically via non-WFI semaphore release).
Nouveau has been making use of the compatibility mode up until now, however, from BLACKWELL_CHANNEL_GPFIFO_A HW no longer supports USERD writeback at all.
Allocate a per-channel buffer in system memory, and append a non-WFI semaphore release to the end of each push buffer segment to simulate the pointers previously read from USERD.
This change is implemented for Fermi (which is the first to support non- WFI semaphore release) onwards, as readback from system memory is likely faster than BAR1 reads.
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>
show more ...
|
8d7b2d3a | 26-Jul-2024 |
Ben Skeggs <bskeggs@nvidia.com> |
drm/nouveau/nvif: remove disp chan rd/wr
There's no good reason the ioremap() that results from nvif_object_map() should fail, so add a check that the map succeeded, and remove the rd/wr methods fro
drm/nouveau/nvif: remove disp chan rd/wr
There's no good reason the ioremap() that results from nvif_object_map() should fail, so add a check that the map succeeded, and remove the rd/wr methods from display channel objects.
As this was the last user of rd/wr methods, the nvif plumbing is removed at the same time.
Signed-off-by: Ben Skeggs <bskeggs@nvidia.com> Signed-off-by: Danilo Krummrich <dakr@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-27-bskeggs@nvidia.com
show more ...
|
cced63c3 | 26-Jul-2024 |
Ben Skeggs <bskeggs@nvidia.com> |
drm/nouveau: always map device
The next commit removes the nvif rd/wr methods from nvif_device, which were probably a bad idea, and mostly intended as a fallback if ioremap() failed (or wasn't avail
drm/nouveau: always map device
The next commit removes the nvif rd/wr methods from nvif_device, which were probably a bad idea, and mostly intended as a fallback if ioremap() failed (or wasn't available, as was the case in some tools I once used).
The nv04 KMS driver already mapped the device, because it's mostly been kept alive on life-support for many years and still directly bashes PRI a lot for modesetting.
Post-nv50, I tried pretty hard to keep PRI accesses out of the DRM code, but there's still a few random places where we do, and those were using the rd/wr paths prior to this commit.
This allocates and maps a new nvif_device (which will replace the usage of nouveau_drm.master.device later on), and replicates this pointer to all other possible users.
This will be cleaned up by the end of another patch series, after it's been made safe to do so.
Signed-off-by: Ben Skeggs <bskeggs@nvidia.com> Signed-off-by: Danilo Krummrich <dakr@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-25-bskeggs@nvidia.com
show more ...
|
fabc65d1 | 26-Jul-2024 |
Ben Skeggs <bskeggs@nvidia.com> |
drm/nouveau/nvif: remove device args
These were once used by used by userspace tools (with nvkm built as a library), to access multiple GPUs from a single nvif_client.
The DRM code just uses the dr
drm/nouveau/nvif: remove device args
These were once used by used by userspace tools (with nvkm built as a library), to access multiple GPUs from a single nvif_client.
The DRM code just uses the driver's default device, so remove the arguments.
Signed-off-by: Ben Skeggs <bskeggs@nvidia.com> Signed-off-by: Danilo Krummrich <dakr@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-24-bskeggs@nvidia.com
show more ...
|
c45c999c | 26-Jul-2024 |
Ben Skeggs <bskeggs@nvidia.com> |
drm/nouveau/nvif: remove client devlist
This was once used by userspace tools (with nvkm built as a library), but is now unused.
Signed-off-by: Ben Skeggs <bskeggs@nvidia.com> Signed-off-by: Danilo
drm/nouveau/nvif: remove client devlist
This was once used by userspace tools (with nvkm built as a library), but is now unused.
Signed-off-by: Ben Skeggs <bskeggs@nvidia.com> Signed-off-by: Danilo Krummrich <dakr@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-22-bskeggs@nvidia.com
show more ...
|
def122b6 | 26-Jul-2024 |
Ben Skeggs <bskeggs@nvidia.com> |
drm/nouveau/nvif: remove client version
This is not, and has never, been used for anything. Remove it.
Signed-off-by: Ben Skeggs <bskeggs@nvidia.com> Signed-off-by: Danilo Krummrich <dakr@kernel.o
drm/nouveau/nvif: remove client version
This is not, and has never, been used for anything. Remove it.
Signed-off-by: Ben Skeggs <bskeggs@nvidia.com> Signed-off-by: Danilo Krummrich <dakr@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-21-bskeggs@nvidia.com
show more ...
|
a897f65b | 26-Jul-2024 |
Ben Skeggs <bskeggs@nvidia.com> |
drm/nouveau/nvif: remove client device arg
This was once used by userspace tools (with nvkm built as a library), as a way to select a "default device".
The DRM code doesn't need this at all as clie
drm/nouveau/nvif: remove client device arg
This was once used by userspace tools (with nvkm built as a library), as a way to select a "default device".
The DRM code doesn't need this at all as clients only have access to a single device already, so inherit the value from its parent.
Signed-off-by: Ben Skeggs <bskeggs@nvidia.com> Signed-off-by: Danilo Krummrich <dakr@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-20-bskeggs@nvidia.com
show more ...
|
455167e8 | 26-Jul-2024 |
Ben Skeggs <bskeggs@nvidia.com> |
drm/nouveau/nvif: remove nvxx_object()
This hasn't been used in a while.
Moves io accessors from nvkm/core/os.h to nvif/os.h at the same time to fix a compile issue that results from <nvkm/core/obj
drm/nouveau/nvif: remove nvxx_object()
This hasn't been used in a while.
Moves io accessors from nvkm/core/os.h to nvif/os.h at the same time to fix a compile issue that results from <nvkm/core/object.h> no longer being included.
Signed-off-by: Ben Skeggs <bskeggs@nvidia.com> Signed-off-by: Danilo Krummrich <dakr@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-17-bskeggs@nvidia.com
show more ...
|