Comment 4 for bug 820746

Revision history for this message
a.r.karthick@gmail.com (a-r-karthick) wrote :

Just to avoid confusion as rdev->cp.wptr is unsigned, by negative I implied that it was ~0 or 0xffffffffU; when read in r600_cp_resume.
So an increment: add $1, %eax before the OOPs wrapped it back to 0. as EAX or the ring buffer write pointer index at the time of the panic was shown as 0. Since the increment had happened before the fault, it had to be ~0 or 0xffffffffU on resume which is again an invalid write pointer value for the radeon ring buffer.

So we retry till we get a sane value for the read and write pointer for the radeon ring buffer on RESUME in r600_cp_resume. Have a strong hunch that it would fix the panic as this seems to be a timing issue with reading registers on resume. (maybe the device isn't ready yet when the resume tries to fetch the read and write indexes)