Bug 10258

Summary: Radeon Suspend/Resume problem
Product: Drivers Reporter: Roland Stigge (stigge)
Component: Video(DRI - non Intel)Assignee: drivers_video-dri
Status: RESOLVED INSUFFICIENT_DATA    
Severity: normal CC: alan, bunk
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.25-rc3 Subsystem:
Regression: No Bisected commit-id:
Bug Depends on:    
Bug Blocks: 7216    

Description Roland Stigge 2008-03-16 04:20:33 UTC
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
Comment 1 Anonymous Emailer 2008-03-17 11:18:03 UTC
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
Comment 2 Roland Stigge 2008-03-17 13:09:24 UTC
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
Comment 3 Anonymous Emailer 2008-03-17 13:30:29 UTC
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
Comment 4 Roland Stigge 2008-03-18 01:27:57 UTC
Then, we are looking at different problems since I'm using 6.8.0.
Comment 5 Alan 2009-03-25 15:49:32 UTC
Closing out year old inactive bug