https://bugzilla.kernel.org/show_bug.cgi?id=60791
Bug ID: 60791 Summary: Display corruption with Radeon driver during boot and on desktop Product: Drivers Version: 2.5 Kernel Version: 3.10.5 Hardware: x86-64 OS: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: Video(DRI - non Intel) Assignee: drivers_video-dri@kernel-bugs.osdl.org Reporter: hallbw@gmail.com Regression: No
Created attachment 107302 --> https://bugzilla.kernel.org/attachment.cgi?id=107302&action=edit showing the problem during boot
As of vanilla kernel 3.10.5, I am seeing green speckled display artifacts during boot, and on my desktop. During boot and on solid backgrounds they take the form of green arcs in multiple places; other times they take the form of hashed green lines in small areas of the display (such as on the Phoronix website rendered in Chromium). This corruption does NOT occur on kernels 3.10.4 and below, nor on 3.9 kernels (tested up to 3.9.11 vanilla). I think the corruption is somehow happening AFTER the display buffer, because when I take a screenshot, the green speckling is only visible when booted to a problematic kernel- if I reboot into a kernel with the issue, when I display the screenshot I previously took the corruption is not visible.
I have tried using "radeon.audio=0" on the kernel command line, but that had no effect. I am not using HDMI video or audio, only DVI.
Since I couldn't take a screenshot, I took some pictures with a camera. Hard to see due to focus and because the short green horizontal lines of the corruption flicker madly.
System details: x86_64 Solydx 2013.08.06 (Debian jessie/sid rolling base) BIOSTAR A785GE with onboard Radeon HD4200 video AMD Phenom II X4 940 CPU 4GB DDR2 memory
More details attached.
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #1 from Brian Hall hallbw@gmail.com --- Created attachment 107303 --> https://bugzilla.kernel.org/attachment.cgi?id=107303&action=edit showing the problem during boot
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #2 from Brian Hall hallbw@gmail.com --- Created attachment 107304 --> https://bugzilla.kernel.org/attachment.cgi?id=107304&action=edit green arc at lightdm login prompt
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #3 from Brian Hall hallbw@gmail.com --- Created attachment 107305 --> https://bugzilla.kernel.org/attachment.cgi?id=107305&action=edit hash of flickering green lines when displaying website
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #4 from Brian Hall hallbw@gmail.com --- Created attachment 107306 --> https://bugzilla.kernel.org/attachment.cgi?id=107306&action=edit hash of flickering green lines when displaying website
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #5 from Brian Hall hallbw@gmail.com --- Created attachment 107307 --> https://bugzilla.kernel.org/attachment.cgi?id=107307&action=edit hash of flickering green lines when displaying website
https://bugzilla.kernel.org/show_bug.cgi?id=60791
Brian Hall hallbw@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Regression|No |Yes
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #6 from Brian Hall hallbw@gmail.com --- Created attachment 107308 --> https://bugzilla.kernel.org/attachment.cgi?id=107308&action=edit dmesg output
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #7 from Brian Hall hallbw@gmail.com --- Created attachment 107309 --> https://bugzilla.kernel.org/attachment.cgi?id=107309&action=edit lspci -vvv output
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #8 from Brian Hall hallbw@gmail.com --- Created attachment 107310 --> https://bugzilla.kernel.org/attachment.cgi?id=107310&action=edit Xorg log
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #9 from Brian Hall hallbw@gmail.com --- Problem only occurs when using the DVI output from my motherboard. When I switch to the VGA motherboard output, the problem on kernels > 3.10.4 disappears. I'd prefer to use DVI, so I don't consider this a permanent workaround, I'd still like to get the corruption problem with DVI fixed.
https://bugzilla.kernel.org/show_bug.cgi?id=60791
Alex Deucher alexdeucher@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |alexdeucher@gmail.com
--- Comment #10 from Alex Deucher alexdeucher@gmail.com --- Can you bisect?
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #11 from Brian Hall hallbw@gmail.com --- Working the bisection now, may take me a day or two.
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #12 from Brian Hall hallbw@gmail.com --- Bisect results below. According to my Xorg.0.log, my board is a "ATI Radeon HD 4200" (ChipID = 0x9710) and lspci calls it a RS880.
6f8bbaf568c7f2c497558bfd04654c0b9841ad57 is the first bad commit commit 6f8bbaf568c7f2c497558bfd04654c0b9841ad57 Author: Alex Deucher alexander.deucher@amd.com Date: Tue Jul 30 00:22:53 2013 -0400
drm/radeon/atom: initialize more atom interpretor elements to 0
commit 42a21826dc54583cdb79cc8477732e911ac9c376 upstream.
The ProcessAuxChannel table on some rv635 boards assumes the divmul members are initialized to 0 otherwise we get an invalid fb offset since it has a bad mask set when setting the fb base. While here initialize all the atom interpretor elements to 0.
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=60639
Signed-off-by: Alex Deucher alexander.deucher@amd.com Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org
:040000 040000 d2bb057047f71419a89def40e6e21dc948c5784c 7e49987ae73078e644723f0cb6c791e15e102ab0 M drivers
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #13 from Alex Deucher alexdeucher@gmail.com --- Can you revert parts of the patch to find out which element is causing the problem. E.g., try:
/* reset data block */ // ctx->data_block = 0;
and see if that helps, then:
/* reset divmul */ // ctx->divmul[0] = 0; ctx->divmul[1] = 0;
etc.
Additionally, can you dump the display registers in the working and non-working states using radeonreg (http://cgit.freedesktop.org/~airlied/radeontool/)?
(as root)
boot with broken kernel: ./radeonreg regs dce3 > broken.regs
boot with working kernel: ./radeonreg regs dce3 > working.regs
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #14 from Brian Hall hallbw@gmail.com --- Created attachment 107349 --> https://bugzilla.kernel.org/attachment.cgi?id=107349&action=edit radeonreg regs dce3 from 3.10.5
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #15 from Brian Hall hallbw@gmail.com --- Created attachment 107350 --> https://bugzilla.kernel.org/attachment.cgi?id=107350&action=edit radeonreg regs dce3 from 3.10.4 (working)
https://bugzilla.kernel.org/show_bug.cgi?id=60791
Brian Hall hallbw@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #107349|radeonreg regs dce3 from |radeonreg regs dce3 from description|3.10.5 |3.10.5 (broken.regs)
https://bugzilla.kernel.org/show_bug.cgi?id=60791
Brian Hall hallbw@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #107350|radeonreg regs dce3 from |radeonreg regs dce3 from description|3.10.4 (working) |3.10.4 (working.regs)
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #16 from Brian Hall hallbw@gmail.com --- Cannot reproduce the problem by modifying drivers/gpu/drm/radeon/atom.c, apparently my bisect was incorrect. Problem does not occur even if I undo all the code changes for that commit.
I did reconfirm the basic problem still occurs with 3.10.5 but not 3.10.4. Will attempt to re-bisect at the next opportunity.
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #17 from Brian Hall hallbw@gmail.com --- Fixed it!
The problem was in atom.c, my bisect was correct. Starting with the bad 3.10.5 atom.c, I copied it into the good 3.10.4 tree, commented out the reset data block part, rebuilt, and that fixed it. Commenting out the reset divmul part, without removing the reset data block part, did not fix the corruption.
So I generated a patch, and applied that to a 3.11 tree. Fixed the corruption on 3.11. This is the first time I've booted anything higher than 3.10.4 without this problem. Now I'm running 3.11+fix_radeon_dvi_corruption.patch on DVI and there's no corruption during boot or on my desktop.
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #18 from Brian Hall hallbw@gmail.com --- Created attachment 107621 --> https://bugzilla.kernel.org/attachment.cgi?id=107621&action=edit fixes radeon DVI display corruption
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #19 from Alex Deucher alexdeucher@gmail.com --- Please attach a copy of your vbios.
(as root) (use lspci to get the bus id) cd /sys/bus/pci/devices/<pci bus id> echo 1 > rom cat rom > /tmp/vbios.rom echo 0 > rom
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #20 from Brian Hall hallbw@gmail.com --- Created attachment 107711 --> https://bugzilla.kernel.org/attachment.cgi?id=107711&action=edit copy of video bios
https://bugzilla.kernel.org/show_bug.cgi?id=60791
Hamsi2k@freenet.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |Hamsi2k@freenet.de
--- Comment #21 from Hamsi2k@freenet.de --- *** Bug 61011 has been marked as a duplicate of this bug. ***
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #22 from Alex Deucher alexdeucher@gmail.com --- Created attachment 107911 --> https://bugzilla.kernel.org/attachment.cgi?id=107911&action=edit possible fix
Does this patch fix the issue? Please apply without your patch.
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #23 from Hamsi2k@freenet.de --- Sadly it doesn't fix the issue on my setup. I applied it on the 3.11.0 release without previous patches.
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #24 from Alex Deucher alexdeucher@gmail.com --- (In reply to Hamsi2k from comment #23)
Sadly it doesn't fix the issue on my setup. I applied it on the 3.11.0 release without previous patches.
Can you attach a copy of your vbios and dump the broken and working registers as per comment 13?
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #25 from Hamsi2k@freenet.de --- Created attachment 107941 --> https://bugzilla.kernel.org/attachment.cgi?id=107941&action=edit 3.11.0 Working register dump
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #26 from Hamsi2k@freenet.de --- Created attachment 107951 --> https://bugzilla.kernel.org/attachment.cgi?id=107951&action=edit 3.0.11 Non-Working register dump
https://bugzilla.kernel.org/show_bug.cgi?id=60791
Quallenauge Hamsi2k@freenet.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #107951|3.0.11 Non-Working register |3.11.0 Non-Working register description|dump |dump
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #27 from Quallenauge Hamsi2k@freenet.de --- Created attachment 107961 --> https://bugzilla.kernel.org/attachment.cgi?id=107961&action=edit copy of video bios
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #28 from Brian Hall hallbw@gmail.com --- (In reply to Alex Deucher from comment #22)
Created attachment 107911 [details] possible fix
Does this patch fix the issue? Please apply without your patch.
Patch 0001-drm-radeon-atom-workaround-vbios-bug-in-transmitter-.patch did fix my issue, on 3.11.0 without the fix_radeon_dvi_corruption.patch. I had some trouble getting the atom-workaround patch to apply, so I just manually modified atombios_encoders.c as per the patch:
/* some early dce3.2 boards have a bug in their transmitter control table */ // if ((rdev->family != CHIP_RV710) && (rdev->family != CHIP_RV730)) /* some dce3.x boards have a bug in their transmitter control table. * ACTION_ENABLE_OUTPUT can probably be dropped since ACTION_ENABLE * does the same thing and more. */ if ((rdev->family != CHIP_RV710) && (rdev->family != CHIP_RV730) && (rdev->family != CHIP_RS780)) atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0);
https://bugzilla.kernel.org/show_bug.cgi?id=60791
Alex Deucher alexdeucher@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #107911|0 |1 is obsolete| |
--- Comment #29 from Alex Deucher alexdeucher@gmail.com --- Created attachment 108011 --> https://bugzilla.kernel.org/attachment.cgi?id=108011&action=edit possible fix
Sorry, I had the wrong chip check in the last version. This patch should be correct.
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #30 from Quallenauge Hamsi2k@freenet.de --- The last patch works for me :) Thanks!
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #31 from Brian Hall hallbw@gmail.com --- Since we have a patch that fixes the problem, can we get it submitted for 3.12, or at least 3.12.1?
https://bugzilla.kernel.org/show_bug.cgi?id=60791
--- Comment #32 from Alex Deucher alexdeucher@gmail.com --- It's already upstream: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=91...
https://bugzilla.kernel.org/show_bug.cgi?id=60791
Dragos Taranu dragosh44@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dragosh44@gmail.com
--- Comment #33 from Dragos Taranu dragosh44@gmail.com --- I seem to have a related problem - in my case the DVI is completely disabled upon boot, so I have a blank screen (monitor seems to go to standby). I have an older, 780G-based mainboard: Biostar A780G M2+ SE Ver. 6.0 Fedora 19 x86_64 (kernel 3.10.4 is the last working one).
The patch works for me too, if I change CHIP_RS880 to CHIP_RS780 (or just add RS780 to the comparison)
dri-devel@lists.freedesktop.org