Skip to content

Commit 86e18eb

Browse files
author
Ben Skeggs
committed
drm/nouveau/disp/gv100-: not all channel types support reporting error codes
Signed-off-by: Ben Skeggs <[email protected]>
1 parent 0e6176c commit 86e18eb

File tree

1 file changed

+17
-6
lines changed
  • drivers/gpu/drm/nouveau/nvkm/engine/disp

1 file changed

+17
-6
lines changed

drivers/gpu/drm/nouveau/nvkm/engine/disp/gv100.c

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,26 @@ gv100_disp_exception(struct nv50_disp *disp, int chid)
101101
u32 stat = nvkm_rd32(device, 0x611020 + (chid * 12));
102102
u32 type = (stat & 0x00007000) >> 12;
103103
u32 mthd = (stat & 0x00000fff) << 2;
104-
u32 data = nvkm_rd32(device, 0x611024 + (chid * 12));
105-
u32 code = nvkm_rd32(device, 0x611028 + (chid * 12));
106104
const struct nvkm_enum *reason =
107105
nvkm_enum_find(nv50_disp_intr_error_type, type);
108106

109-
nvkm_error(subdev, "chid %d stat %08x reason %d [%s] mthd %04x "
110-
"data %08x code %08x\n",
111-
chid, stat, type, reason ? reason->name : "",
112-
mthd, data, code);
107+
/*TODO: Suspect 33->41 are for WRBK channel exceptions, but we
108+
* don't support those currently.
109+
*
110+
* CORE+WIN CHIDs map directly to the FE_EXCEPT() slots.
111+
*/
112+
if (chid <= 32) {
113+
u32 data = nvkm_rd32(device, 0x611024 + (chid * 12));
114+
u32 code = nvkm_rd32(device, 0x611028 + (chid * 12));
115+
nvkm_error(subdev, "chid %d stat %08x reason %d [%s] "
116+
"mthd %04x data %08x code %08x\n",
117+
chid, stat, type, reason ? reason->name : "",
118+
mthd, data, code);
119+
} else {
120+
nvkm_error(subdev, "chid %d stat %08x reason %d [%s] "
121+
"mthd %04x\n",
122+
chid, stat, type, reason ? reason->name : "", mthd);
123+
}
113124

114125
if (chid < ARRAY_SIZE(disp->chan) && disp->chan[chid]) {
115126
switch (mthd) {

0 commit comments

Comments
 (0)