浏览代码

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 年之前
父节点
当前提交
9d7175c808
共有 2 个文件被更改,包括 15 次插入3 次删除
  1. 8 2
      drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c
  2. 7 1
      drivers/gpu/drm/nouveau/core/subdev/bus/nv50.c

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