Bug 67121 - Broken suspend/resume with radeon/KMS on RS482M
Summary: Broken suspend/resume with radeon/KMS on RS482M
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: Video(DRI - non Intel) (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: drivers_video-dri
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-12-16 15:14 UTC by Adrian Knoth
Modified: 2016-03-23 18:58 UTC (History)
2 users (show)

See Also:
Kernel Version: 3.12.5
Subsystem:
Regression: No
Bisected commit-id:


Attachments
Xorg-log (39.71 KB, text/x-log)
2013-12-16 15:15 UTC, Adrian Knoth
Details
radeontool regmatch after fresh boot with AC (19.76 KB, application/octet-stream)
2013-12-16 15:15 UTC, Adrian Knoth
Details
radeontool regmatch after fresh AC boot, then AC removed (19.77 KB, application/octet-stream)
2013-12-16 15:16 UTC, Adrian Knoth
Details
radeontool regmatch after fresh boot and AC removed, then AC put back in (19.77 KB, application/octet-stream)
2013-12-16 15:17 UTC, Adrian Knoth
Details
radeontool regmatch after suspend/resume with AC (19.74 KB, application/octet-stream)
2013-12-16 15:17 UTC, Adrian Knoth
Details
radeontool regmatch after suspend/resume, then AC removed (19.75 KB, application/octet-stream)
2013-12-16 15:18 UTC, Adrian Knoth
Details

Description Adrian Knoth 2013-12-16 15:14:25 UTC
Hi!

This report is somewhat similar to https://bugzilla.kernel.org/show_bug.cgi?id=43441, but since it's about a different card and slightly different focus, I didn't want to pollute the other bug report with potentially misleading information.

Here's the problem: First suspend/resume cycle works, second may fail at either suspend or resume, the machine simply hangs. Sometimes, just sometimes, the second cycle might fully succeed, in this case, the third attempt is bound to fail.

After the first suspend/resume cycle, removing AC power will cripple the output as seen in these videos: 

   http://adi.loris.tv/radeon-kms1.mp4

   http://adi.loris.tv/radeon-kms2.mp4

Plugging AC back in will fix the issue until I remove the power supply again, resulting in the same distortion. Note that AC plug/removal has to take place when the machine is running, those events don't do a thing during suspend, so something is clearly acting to these ACPI events, though I couldn't spot any code in radeon that handles power events on such an old card.

I'm going to attach five register dumps taken in the following sequence:

1. Fresh boot with AC plugged in (freshboot-powered)
2. Now let's remove the AC while running, no reboot (freshboot-unpowered)
3. Now let's put the AC back in (freshboot-powered2)
4. Suspend/Resume while AC stays active (resumed-powered)
5. Now remove AC again (resumed-unpowered) --> distortion

While I think both aspects are related, I care more about the suspend/resume than the distortion.

Note that UMS shows neither distortion nor any suspend/resume problems.

Finally, let me point out that it's always been like this. I had modeset=0 for years (roughly since March 2011).
Comment 1 Adrian Knoth 2013-12-16 15:15:12 UTC
Created attachment 118611 [details]
Xorg-log
Comment 2 Adrian Knoth 2013-12-16 15:15:56 UTC
Created attachment 118621 [details]
radeontool regmatch after fresh boot with AC
Comment 3 Adrian Knoth 2013-12-16 15:16:25 UTC
Created attachment 118631 [details]
radeontool regmatch after fresh AC boot, then AC removed
Comment 4 Adrian Knoth 2013-12-16 15:17:17 UTC
Created attachment 118641 [details]
radeontool regmatch after fresh boot and AC removed, then AC put back in
Comment 5 Adrian Knoth 2013-12-16 15:17:50 UTC
Created attachment 118651 [details]
radeontool regmatch after suspend/resume with AC
Comment 6 Adrian Knoth 2013-12-16 15:18:16 UTC
Created attachment 118661 [details]
radeontool regmatch after suspend/resume, then AC removed
Comment 7 Adrian Knoth 2014-01-17 23:39:10 UTC
Random observation: high CPU usage "uncripples" the video output.

That is: I suspend to RAM, I resume and unplug the AC, causing the screen to be heavily distorted.

When I blindly start burnK7 (from Debian's cpuburn package), CPU usage on one of the cores jumps to 100% and I have a wonderful clear and perfect screen. As soon as I terminate burnK7, the corruption is back. (with AC unplugged all the time; of course, plugging the AC back in always fixes the corruption).

So it's a power management issue. For some reasons, the radeon driver (or the hardware) is sensitive to CPU power saving states (idle states?) and the presence of an external power supply. And all this only happens with KMS, not with UMS.

So is it an ACPI/PM bug? Or DRI?
Comment 8 Alex Deucher 2014-01-18 17:27:32 UTC
I suspect the sbios does something to the hw behind the OS/driver's back when you plug/unplug the power.
Comment 9 Adrian Knoth 2014-01-18 18:05:56 UTC
Maybe, but then again, why does with work on a freshly booted machine (before first suspend). And last not least, why isn't UMS affected?
Comment 10 Alex Deucher 2014-01-18 19:03:50 UTC
(In reply to Adrian Knoth from comment #9)
> Maybe, but then again, why does with work on a freshly booted machine
> (before first suspend). And last not least, why isn't UMS affected?

UMS runs the bios post to re-init the gpu on resume while kms re-inits the hw itself.  Presumably the bios post does something else to the system which prevents the issue.

Note You need to log in before you can comment on or make changes to this bug.