Bug 108514 - heavy screen flickering with Mobility Radeon X1600 and kernel version 3.15rc2 onward
Summary: heavy screen flickering with Mobility Radeon X1600 and kernel version 3.15rc2...
Status: NEW
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Radeon (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Default DRI bug account
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-10-22 16:07 UTC by Werner Lueckel
Modified: 2019-02-19 21:25 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
dmesg Ubuntu14.04, Kernel3.13.0-160, radeon 2.36.0, screen O.K. (67.55 KB, text/plain)
2018-10-23 16:31 UTC, Werner Lueckel
no flags Details
dmesg Ubuntu18.04, Kernel4.15.0-36, radeon 2.50.0, screen flickering (62.17 KB, text/plain)
2018-10-23 16:34 UTC, Werner Lueckel
no flags Details
dmesg Ubuntu14.04, Kernel4.4.0-133, radeon 2.43.0, screen flickering (66.92 KB, text/plain)
2018-10-23 17:07 UTC, Werner Lueckel
no flags Details
Paul's dmesg with drm.debug=4 on kernel 3.14_79 (No flickering) (122.14 KB, text/plain)
2019-02-07 19:38 UTC, Paul Dufresne
no flags Details
Paul Dufresne's Xorg.0.log for k3.14.79 no_flickering (32.93 KB, text/plain)
2019-02-07 19:40 UTC, Paul Dufresne
no flags Details
dufresnep's dmesg for kernel 4.15.0-45-generic (Linux Mint) with drm.debug=4 with a lot of flickering (112.00 KB, text/plain)
2019-02-07 19:53 UTC, Paul Dufresne
no flags Details
dufresnep's Xorg.0.log for kernel 4.15.0-45 (Mint 19) with drm.debug=4 lots of flickering (32.02 KB, text/plain)
2019-02-07 19:54 UTC, Paul Dufresne
no flags Details
dufresnep's dmesg for kernel 4.15.0-45-generic with drm.debug=0 with strangely no flickering (67.32 KB, text/plain)
2019-02-07 21:34 UTC, Paul Dufresne
no flags Details
dufresnep's xorg log for kernel 4.15.0 with drm.debug=0 strangely without flickering (28.90 KB, text/plain)
2019-02-07 21:36 UTC, Paul Dufresne
no flags Details
dmesg for kernel 5.0rc5 with flickering and debug=4 (111.97 KB, text/plain)
2019-02-07 21:58 UTC, Paul Dufresne
no flags Details
Xorg.0.log for kernel 50rc5 with flickering (28.73 KB, text/plain)
2019-02-07 22:04 UTC, Paul Dufresne
no flags Details
dufrp's Xorg.0.log for kernel 5.0rc5 (xstart as root) with no flickering (145.00 KB, text/plain)
2019-02-07 22:53 UTC, Paul Dufresne
no flags Details
dufrp's dmesg for kernel 5.0rc5 (xstarted as root) with no flickering (61.96 KB, text/plain)
2019-02-07 22:54 UTC, Paul Dufresne
no flags Details
output of sudo dmidecode > dmidecode.txr (6.96 KB, text/plain)
2019-02-07 23:02 UTC, Paul Dufresne
no flags Details
sudo lspci -nnvvk > lspci_while_flickering.txt (31.42 KB, text/plain)
2019-02-07 23:05 UTC, Paul Dufresne
no flags Details
git show of firt bad commit (1.76 KB, text/plain)
2019-02-12 21:49 UTC, Paul Dufresne
no flags Details
.config file specifically for Compaq NX9420 on linux 4.19.21 (108.90 KB, text/plain)
2019-02-14 22:22 UTC, Paul Dufresne
no flags Details
patch radeon-display.c for latest kernel (5.0.0-rc7) (851 bytes, patch)
2019-02-19 21:25 UTC, Paul Dufresne
no flags Details | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
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)


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.