Hi, when trying Suspend-To-RAM and Suspend-To-Disk with Linux (2.6.25-rc3), I encountered that suspend/resume works fine except when activating DRM/DRI for my Radeon 9200 SE (RV280). I traced the code up to the point where I'm missing appropriate hardware information/experience. Please point me in the right direction. As you can see in the debug trace below, on resume the microcode is loaded. Unfortunately, radeon_do_wait_for_idle() and radeon_do_wait_for_fifo() return -EBUSY. On the first ioctl(), radeon_do_wait_for_idle() correctly checks the fifo but breaks because of RBBM_STATUS flagging "BUSY" (bit 31). On the next calls, already radeon_do_wait_for_fifo() has a problem because the fifo is filling up (RBBM_STATUS bits 6-0). This goes infinitely because userspace does it like this. At some point the available fifo slots are down to 0 and stay there. I think we need some further reinitialization of the just switched on device, but I don't know which one. Mar 2 14:45:37 atari kernel: agpgart: Putting AGP V3 device at 0000:00:00.0 into 8x mode Mar 2 14:45:37 atari kernel: agpgart: Putting AGP V3 device at 0000:01:00.0 into 8x mode Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] pid=3123, cmd=0x80206433, nr=0x33, dev 0xe200, auth=1 Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] pid=3123, cmd=0x6458, nr=0x58, dev 0xe200, auth=1 Mar 2 14:45:37 atari kernel: [drm:radeon_do_resume_cp] Starting radeon_do_resume_cp() Mar 2 14:45:37 atari kernel: [drm:radeon_cp_load_microcode] Mar 2 14:45:37 atari kernel: [drm] Loading R200 Microcode Mar 2 14:45:37 atari kernel: [drm:radeon_do_engine_reset] Mar 2 14:45:37 atari kernel: [drm:radeon_do_cp_reset] Mar 2 14:45:37 atari kernel: [drm:radeon_do_resume_cp] radeon_do_resume_cp() complete Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] pid=3123, cmd=0x6441, nr=0x41, dev 0xe200, auth=1 Mar 2 14:45:37 atari kernel: [drm:radeon_cp_start] Mar 2 14:45:37 atari kernel: [drm:radeon_do_cp_start] Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] pid=3123, cmd=0x6444, nr=0x44, dev 0xe200, auth=1 Mar 2 14:45:37 atari kernel: [drm:radeon_cp_idle] Mar 2 14:45:37 atari kernel: [drm:radeon_do_cp_idle] Mar 2 14:45:37 atari kernel: [drm:radeon_do_wait_for_idle] *ERROR* failed! Mar 2 14:45:37 atari kernel: radeon_status: Mar 2 14:45:37 atari kernel: RBBM_STATUS = 0x80116140 Mar 2 14:45:37 atari kernel: CP_RB_RTPR = 0x0000000c Mar 2 14:45:37 atari kernel: CP_RB_WTPR = 0x0000000c Mar 2 14:45:37 atari kernel: AIC_CNTL = 0x00000000 Mar 2 14:45:37 atari kernel: AIC_STAT = 0x00000004 Mar 2 14:45:37 atari kernel: AIC_PT_BASE = 0x00000000 Mar 2 14:45:37 atari kernel: TLB_ADDR = 0x00000000 Mar 2 14:45:37 atari kernel: TLB_DATA = 0x00000000 Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] ret = fffffff0 Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] pid=3123, cmd=0x6444, nr=0x44, dev 0xe200, auth=1 Mar 2 14:45:37 atari kernel: [drm:radeon_cp_idle] Mar 2 14:45:37 atari kernel: [drm:radeon_do_cp_idle] Mar 2 14:45:37 atari kernel: [drm:radeon_do_wait_for_fifo] *ERROR* failed! Mar 2 14:45:37 atari kernel: timeout reached: 10000 usec Mar 2 14:45:37 atari kernel: radeon_status: Mar 2 14:45:37 atari kernel: RBBM_STATUS = 0x8011613b Mar 2 14:45:37 atari kernel: CP_RB_RTPR = 0x00000012 Mar 2 14:45:37 atari kernel: CP_RB_WTPR = 0x00000012 Mar 2 14:45:37 atari kernel: AIC_CNTL = 0x00000000 Mar 2 14:45:37 atari kernel: AIC_STAT = 0x00000004 Mar 2 14:45:37 atari kernel: AIC_PT_BASE = 0x00000000 Mar 2 14:45:37 atari kernel: TLB_ADDR = 0x00000000 Mar 2 14:45:37 atari kernel: TLB_DATA = 0x00000000 Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] ret = fffffff0 Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] pid=3123, cmd=0x6444, nr=0x44, dev 0xe200, auth=1 Mar 2 14:45:37 atari kernel: [drm:radeon_cp_idle] Mar 2 14:45:37 atari kernel: [drm:radeon_do_cp_idle] Mar 2 14:45:37 atari kernel: [drm:radeon_do_wait_for_fifo] *ERROR* failed! Mar 2 14:45:37 atari kernel: timeout reached: 10000 usec Mar 2 14:45:37 atari kernel: radeon_status: Mar 2 14:45:37 atari kernel: RBBM_STATUS = 0x80116135 Mar 2 14:45:37 atari kernel: CP_RB_RTPR = 0x00000018 Mar 2 14:45:37 atari kernel: CP_RB_WTPR = 0x00000018 Mar 2 14:45:37 atari kernel: AIC_CNTL = 0x00000000 Mar 2 14:45:37 atari kernel: AIC_STAT = 0x00000004 Mar 2 14:45:37 atari kernel: AIC_PT_BASE = 0x00000000 Mar 2 14:45:37 atari kernel: TLB_ADDR = 0x00000000 Mar 2 14:45:37 atari kernel: TLB_DATA = 0x00000000 Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] ret = fffffff0 Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] pid=3123, cmd=0x6444, nr=0x44, dev 0xe200, auth=1 Mar 2 14:45:37 atari kernel: [drm:radeon_cp_idle] Mar 2 14:45:37 atari kernel: [drm:radeon_do_cp_idle] Mar 2 14:45:37 atari kernel: [drm:radeon_do_wait_for_fifo] *ERROR* failed! Mar 2 14:45:37 atari kernel: timeout reached: 10000 usec Mar 2 14:45:37 atari kernel: radeon_status: Mar 2 14:45:37 atari kernel: RBBM_STATUS = 0x8011612f Mar 2 14:45:37 atari kernel: CP_RB_RTPR = 0x0000001e Mar 2 14:45:37 atari kernel: CP_RB_WTPR = 0x0000001e Mar 2 14:45:37 atari kernel: AIC_CNTL = 0x00000000 Mar 2 14:45:37 atari kernel: AIC_STAT = 0x00000004 Mar 2 14:45:37 atari kernel: AIC_PT_BASE = 0x00000000 Mar 2 14:45:37 atari kernel: TLB_ADDR = 0x00000000 Mar 2 14:45:37 atari kernel: TLB_DATA = 0x00000000 Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] ret = fffffff0 Mar 2 14:45:37 atari kernel: [drm:drm_ioctl] pid=3123, cmd=0x6444, nr=0x44, dev 0xe200, auth=1 Mar 2 14:45:37 atari kernel: [drm:radeon_cp_idle] Mar 2 14:45:37 atari kernel: [drm:radeon_do_cp_idle] Mar 2 14:45:37 atari kernel: [drm:radeon_do_wait_for_fifo] *ERROR* failed! Mar 2 14:45:37 atari kernel: timeout reached: 10000 usec Thanks in advance, Roland
Reply-To: alexdeucher@gmail.com On Sun, Mar 16, 2008 at 7:20 AM, <bugme-daemon@bugzilla.kernel.org> wrote: > http://bugzilla.kernel.org/show_bug.cgi?id=10258 > > Summary: Radeon Suspend/Resume problem > Product: Drivers > Version: 2.5 > KernelVersion: 2.6.25-rc3 > Platform: All > OS/Version: Linux > Tree: Mainline > Status: NEW > Severity: normal > Priority: P1 > Component: Video(DRI) > AssignedTo: drivers_video-dri@kernel-bugs.osdl.org > ReportedBy: stigge@antcom.de > > > Hi, > > when trying Suspend-To-RAM and Suspend-To-Disk with Linux (2.6.25-rc3), > I encountered that suspend/resume works fine except when activating > DRM/DRI for my Radeon 9200 SE (RV280). > > I traced the code up to the point where I'm missing appropriate hardware > information/experience. Please point me in the right direction. What version of the radeon ddx are you using? Does the ddx patch in http://bugs.freedesktop.org/show_bug.cgi?id=14980 help? Alex
Hi, thanks for the hint. Unfortunately, both patches in fd.org/14980 don't apply. I'm using xf86-video-ati-6.8.0.tar.gz (as used in Debian's xserver-xorg-video-ati). But both the original tarball and the Debian one don't make it apply. Maybe I'm supposed to be looking somewhere else? Thanks, Roland
Reply-To: alexdeucher@gmail.com On Mon, Mar 17, 2008 at 4:09 PM, <bugme-daemon@bugzilla.kernel.org> wrote: > http://bugzilla.kernel.org/show_bug.cgi?id=10258 > > > > > > ------- Comment #2 from stigge@antcom.de 2008-03-17 13:09 ------- > Hi, > > thanks for the hint. Unfortunately, both patches in fd.org/14980 don't > apply. > I'm using xf86-video-ati-6.8.0.tar.gz (as used in Debian's > xserver-xorg-video-ati). But both the original tarball and the Debian one > don't > make it apply. > > Maybe I'm supposed to be looking somewhere else? The issue I mentioned does not apply to 6.8.0. Alex
Then, we are looking at different problems since I'm using 6.8.0.
Closing out year old inactive bug