drm/nv41/bus: report useful data on mmio fault

Based on Ben Skeggs's nvc0 patch. Tested on my nv4b, 84 and 92.

Signed-off-by: Martin Peres <martin.peres@labri.fr>
This commit is contained in:
Martin Peres 2012-12-07 02:26:02 +01:00 committed by Ben Skeggs
parent 382b5bbb4a
commit 9d7175c808
2 changed files with 15 additions and 3 deletions

View File

@ -42,8 +42,14 @@ nv31_bus_intr(struct nouveau_subdev *subdev)
subdev->intr(subdev);
}
if (stat & 0x00000008) {
nv_error(pbus, "MMIO FAULT\n"); /* NV41- */
if (stat & 0x00000008) { /* NV41- */
u32 addr = nv_rd32(pbus, 0x009084);
u32 data = nv_rd32(pbus, 0x009088);
nv_error(pbus, "MMIO %s of 0x%08x FAULT at 0x%06x\n",
(addr & 0x00000002) ? "write" : "read", data,
(addr & 0x00fffffc));
stat &= ~0x00000008;
nv_wr32(pbus, 0x001100, 0x00000008);
}

View File

@ -36,7 +36,13 @@ nv50_bus_intr(struct nouveau_subdev *subdev)
u32 stat = nv_rd32(pbus, 0x001100) & nv_rd32(pbus, 0x001140);
if (stat & 0x00000008) {
nv_error(pbus, "MMIO FAULT\n");
u32 addr = nv_rd32(pbus, 0x009084);
u32 data = nv_rd32(pbus, 0x009088);
nv_error(pbus, "MMIO %s of 0x%08x FAULT at 0x%06x\n",
(addr & 0x00000002) ? "write" : "read", data,
(addr & 0x00fffffc));
stat &= ~0x00000008;
nv_wr32(pbus, 0x001100, 0x00000008);
}