[Bug 98897] Macbook pro 11,5 screen flicker when AC adapter plugged in

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Dec 15 05:46:52 UTC 2016


--- Comment #18 from berg <berglh at gmail.com> ---
(In reply to Cédric Le Goater from comment #17)
> so this is a CHIP_VERDE revision 0x83

(In reply to Cédric Le Goater from comment #14)
> (In reply to Michel Dänzer from comment #10)
> > If you can't or don't want to bisect, there are only 4 radeon driver commits
> > between 4.8.6 and 4.8.7, so it shouldn't take long to try manually reverting
> > each of those.
> > https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/
> > ?h=linux-4.8.y&id=e136de5d733161fdfd203f23b448434170d189ea seems like a good
> > candidate, since it's clock related and explicitly references your GPU in
> > the code.
> Hi,
> I have reverted this commit on a 4.8.14 and the flickering stopped.
> C.

Having a looking at the diff; the new diff actually configures 

        } else if (rdev->family == CHIP_VERDE) {
+               if ((rdev->pdev->revision == 0x81) ||
+                   (rdev->pdev->revision == 0x83) ||
+                   (rdev->pdev->device == 0x6821) ||
+                   (rdev->pdev->device == 0x682B)) {
+                       max_sclk = 75000;
+                       max_mclk = 80000;
+               }

So on my MacBook Pro 11,5 - the device ID and revision are: 

  01:00.0 0300: 1002:6821 (rev 83)
  01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI]
Venus XT [Radeon HD 8870M / R9 M270X/M370X] (rev 83)

So; since this commit, the max_sclk and max_mclk has been set for this GPU to
75000 and 80000. In previous version of this driver module, this specific GPU
was being skipped. I think these values have been incorrectly set for this CPU.

According to these specifications for the M370X Mac chip,
http://gpuboss.com/graphics-card/Radeon-R9-M370X-Mac, the two values max_sclk
and max_mclk are probably:

  Clock speed           775 MHz
  Turbo clock speed     800 MHz

So we are setting this stuff to run possibly 25 MHz out of sync with the actual
GPU clock. I'm guessing this would be subtle enough to cause the flickering
we're seeing, perhaps it should be something like this:

        } else if (rdev->family == CHIP_VERDE) {
                if (rdev->pdev->device == 0x6821 &&
                     rdev->pdev->revision == 0x83) {
                        max_sclk = 77500;
                        max_mclk = 80000;
                } else if other conditions

In general though, the new block of device and revisions are VERY loose and not
very well thought out. The OR conditionals are too far reaching. This GPU is
matched in two different sections and even the device ID or the revision alone
is enough to modify the aforementioned values.

I might make compile 4.9.0 tonight to try this theory out and set max_sclk to
77500. Perhaps the best actual solution is to not even include this device and
revision in the dpm quirks; as it was previously omitted and was never an
actual problem.

I haven't figured out how to determine the actual GPU frequency right now, but
if we can confirm it's running at a stock speed of 775 MHz, that would give me
greater confidence in testing this idea out.

You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20161215/86bd62fc/attachment-0001.html>

More information about the dri-devel mailing list