Browse Source

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>
Martin Peres 12 years ago
parent
commit
9d7175c808

+ 8 - 2
drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c

@@ -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);
 	}

+ 7 - 1
drivers/gpu/drm/nouveau/core/subdev/bus/nv50.c

@@ -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);
 	}