diff --git a/drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c b/drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c index d996b5dc0cb334fd1f7b39f6399f675c748b8960..34132aef34e1d12bdd2527f92b48a3449c33efef 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c +++ b/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); } diff --git a/drivers/gpu/drm/nouveau/core/subdev/bus/nv50.c b/drivers/gpu/drm/nouveau/core/subdev/bus/nv50.c index 0eed34f93e5326d5dd79e9eeae28516d4a4100c0..f5b2117fa8c6341f3797f258eeb2fa0008394cda 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/bus/nv50.c +++ b/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); }