Re: Mobility Radeon HD 4530/4570/545v: flicker in 1920x1080

From
Pavel Machek <hidden>
Date
2015-11-03 22:09:25
Also in
dri-devel, lkml
Reply to
Alex Deucher, 2015-11-02
Hi!
quoted
quoted
quoted
4.3-rc7 kernel, graphics works reasonably well in 1600x1200 mode. But
my monitor is native 1920x1080, so that mode looks pretty ugly on
screen. If I go to 1920x1080, I see colored horizontal lines (often
black) as soon as there's graphics activity.

pavel@half:~$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
VGA-0 connected 1920x1080+0+0 (normal left inverted right x axis y
axis) 478mm x 268mm
   1920x1080     60.00*+
      1600x1200     60.00
         1680x1050     59.95
        1280x1024     75.02    60.02
           1440x900      59.89
              1024x768      75.08    60.00
                 800x600       75.00    60.32
                    640x480       75.00    60.00
                       720x400       70.08
 pavel@half:~$ xrandr --output VGA-0 --mode 1600x1200
 pavel@half:~$ xrandr --output VGA-0 --mode 1920x1080
 pavel@half:~$ xrandr --output VGA-0 --mode 1600x1200
quoted hunk ↗ jump to hunk
quoted
quoted
quoted
Any ideas?
Alex probably knows more about this, but it sounds like problems with
switching the memory clocks on 3D load.
quoted
Try to disable power management completely with radeon.dpm=0 on the kernel
command line or nailing the hardware at a specific power level using
sysfs.
I tried that, but it still flickers.
It's probably pll stability.  There seem to be a number of regressions
since the pll code was rewritten to support matching the hdmi clocks
more closely.  Does this patch help?
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c
b/drivers/gpu/drm/radeon/atombios_crtc.c
index dac78ad..b86f06a 100644
--- a/drivers/gpu/drm/radeon/atombios_crtc.c
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
@@ -569,6 +569,8 @@ static u32 atombios_adjust_pll(struct drm_crtc *crtc,
        radeon_crtc->pll_flags = 0;

        if (ASIC_IS_AVIVO(rdev)) {
+               radeon_crtc->pll_flags |= RADEON_PLL_PREFER_MINM_OVER_MAXP;
+
                if ((rdev->family = CHIP_RS600) ||
                    (rdev->family = CHIP_RS690) ||
                    (rdev->family = CHIP_RS740))
Help.. maybe... it is tricky to tell. It definitely does _not_ fix the
issue completely.
Unfortunately, it can't be applied as is because we had a similar
patch which was reverted because it regressed a bunch of other
systems.  The actual pll limits probably need to be tweaked.
Any ideas how to tweak the pll limits?

Thanks,
								Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Thread (17 messages) 17 messages, 5 authors, last reply 2015-11-06
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help