Lyude Paul
9887bda0c8
drm/nouveau/subdev/bus: Ratelimit logging for fault errors
...
There's plenty of ways to fudge the GPU when developing on nouveau by
mistake, some of which can result in nouveau seriously spamming dmesg with
fault errors. This can be somewhat annoying, as it can quickly overrun the
message buffer (or your terminal emulator's buffer) and get rid of actually
useful feedback from the driver. While working on my new atomic only MST
branch, I ran into this issue a couple of times.
So, let's fix this by adding nvkm_error_ratelimited(), and using it to
ratelimit errors from faults. This should be fine for developers, since
it's nearly always only the first few faults that we care about seeing.
Plus, you can turn off rate limiting in the kernel if you really need to.
Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Cc: stable@vger.kernel.org
Link: https://patchwork.freedesktop.org/patch/msgid/20220429195350.85620-1-lyude@redhat.com
2022-05-04 14:55:49 -04:00
Ben Skeggs
49b2dfc081
drm/nouveau/ga102-: support ttm buffer moves via copy engine
...
We don't currently have any kind of real acceleration on Ampere GPUs,
but the TTM memcpy() fallback paths aren't really designed to handle
copies between different devices, such as on Optimus systems, and
result in a kernel OOPS.
A few options were investigated to try and fix this, but didn't work
out, and likely would have resulted in a very unpleasant experience
for users anyway.
This commit adds just enough support for setting up a single channel
connected to a copy engine, which the kernel can use to accelerate
the buffer copies between devices. Userspace has no access to this
incomplete channel support, but it's suitable for TTM's needs.
A more complete implementation of host(fifo) for Ampere GPUs is in
the works, but the required changes are far too invasive that they
would be unsuitable to backport to fix this issue on current kernels.
v2: fix GPFIFO length in RAMFC (reported by Karol)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: Karol Herbst <kherbst@redhat.com>
Cc: <stable@vger.kernel.org> # v5.12+
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Tested-by: Karol Herbst <kherbst@redhat.com>
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210916220406.666454-1-skeggsb@gmail.com
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2021-10-06 11:05:45 +02:00
Ben Skeggs
59f216cf04
drm/nouveau: rip out nvkm_client.super
...
No longer required now that userspace can't touch anything that might
need it, and should fix DRM MM operations racing with each other, and
the random hangs/crashes that come with that.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-08-18 19:00:15 +10:00
Ben Skeggs
f6df392ddd
drm/nouveau/top/ga100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:50:04 +10:00
Ben Skeggs
18618fc6d1
drm/nouveau/top: add ioctrl/nvjpg
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:50:04 +10:00
Ben Skeggs
26fbb4c8c7
drm/nouveau/privring: rename from ibus
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:50:04 +10:00
Ben Skeggs
5ef25f068c
drm/nouveau/nvkm: remove nvkm_subdev.index
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:50:04 +10:00
Ben Skeggs
be0ed63f9b
drm/nouveau/nvkm: determine subdev id/order from layout
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:50:00 +10:00
Ben Skeggs
0fa5680c28
drm/nouveau/vic: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:50:00 +10:00
Ben Skeggs
8d6461d832
drm/nouveau/sw: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:50:00 +10:00
Ben Skeggs
d1866250a2
drm/nouveau/sec2: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:59 +10:00
Ben Skeggs
400c2a456c
drm/nouveau/sec: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:59 +10:00
Ben Skeggs
e73d371a73
drm/nouveau/pm: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:59 +10:00
Ben Skeggs
ee532a8d0e
drm/nouveau/nvenc: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:59 +10:00
Ben Skeggs
f8aeb13303
drm/nouveau/nvdec: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:59 +10:00
Ben Skeggs
b15147bd71
drm/nouveau/msvld: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:59 +10:00
Ben Skeggs
07a356bbe7
drm/nouveau/msppp: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:58 +10:00
Ben Skeggs
963216061c
drm/nouveau/mspdec: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:58 +10:00
Ben Skeggs
e9e9a219e4
drm/nouveau/msenc: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:58 +10:00
Ben Skeggs
e5e95a7639
drm/nouveau/mpeg: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:58 +10:00
Ben Skeggs
aba5e97b89
drm/nouveau/me: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:58 +10:00
Ben Skeggs
ee307030e9
drm/nouveau/ifb: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:58 +10:00
Ben Skeggs
864d37c3d8
drm/nouveau/gr: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:58 +10:00
Ben Skeggs
ba083ec7a6
drm/nouveau/fifo/gk104-: switch dev_top fault handling to type+inst
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:57 +10:00
Ben Skeggs
088bfe43f0
drm/nouveau/fifo/gf100-: switch static mmu fault id list to type+inst
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:57 +10:00
Ben Skeggs
ad3b0d331f
drm/nouveau/fifo: turn chan subdev mask into engine mask
...
This data is used to know which engines/classes are reachable on a given
channel's runlist, and needs to be replaced with something that doesn't
rely on subdev index.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:57 +10:00
Ben Skeggs
2546db0e0f
drm/nouveau/fifo: index base engctx by engine id
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:56 +10:00
Ben Skeggs
ab0db2bd85
drm/nouveau/fifo: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:56 +10:00
Ben Skeggs
09f409d74d
drm/nouveau/dma: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:56 +10:00
Ben Skeggs
a7f000ec56
drm/nouveau/disp: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:56 +10:00
Ben Skeggs
0b26ca68c9
drm/nouveau/cipher: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:56 +10:00
Ben Skeggs
50551b15c7
drm/nouveau/ce: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:56 +10:00
Ben Skeggs
b7da823a3e
drm/nouveau/falcon: use split type+inst when looking up PRI addr
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:55 +10:00
Ben Skeggs
fcc08a7c0d
drm/nouveau/bsp,vp: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:55 +10:00
Ben Skeggs
d07be5d788
drm/nouveau/volt: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:55 +10:00
Ben Skeggs
601c2a06d2
drm/nouveau/top: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:55 +10:00
Ben Skeggs
9aad54d5c7
drm/nouveau/tmr: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:55 +10:00
Ben Skeggs
0aec69c76e
drm/nouveau/therm: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:55 +10:00
Ben Skeggs
e4b15b4ca0
drm/nouveau/pmu: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:55 +10:00
Ben Skeggs
9b70cd54a1
drm/nouveau/pci: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:55 +10:00
Ben Skeggs
0a7bff10ae
drm/nouveau/mxm: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:54 +10:00
Ben Skeggs
6dd123ba8a
drm/nouveau/mmu: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:54 +10:00
Ben Skeggs
209ec1b841
drm/nouveau/mc: use split type+inst when handling dev_top interrupts
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:54 +10:00
Ben Skeggs
a35047ba77
drm/nouveau/mc: use split type+inst in interrupt masking API
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:54 +10:00
Ben Skeggs
6997ea1312
drm/nouveau/mc: use split type+inst in device reset APIs
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:54 +10:00
Ben Skeggs
1fc2fddfbc
drm/nouveau/mc: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:54 +10:00
Ben Skeggs
3b9e93f7d7
drm/nouveau/top: expose parsed device info more directly
...
This is easier to deal with in some situations than the existing accessor
functions.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:53 +10:00
Ben Skeggs
0afc1c4caa
drm/nouveau/ltc: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:53 +10:00
Ben Skeggs
d9691a2245
drm/nouveau/instmem: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:53 +10:00
Ben Skeggs
4dea1a9609
drm/nouveau/iccsense: switch to instanced constructor
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
2021-02-11 11:49:53 +10:00