Commit 32484216 authored by Marcin Slusarz's avatar Marcin Slusarz Committed by Ben Skeggs

drm/nouveau: decode PFIFO DMA_PUSHER error codes

Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 4dcf905c
...@@ -379,6 +379,15 @@ nouveau_fifo_swmthd(struct drm_device *dev, u32 chid, u32 addr, u32 data) ...@@ -379,6 +379,15 @@ nouveau_fifo_swmthd(struct drm_device *dev, u32 chid, u32 addr, u32 data)
return handled; return handled;
} }
static const char *nv_dma_state_err(u32 state)
{
static const char * const desc[] = {
"NONE", "CALL_SUBR_ACTIVE", "INVALID_MTHD", "RET_SUBR_INACTIVE",
"INVALID_CMD", "IB_EMPTY"/* NV50+ */, "MEM_FAULT", "UNK"
};
return desc[(state >> 29) & 0x7];
}
void void
nv04_fifo_isr(struct drm_device *dev) nv04_fifo_isr(struct drm_device *dev)
{ {
...@@ -460,9 +469,10 @@ nv04_fifo_isr(struct drm_device *dev) ...@@ -460,9 +469,10 @@ nv04_fifo_isr(struct drm_device *dev)
if (nouveau_ratelimit()) if (nouveau_ratelimit())
NV_INFO(dev, "PFIFO_DMA_PUSHER - Ch %d Get 0x%02x%08x " NV_INFO(dev, "PFIFO_DMA_PUSHER - Ch %d Get 0x%02x%08x "
"Put 0x%02x%08x IbGet 0x%08x IbPut 0x%08x " "Put 0x%02x%08x IbGet 0x%08x IbPut 0x%08x "
"State 0x%08x Push 0x%08x\n", "State 0x%08x (err: %s) Push 0x%08x\n",
chid, ho_get, dma_get, ho_put, chid, ho_get, dma_get, ho_put,
dma_put, ib_get, ib_put, state, dma_put, ib_get, ib_put, state,
nv_dma_state_err(state),
push); push);
/* METHOD_COUNT, in DMA_STATE on earlier chipsets */ /* METHOD_COUNT, in DMA_STATE on earlier chipsets */
...@@ -476,8 +486,9 @@ nv04_fifo_isr(struct drm_device *dev) ...@@ -476,8 +486,9 @@ nv04_fifo_isr(struct drm_device *dev)
} }
} else { } else {
NV_INFO(dev, "PFIFO_DMA_PUSHER - Ch %d Get 0x%08x " NV_INFO(dev, "PFIFO_DMA_PUSHER - Ch %d Get 0x%08x "
"Put 0x%08x State 0x%08x Push 0x%08x\n", "Put 0x%08x State 0x%08x (err: %s) Push 0x%08x\n",
chid, dma_get, dma_put, state, push); chid, dma_get, dma_put, state,
nv_dma_state_err(state), push);
if (dma_get != dma_put) if (dma_get != dma_put)
nv_wr32(dev, 0x003244, dma_put); nv_wr32(dev, 0x003244, dma_put);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment