Bug 108514

Summary: heavy screen flickering with Mobility Radeon X1600 and kernel version 3.15rc2 onward
Product: DRI Reporter: Werner Lueckel <werner.lueckel>
Component: DRM/RadeonAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: christian.koenig, dufresnep
Version: DRI gitKeywords: bisected, patch
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
See Also: https://launchpad.net/bugs/1791312
https://bugs.freedesktop.org/show_bug.cgi?id=97986
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
dmesg Ubuntu14.04, Kernel3.13.0-160, radeon 2.36.0, screen O.K.
none
dmesg Ubuntu18.04, Kernel4.15.0-36, radeon 2.50.0, screen flickering
none
dmesg Ubuntu14.04, Kernel4.4.0-133, radeon 2.43.0, screen flickering
none
Paul's dmesg with drm.debug=4 on kernel 3.14_79 (No flickering)
none
Paul Dufresne's Xorg.0.log for k3.14.79 no_flickering
none
dufresnep's dmesg for kernel 4.15.0-45-generic (Linux Mint) with drm.debug=4 with a lot of flickering
none
dufresnep's Xorg.0.log for kernel 4.15.0-45 (Mint 19) with drm.debug=4 lots of flickering
none
dufresnep's dmesg for kernel 4.15.0-45-generic with drm.debug=0 with strangely no flickering
none
dufresnep's xorg log for kernel 4.15.0 with drm.debug=0 strangely without flickering
none
dmesg for kernel 5.0rc5 with flickering and debug=4
none
Xorg.0.log for kernel 50rc5 with flickering
none
dufrp's Xorg.0.log for kernel 5.0rc5 (xstart as root) with no flickering
none
dufrp's dmesg for kernel 5.0rc5 (xstarted as root) with no flickering
none
output of sudo dmidecode > dmidecode.txr
none
sudo lspci -nnvvk > lspci_while_flickering.txt
none
git show of firt bad commit
none
.config file specifically for Compaq NX9420 on linux 4.19.21
none
patch radeon-display.c for latest kernel (5.0.0-rc7) none

Description Werner Lueckel 2018-10-22 16:07:16 UTC
my laptop: HP Compaq nx9420
my grafic card:
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV530/M56-P [Mobility Radeon X1600] (prog-if 00 [VGA controller])
screen resolution: 1680x1050@60.1

when booting UBUNTU "14.04.5 LTS, Trusty Tahr" kernel 3.13.0-160-generic
-> the screen is fine in text-mode and in grafic-mode; NO flickering.
boot-messages say:
[drm] Initialized radeon 2.36.0 ...

BUT,
when booting UBUNTU "18.04.1 LTS (Bionic Beaver)" kernel 4.15.0-36-generic
-> the screen starts heavy flickering as soon as the kernel-module "radeon.ko"
is loaded. The flickering continues in grafic-mode.
here the boot-messages say:
[drm] Initialized radeon 2.50.0 ...
so: this seems to be a new version of radeon.ko.

My question:
- is there a method or a 'hidden flag' to switch radeon.ko-2.50 back to the
  good behaviour of radeon.ko-2.16?
Comment 1 Alex Deucher 2018-10-22 18:14:39 UTC
Any chance you can narrow down when the regression occurred and bisect it using git?  Please attach your dmesg output and xorg log (if using X).
Comment 2 Werner Lueckel 2018-10-23 16:31:25 UTC
Created attachment 142154 [details]
dmesg Ubuntu14.04, Kernel3.13.0-160, radeon 2.36.0, screen O.K.
Comment 3 Werner Lueckel 2018-10-23 16:34:59 UTC
Created attachment 142155 [details]
dmesg Ubuntu18.04, Kernel4.15.0-36, radeon 2.50.0, screen flickering
Comment 4 Werner Lueckel 2018-10-23 16:45:12 UTC
- I attached 2 dmesg-listings;
  booting Ubuntu14.04, Kernel3.13 -> screen is o.k.; no flickering
  booting Ubuntu18.04, Kernel4.15 -> screen flickers.
- no Xorg log since the flickering happens already in text-mode
- I did the following test (on Ubuntu18.04):
  . boot with radeon.modeset=0 (thus: disable radeon driver)
    -> screen o.k.; NO flickering
  . then sudo modprobe -v radeon modeset=1
    -> and the flickering starts ...
Comment 5 Werner Lueckel 2018-10-23 17:07:33 UTC
Created attachment 142156 [details]
dmesg Ubuntu14.04, Kernel4.4.0-133, radeon 2.43.0, screen flickering

... and I found out that the screen-flickering already starts with
VERSION="14.04.5 LTS, Trusty Tahr"
kernel: 4.4.0-133-generic
radeon 2.43.0

see the attached dmesg14.04_4.4.0-133.txt
Comment 6 Werner Lueckel 2018-10-24 13:29:58 UTC
Additional Information:

- I have the same flickering screen with

  Debian Life CD: UBCD-life
    Linux version 3.16.0-4-586
    [drm] Initialized radeon 2.39.0 20080528
Comment 7 Werner Lueckel 2018-10-30 15:54:54 UTC
some more tests with different systems give the following table:

sorted by radeon-version
system                                kernel            radeon          result
-------------------------             -----------       --------        --------
UBUNTU 14.04.5 LTS, Trusty Tahr       3.13.0-161        2.36.0          O.K.
puppy_tahr 6.0.5                      3.14.56           2.37.0          O.K.
puppy_slacko 6.3.2                    3.14.55           2.37.0          O.K
UBCD                                  3.16.0            2.39.0          FLICKER
puppy_xenialpup 7.5                   4.4.95            2.43.0          FLICKER
UBUNTU 14.04.5 LTS, Trusty Tahr       4.4.0-133         2.43.0          FLICKER
UBUNTU 18.04.1 LTS (Bionic Beaver)    4.15.0-36         2.50.0          FLICKER

so the problem seems to start with a radeon.ko driver > 2.37.0;
I wonder how the radeon-version 2.38.0 would work, but, so far, I havn't 
found a system including it.
Comment 8 Werner Lueckel 2018-11-04 14:41:20 UTC
more tests with flickering screen:

- check modelines "xvidtune -show -display :0"
  14.04 trusty (NO flickering)
  "1680x1050" 122.00 1680 1712 1776 1904 1050 1051 1054 1066 -hsync -vsync
  18.04.1 LTS (Flickering screen)
  "1680x1050" 122.00 1680 1712 1776 1904 1050 1051 1054 1066 -hsync -vsync
  -> exactly the same

- on 18.04.1 LTS 
  (1) with flickering grafic screen:
  repeatedly switch the screen-mode (xrandr): 
    to 1440x900 and back to 1680x1050
  -> typically after 2...5 repetitions the screen is o.k. and stops flickering

  (2) BUT: when the screen awakes from "sleep" -> the flickering starts again!
      switch to text-console (F1) -> flickers too!
      switch back to grafic (F7) -> flickering continues

   the I may continue with (1) 
   OR (frustrated): 
   BOOT 14.04 trusty; which still works fine; excellent grafic; never flickers;
   ... and start working!

- BUT: what can I do when support for "14.04 trusty" ends?
Comment 9 Werner Lueckel 2018-11-04 14:43:28 UTC
(In reply to Alex Deucher from comment #1)
> Any chance you can narrow down when the regression occurred and bisect it
> using git?  Please attach your dmesg output and xorg log (if using X).

I tried to narrow down the flickering issue making several tests; see my comments below.
Comment 10 Werner Lueckel 2018-11-04 14:48:47 UTC
(In reply to Alex Deucher from comment #1)
> Any chance you can narrow down when the regression occurred and bisect it
> using git?  Please attach your dmesg output and xorg log (if using X).

... sorry, by comments are not below, but "above" ...
Comment 11 Klaus Weiss 2018-12-04 14:39:31 UTC
(In reply to Werner Lueckel from comment #8)
> 
> - BUT: what can I do when support for "14.04 trusty" ends?

Try radeon.new_pll=0
Comment 12 Werner Lueckel 2018-12-07 16:40:37 UTC
thank you for your tip, but radeon.new_pll=0 gives me
... radeon: unknown parameter 'new_pll' ignored
And: I cannot find 'new_pll' in 'modinfo -p radeon';
So new_pll seems to be (no longer?) a radeon parameter.
Comment 13 Paul Dufresne 2019-02-06 19:34:48 UTC
I am comparing PLL values for a not flickering kernel:
Linux version 3.14.79-031479-generic
and version 4.15 (recent one):

Linux 4.15:
Flickering values
[    5.554557] [drm:radeon_compute_pll_avivo [radeon]] 122000 - 121980, pll dividers - fb: 253.0 ref: 8, post 7
[  465.773119] [drm:radeon_compute_pll_avivo [radeon]] 122000 - 121980, pll dividers - fb: 253.0 ref: 8, post 7
[  503.796178] [drm:radeon_compute_pll_avivo [radeon]] 122000 - 121980, pll dividers - fb: 253.0 ref: 8, post 7

Linux version 3.14.79-031479-generic: no flickering
[4.250932] [drm:radeon_compute_pll_avivo], 12201, pll dividers - fb: 189.8 ref: 6, post 7
[  230.376566] [drm:radeon_compute_pll_avivo], 12201, pll dividers - fb: 189.8 ref: 6, post 7

122000 is about 10x 12201
I don't know what are these values, but it seems very different!
Comment 14 Paul Dufresne 2019-02-06 22:42:55 UTC
I had determined that 3.15-rc2 was the first version where flickering appears.
I guess it could be related to:
https://lists.freedesktop.org/archives/dri-devel/2014-April/057800.html
Comment 15 Paul Dufresne 2019-02-07 19:38:14 UTC
Created attachment 143324 [details]
Paul's dmesg with drm.debug=4 on kernel 3.14_79 (No flickering)
Comment 16 Paul Dufresne 2019-02-07 19:40:15 UTC
Created attachment 143325 [details]
Paul Dufresne's Xorg.0.log for k3.14.79 no_flickering
Comment 17 Paul Dufresne 2019-02-07 19:53:01 UTC
Created attachment 143326 [details]
dufresnep's dmesg for kernel 4.15.0-45-generic (Linux Mint) with drm.debug=4 with a lot of flickering
Comment 18 Paul Dufresne 2019-02-07 19:54:39 UTC
Created attachment 143327 [details]
dufresnep's Xorg.0.log for kernel 4.15.0-45 (Mint 19) with drm.debug=4 lots of flickering
Comment 19 Paul Dufresne 2019-02-07 21:34:51 UTC
Created attachment 143328 [details]
dufresnep's dmesg for kernel 4.15.0-45-generic with drm.debug=0 with strangely no flickering
Comment 20 Paul Dufresne 2019-02-07 21:36:20 UTC
Created attachment 143329 [details]
dufresnep's xorg log for kernel 4.15.0 with drm.debug=0 strangely without flickering
Comment 21 Paul Dufresne 2019-02-07 21:58:28 UTC
Created attachment 143330 [details]
dmesg for kernel 5.0rc5 with flickering and debug=4
Comment 22 Paul Dufresne 2019-02-07 22:04:37 UTC
Created attachment 143331 [details]
Xorg.0.log for kernel 50rc5 with flickering

flickering had began only when in graphics mode ... usually begins while text display at boot
Comment 23 Paul Dufresne 2019-02-07 22:53:04 UTC
Created attachment 143332 [details]
dufrp's Xorg.0.log for kernel 5.0rc5 (xstart as root) with no flickering
Comment 24 Paul Dufresne 2019-02-07 22:54:34 UTC
Created attachment 143333 [details]
dufrp's dmesg for kernel 5.0rc5 (xstarted as root) with no flickering
Comment 25 Paul Dufresne 2019-02-07 23:02:30 UTC
Created attachment 143334 [details]
output of sudo dmidecode > dmidecode.txr
Comment 26 Paul Dufresne 2019-02-07 23:05:29 UTC
Created attachment 143335 [details]
sudo lspci -nnvvk > lspci_while_flickering.txt
Comment 27 Paul Dufresne 2019-02-12 21:43:08 UTC
I have done a git bisect:
client@client-LIFEBOOK-AH531 ~/mylinux $ git bisect good
f8a2645ecede4eaf90b3d785f2805c8ecb76d43e is the first bad commit
commit f8a2645ecede4eaf90b3d785f2805c8ecb76d43e
Author: Christian König <christian.koenig@amd.com>
Date:   Wed Apr 16 11:54:21 2014 +0200

    drm/radeon: improve PLL params if we don't match exactly v2
    
    Otherwise we might be quite off on older chipsets.
    
    v2: keep ref_div minimum
    
    Signed-off-by: Christian König <christian.koenig@amd.com>

:040000 040000 a2150329e19966a1eb911d1d1ac74e865f002b1b 7220bfcf2fad7f94f071376fdd5aedd3d358545c M	drivers
client@client-LIFEBOOK-AH531 ~/mylinux $
Comment 28 Paul Dufresne 2019-02-12 21:43:58 UTC
client@client-LIFEBOOK-AH531 ~/mylinux $ git bisect log
# bad: [a798c10faf62a505d24e5f6213fbaf904a39623f] Linux 3.15-rc2
# good: [c9eaa447e77efe77b7fa4c953bd62de8297fd6c5] Linux 3.15-rc1
git bisect start 'v3.15-rc2' 'v3.15-rc1' '--' 'drivers/gpu/drm/radeon'
# good: [681941c1790b92207334d08ee017007685f35438] drm/radeon: fix VCE fence command
git bisect good 681941c1790b92207334d08ee017007685f35438
# skip: [8902e6f2b832e00e10c6f9e9532f6f63feb4972f] drm/radeon: Improve vramlimit module param documentation
git bisect skip 8902e6f2b832e00e10c6f9e9532f6f63feb4972f
# bad: [bcddee29b0b87af3aeda953840f97b356b24dc5e] drm/radeon/ci: make sure mc ucode is loaded before checking the size
git bisect bad bcddee29b0b87af3aeda953840f97b356b24dc5e
# bad: [f8a2645ecede4eaf90b3d785f2805c8ecb76d43e] drm/radeon: improve PLL params if we don't match exactly v2
git bisect bad f8a2645ecede4eaf90b3d785f2805c8ecb76d43e
# good: [74073c9dd29905645feb6dee03c144657a9844cd] drm/radeon: memory leak on bo reservation failure. v2
git bisect good 74073c9dd29905645feb6dee03c144657a9844cd
# first bad commit: [f8a2645ecede4eaf90b3d785f2805c8ecb76d43e] drm/radeon: improve PLL params if we don't match exactly v2
client@client-LIFEBOOK-AH531 ~/mylinux $
Comment 29 Paul Dufresne 2019-02-12 21:49:48 UTC
Created attachment 143368 [details]
git show of firt bad commit
Comment 30 Paul Dufresne 2019-02-14 21:36:55 UTC
The following patch seems to work for me:
client@client-LIFEBOOK-AH531 ~/Téléchargements $ diff -u old/linux-4.19.21/drivers/gpu/drm/radeon/radeon_display.c linux-4.19.21/drivers/gpu/drm/radeon/radeon_display.c
--- old/linux-4.19.21/drivers/gpu/drm/radeon/radeon_display.c	2019-02-12 13:47:27.000000000 -0500
+++ linux-4.19.21/drivers/gpu/drm/radeon/radeon_display.c	2019-02-14 15:29:37.743229474 -0500
@@ -921,12 +921,14 @@
 	ref_div_max = max(min(100 / post_div, ref_div_max), 1u);
 
 	/* get matching reference and feedback divider */
-	*ref_div = min(max(DIV_ROUND_CLOSEST(den, post_div), 1u), ref_div_max);
+	// was: *ref_div = min(max(DIV_ROUND_CLOSEST(den, post_div), 1u), ref_div_max);
+	*ref_div = min(max((den/post_div), 1u), ref_div_max);
 	*fb_div = DIV_ROUND_CLOSEST(nom * *ref_div * post_div, den);
 
 	/* limit fb divider to its maximum */
 	if (*fb_div > fb_div_max) {
-		*ref_div = DIV_ROUND_CLOSEST(*ref_div * fb_div_max, *fb_div);
+		// was: *ref_div = DIV_ROUND_CLOSEST(*ref_div * fb_div_max, *fb_div);
+		*ref_div = (*ref_div * fb_div_max) / (*fb_div);
 		*fb_div = fb_div_max;
 	}
 }
client@client-LIFEBOOK-AH531 ~/Téléchargements $
Comment 31 Paul Dufresne 2019-02-14 22:22:10 UTC
Created attachment 143381 [details]
.config file specifically for Compaq NX9420 on linux 4.19.21
Comment 32 Paul Dufresne 2019-02-19 21:25:11 UTC
Created attachment 143413 [details] [review]
patch radeon-display.c for latest kernel (5.0.0-rc7)
Comment 33 Werner Lueckel 2019-04-15 13:07:31 UTC
Thanks to Paul Dufresne a patch in "radeon_display.c" seems to fix the bug.
So the radeon maintainers should work on an upstream fix.
Comment 34 Werner Lueckel 2019-05-06 14:18:23 UTC
Is there any chance to get the patch implemented into 18.04 LTS?
The flickering screen is really annoying ...
Comment 35 bholeshankar1992crax@gmail.com (Spammer; Account disabled) 2019-05-15 06:36:47 UTC Comment hidden (spam)
Comment 36 Paul Dufresne 2019-06-12 16:27:14 UTC
The patch is included in:
Linux 4.14.125
Linux 4.19.50
Linux 5.1.9
Comment 37 statuslife55@gmail.com (Spammer; Account disabled) 2019-11-23 02:28:32 UTC Comment hidden (spam)
Comment 38 gajoro5546@mail1web.org (Spammer; Account disabled) 2019-12-08 06:00:09 UTC Comment hidden (spam)

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.