From: Marek Czernohous <mczernohous@gmail.com>
To: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org, Danilo Krummrich <dakr@kernel.org>,
Lyude Paul <lyude@redhat.com>, David Airlie <airlied@gmail.com>,
Simona Vetter <simona@ffwll.ch>, Ben Skeggs <bskeggs@nvidia.com>
Subject: [PATCH v3 3/4] drm/nouveau/fifo/nv04: filter benign CACHE_ERROR from Mesa NV50 bind probe
Date: Thu, 13 Aug 2026 01:13:29 +0200 [thread overview]
Message-ID: <20260812231330.705425-4-mczernohous@gmail.com> (raw)
In-Reply-To: <20260812231330.705425-1-mczernohous@gmail.com>
From: Marek Czernohous <marek@czernohous.de>
The Mesa userspace driver issues a method-0x0060 / data-0xbeef02xx
binding probe that ends up triggering CACHE_ERROR in the PFIFO
interrupt handler. The probe is harmless and recovers cleanly, but it
is reported at error level, so it shows up in dmesg on session start.
Filter that specific pattern down to debug level so dmesg stays clean
while real CACHE_ERROR conditions are still logged at error level.
The test is on the method and data pattern alone, not on the chip
family, so it applies wherever nv04_fifo_intr() is the handler, that is
nv04 through g98. That is deliberate rather than an oversight: a false
positive would need userspace to write exactly 0xbeef02xx to method
0x0060, and the probe itself comes from the shared nouveau Gallium code
rather than from anything NV50 specific. Say so here so the narrower
wording of the subject is not read as a chip gate.
Evidence: 99 occurrences across three logs from a second, independent
MCP79/MCP7A machine running 7.0.10 and 6.12.90, under both Xorg and
Wayland, with kwin and plasmashell named as the faulting clients. On my
own reference machine the filter went in before the persistent kernel
log did, so I cannot show a clean before and after from there.
Assisted-by: Claude:claude-opus-5
Signed-off-by: Marek Czernohous <marek@czernohous.de>
---
.../gpu/drm/nouveau/nvkm/engine/fifo/nv04.c | 26 ++++++++++++++-----
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
index c4b8e567d86f..ab144c1bd9da 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
@@ -327,12 +327,26 @@ nv04_fifo_intr_cache_error(struct nvkm_fifo *fifo, u32 chid, u32 get)
if (!(pull0 & 0x00000100) ||
!nv04_fifo_swmthd(device, chid, mthd, data)) {
- chan = nvkm_chan_get_chid(&fifo->engine, chid, &flags);
- nvkm_error(subdev, "CACHE_ERROR - "
- "ch %d [%s] subc %d mthd %04x data %08x\n",
- chid, chan ? chan->name : "unknown",
- (mthd >> 13) & 7, mthd & 0x1ffc, data);
- nvkm_chan_put(&chan, flags);
+ /*
+ * Filter the benign Mesa bind probe: mthd 0x0060 with data
+ * 0xbeef02xx is a harmless userspace probe and does not
+ * indicate an actual error condition. The test is on the
+ * method and data pattern alone, so it applies on every
+ * chip that reaches this handler, not just on Tesla.
+ * Demote to debug to keep dmesg clean while still catching
+ * real CACHE_ERROR events.
+ */
+ if ((mthd & 0x1ffc) == 0x0060 &&
+ (data & 0xffffff00) == 0xbeef0200) {
+ nvkm_debug(subdev, "CACHE_ERROR - ch %d subc %d mthd %04x data %08x (benign, skipped)\n",
+ chid, (mthd >> 13) & 7, mthd & 0x1ffc, data);
+ } else {
+ chan = nvkm_chan_get_chid(&fifo->engine, chid, &flags);
+ nvkm_error(subdev, "CACHE_ERROR - ch %d [%s] subc %d mthd %04x data %08x\n",
+ chid, chan ? chan->name : "unknown",
+ (mthd >> 13) & 7, mthd & 0x1ffc, data);
+ nvkm_chan_put(&chan, flags);
+ }
}
nvkm_wr32(device, NV04_PFIFO_CACHE1_DMA_PUSH, 0);
--
2.54.0
WARNING: multiple messages have this Message-ID (diff)
From: Marek Czernohous <mczernohous@gmail.com>
To: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org, Danilo Krummrich <dakr@kernel.org>,
Simona Vetter <simona@ffwll.ch>, Ben Skeggs <bskeggs@nvidia.com>
Subject: [PATCH v3 3/4] drm/nouveau/fifo/nv04: filter benign CACHE_ERROR from Mesa NV50 bind probe
Date: Thu, 13 Aug 2026 01:13:29 +0200 [thread overview]
Message-ID: <20260812231330.705425-4-mczernohous@gmail.com> (raw)
In-Reply-To: <20260812231330.705425-1-mczernohous@gmail.com>
From: Marek Czernohous <marek@czernohous.de>
The Mesa userspace driver issues a method-0x0060 / data-0xbeef02xx
binding probe that ends up triggering CACHE_ERROR in the PFIFO
interrupt handler. The probe is harmless and recovers cleanly, but it
is reported at error level, so it shows up in dmesg on session start.
Filter that specific pattern down to debug level so dmesg stays clean
while real CACHE_ERROR conditions are still logged at error level.
The test is on the method and data pattern alone, not on the chip
family, so it applies wherever nv04_fifo_intr() is the handler, that is
nv04 through g98. That is deliberate rather than an oversight: a false
positive would need userspace to write exactly 0xbeef02xx to method
0x0060, and the probe itself comes from the shared nouveau Gallium code
rather than from anything NV50 specific. Say so here so the narrower
wording of the subject is not read as a chip gate.
Evidence: 99 occurrences across three logs from a second, independent
MCP79/MCP7A machine running 7.0.10 and 6.12.90, under both Xorg and
Wayland, with kwin and plasmashell named as the faulting clients. On my
own reference machine the filter went in before the persistent kernel
log did, so I cannot show a clean before and after from there.
Assisted-by: Claude:claude-opus-5
Signed-off-by: Marek Czernohous <marek@czernohous.de>
---
.../gpu/drm/nouveau/nvkm/engine/fifo/nv04.c | 26 ++++++++++++++-----
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
index c4b8e567d86f..ab144c1bd9da 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
@@ -327,12 +327,26 @@ nv04_fifo_intr_cache_error(struct nvkm_fifo *fifo, u32 chid, u32 get)
if (!(pull0 & 0x00000100) ||
!nv04_fifo_swmthd(device, chid, mthd, data)) {
- chan = nvkm_chan_get_chid(&fifo->engine, chid, &flags);
- nvkm_error(subdev, "CACHE_ERROR - "
- "ch %d [%s] subc %d mthd %04x data %08x\n",
- chid, chan ? chan->name : "unknown",
- (mthd >> 13) & 7, mthd & 0x1ffc, data);
- nvkm_chan_put(&chan, flags);
+ /*
+ * Filter the benign Mesa bind probe: mthd 0x0060 with data
+ * 0xbeef02xx is a harmless userspace probe and does not
+ * indicate an actual error condition. The test is on the
+ * method and data pattern alone, so it applies on every
+ * chip that reaches this handler, not just on Tesla.
+ * Demote to debug to keep dmesg clean while still catching
+ * real CACHE_ERROR events.
+ */
+ if ((mthd & 0x1ffc) == 0x0060 &&
+ (data & 0xffffff00) == 0xbeef0200) {
+ nvkm_debug(subdev, "CACHE_ERROR - ch %d subc %d mthd %04x data %08x (benign, skipped)\n",
+ chid, (mthd >> 13) & 7, mthd & 0x1ffc, data);
+ } else {
+ chan = nvkm_chan_get_chid(&fifo->engine, chid, &flags);
+ nvkm_error(subdev, "CACHE_ERROR - ch %d [%s] subc %d mthd %04x data %08x\n",
+ chid, chan ? chan->name : "unknown",
+ (mthd >> 13) & 7, mthd & 0x1ffc, data);
+ nvkm_chan_put(&chan, flags);
+ }
}
nvkm_wr32(device, NV04_PFIFO_CACHE1_DMA_PUSH, 0);
--
2.54.0
next prev parent reply other threads:[~2026-08-12 23:13 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-12 23:13 [PATCH v3 0/4] drm/nouveau: channel-kill event ordering fixes, and lower the gate to NV50 Marek Czernohous
2026-08-12 23:13 ` Marek Czernohous
2026-08-12 23:13 ` [PATCH v3 1/4] drm/nouveau: unsubscribe the channel-kill event before the fence context Marek Czernohous
2026-08-12 23:13 ` Marek Czernohous
2026-08-12 23:30 ` sashiko-bot
2026-08-12 23:13 ` [PATCH v3 2/4] drm/nouveau: subscribe to the channel-kill event after " Marek Czernohous
2026-08-12 23:13 ` Marek Czernohous
2026-08-12 23:25 ` sashiko-bot
2026-08-12 23:13 ` Marek Czernohous [this message]
2026-08-12 23:13 ` [PATCH v3 3/4] drm/nouveau/fifo/nv04: filter benign CACHE_ERROR from Mesa NV50 bind probe Marek Czernohous
2026-08-12 23:13 ` [PATCH v3 4/4] drm/nouveau: subscribe to channel-kill events on NV50 and newer Marek Czernohous
2026-08-12 23:13 ` Marek Czernohous
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260812231330.705425-4-mczernohous@gmail.com \
--to=mczernohous@gmail.com \
--cc=airlied@gmail.com \
--cc=bskeggs@nvidia.com \
--cc=dakr@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lyude@redhat.com \
--cc=nouveau@lists.freedesktop.org \
--cc=simona@ffwll.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.