On Don, 2011-12-08 at 19:35 +0800, chenhc@lemote.com wrote:
I found CP_RB_WPTR has changed when "ring test failed", so I think CP is active, but what it get from ring buffer is wrong.
CP_RB_WPTR is normally only changed by the CPU after adding commands to the ring buffer, so I'm afraid that may not be a valid conclusion.
Then, I want to know whether there is a way to check the content that GPU get from ring buffer.
See the r100_debugfs_cp_csq_fifo() function, which generates the output for /sys/kernel/debug/dri/0/r100_cp_csq_fifo.
BTW, when I use "echo shutdown > /sys/power/disk; echo disk > /sys/power/state" to do a hibernation, there will be occasionally "GPU reset" just like suspend. However, if I use "echo reboot > /sys/power/disk; echo disk > /sys/power/state" to do a hibernation and wakeup automatically, there is no "GPU reset" after hundreds of tests. What does this imply? Power loss cause something break?
Yeah, it sounds like the resume code doesn't properly re-initialize something that's preserved on a warm boot but lost on a cold boot.