Bug 63011

Summary: radeon: horizontal stripes when updating screen
Product: Drivers Reporter: Mikko Rapeli (mikko.rapeli)
Component: Video(DRI - non Intel)Assignee: drivers_video-dri
Status: RESOLVED CODE_FIX    
Severity: normal CC: alexdeucher, szg00000
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 3.11.5 Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg with 3.11.5+patch
dmesg with 3.11.5
make missing smc ucode non-fatal
dmesg with 3.11.5+0001-drm-radeon-make-missing-smc-ucode-non-fatal-r7xx-SI.patch

Description Mikko Rapeli 2013-10-14 10:53:30 UTC
After updating kernel from 3.10.9 to 3.11.2 and now .5, content in non-active windows in X are showing horizontal stripes, I guess one pixel high and width of the non-active window in X, when for example scrolling down a browser page using the mouse wheel. Also the mouse pointer in X is sometimes flickering much more than before with 3.10 and older kernels.

Base system: Ubuntu 12.04 LTS, Xorg 1.11.3.

PC: HP EliteBook 8560p, Core i7 with Radeon graphics

Radeon graphics details, lcpci -v -v:

01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Seymour 
[Radeon HD 6400M Series] (prog-if 00 [VGA controller])
        Subsystem: Hewlett-Packard Company Device 161a
        Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Step
ping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at c0000000 (64-bit, prefetchable) [size=256M]
        Region 2: Memory at d4400000 (64-bit, non-prefetchable) [size=128K]
        Region 4: I/O ports at 4000 [size=256]
        Expansion ROM at d4440000 [disabled] [size=128K]
        Capabilities: [50] Power Management version 3
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot
-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
                DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
                        ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
                LnkCap: Port #0, Speed 5GT/s, Width x16, ASPM L0s L1, Latency L0 <64ns, L1 <1us
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Not Supported, TimeoutDis-
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
                LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance De-emphasis: -6dB
                LnkSta2: Current De-emphasis Level: -3.5dB
        Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
        Capabilities: [150 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap+ ChkEn-
        Kernel modules: radeon

Tried to bisect this but the results were pointing to drm/i915 commits between 3.10 and 3.11rc2 so I guess I did something wrong. Will try again later.
Comment 1 Alex Deucher 2013-10-14 16:15:53 UTC
Did you also update any userspace graphics components like mesa or xf86-video-ati?  If so, the problem may be in one of those components.
Comment 2 Mikko Rapeli 2013-10-14 16:23:06 UTC
No, userspace has not been updated. Problem is easy to reproduce and kernel is causing it. Bisect is incomplete but maybe this has some information to you:

$ git bisect log
git bisect start
# bad: [ad81f0545ef01ea651886dddac4bef6cec930092] Linux 3.11-rc1
git bisect bad ad81f0545ef01ea651886dddac4bef6cec930092
# good: [8bb495e3f02401ee6f76d1b1d77f3ac9f079e376] Linux 3.10
git bisect good 8bb495e3f02401ee6f76d1b1d77f3ac9f079e376
# good: [1286da8bc009cb2aee7f285e94623fc974c0c983] Merge tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
git bisect good 1286da8bc009cb2aee7f285e94623fc974c0c983
# bad: [1b375dc30710180c4b88cc59caba6e3481ec5c8b] mutex: Move ww_mutex definitions to ww_mutex.h
git bisect bad 1b375dc30710180c4b88cc59caba6e3481ec5c8b
# good: [899dd388853071f5c8848545209d4e2c5d95b1d9] Merge tag 'for-linus-3.11-merge-window-part-1' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs
git bisect good 899dd388853071f5c8848545209d4e2c5d95b1d9
Comment 3 Mikko Rapeli 2013-10-14 16:31:32 UTC
Oh, forgot to mention that the problem shows up via docking station DVI port and external HP/Compaq LA2306x display.
Comment 4 Mikko Rapeli 2013-10-15 15:47:10 UTC
Git bisect is complete and I verified it a few extra times:

6596afd48af4d07c8b454849b2fe7e628974f3ef is the first bad commit
commit 6596afd48af4d07c8b454849b2fe7e628974f3ef
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Jun 26 00:15:24 2013 -0400

    drm/radeon/kms: add dpm support for btc (v3)
    
    This adds dpm support for btc asics.  This includes:
    - clockgating
    - dynamic engine clock scaling
    - dynamic memory clock scaling
    - dynamic voltage scaling
    - dynamic pcie gen1/gen2 switching (requires additional acpi support)
    
    Set radeon.dpm=1 to enable.
    
    v2: reduce stack usage
    v3: attempt to fix state enable
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

The commit is rather big so reverting it from v3.11.5 is not trivial.

Full bisect log:

git bisect start
# bad: [ad81f0545ef01ea651886dddac4bef6cec930092] Linux 3.11-rc1
git bisect bad ad81f0545ef01ea651886dddac4bef6cec930092
# good: [8bb495e3f02401ee6f76d1b1d77f3ac9f079e376] Linux 3.10
git bisect good 8bb495e3f02401ee6f76d1b1d77f3ac9f079e376
# good: [1286da8bc009cb2aee7f285e94623fc974c0c983] Merge tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
git bisect good 1286da8bc009cb2aee7f285e94623fc974c0c983
# bad: [1b375dc30710180c4b88cc59caba6e3481ec5c8b] mutex: Move ww_mutex definitions to ww_mutex.h
git bisect bad 1b375dc30710180c4b88cc59caba6e3481ec5c8b
# good: [899dd388853071f5c8848545209d4e2c5d95b1d9] Merge tag 'for-linus-3.11-merge-window-part-1' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs
git bisect good 899dd388853071f5c8848545209d4e2c5d95b1d9
# bad: [5b0207bb59b26a8cb5b53f13c99c67eb0d2a7abb] Merge branch 'drm-next-3.11' of git://people.freedesktop.org/~agd5f/linux into drm-next
git bisect bad 5b0207bb59b26a8cb5b53f13c99c67eb0d2a7abb
# good: [19d415a25e9078dba26adb54396d4e5b30d3b572] drm/i915: Fix old reference to i830_sdvo_get_capabilities()
git bisect good 19d415a25e9078dba26adb54396d4e5b30d3b572
# bad: [b97721f311c68440144a95e345955284c25b69a2] drm/radeon/dpm/r7xx: properly catch errors in dpm setup
git bisect bad b97721f311c68440144a95e345955284c25b69a2
# good: [cf0cfdd7a7c87dff0f4ac6084b73fec83caa71a4] drm/radeon/kms: fix up dce4/5 display watermark calc for dpm
git bisect good cf0cfdd7a7c87dff0f4ac6084b73fec83caa71a4
# bad: [a5b91af2e2e36e6031296675cf0c060879268032] drm/radeon: add missing UVD clock set in cayman dpm code
git bisect bad a5b91af2e2e36e6031296675cf0c060879268032
# bad: [7cf36de9eb584e7d0b4956b1c17d46a083bb30c4] drm/radeon/dpm: fixup dynamic state adjust for sumo
git bisect bad 7cf36de9eb584e7d0b4956b1c17d46a083bb30c4
# bad: [d70229f704474b2932e03367a528773e336f6205] drm/radeon/kms: add dpm support for trinity asics
git bisect bad d70229f704474b2932e03367a528773e336f6205
# good: [4a6369e9935e392402d4ccb67f5cddac953e8d3c] drm/radeon/kms: add dpm support for rv6xx (v3)
git bisect good 4a6369e9935e392402d4ccb67f5cddac953e8d3c
# good: [dc50ba7f9a6d9a920409892c7f30bce266067345] drm/radeon/kms: add dpm support for evergreen (v4)
git bisect good dc50ba7f9a6d9a920409892c7f30bce266067345
# bad: [80ea2c129c76a4159a93efeaef4385b6c964dfac] drm/radeon/kms: add dpm support for sumo asics (v2)
git bisect bad 80ea2c129c76a4159a93efeaef4385b6c964dfac
# bad: [6596afd48af4d07c8b454849b2fe7e628974f3ef] drm/radeon/kms: add dpm support for btc (v3)
git bisect bad 6596afd48af4d07c8b454849b2fe7e628974f3ef
Comment 5 Mikko Rapeli 2013-10-15 16:13:49 UTC
This partial revert aka hack seems to fix the issue though I have no idea what it does :)

--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -686,7 +686,6 @@ int ni_init_microcode(struct radeon_device *rdev)
 	const char *chip_name;
 	const char *rlc_chip_name;
 	size_t pfp_req_size, me_req_size, rlc_req_size, mc_req_size;
-	size_t smc_req_size = 0;
 	char fw_name[30];
 	int err;
 
@@ -700,7 +699,6 @@ int ni_init_microcode(struct radeon_device *rdev)
 		me_req_size = EVERGREEN_PM4_UCODE_SIZE * 4;
 		rlc_req_size = EVERGREEN_RLC_UCODE_SIZE * 4;
 		mc_req_size = BTC_MC_UCODE_SIZE * 4;
-		smc_req_size = ALIGN(BARTS_SMC_UCODE_SIZE, 4);
 		break;
 	case CHIP_TURKS:
 		chip_name = "TURKS";
@@ -709,7 +707,6 @@ int ni_init_microcode(struct radeon_device *rdev)
 		me_req_size = EVERGREEN_PM4_UCODE_SIZE * 4;
 		rlc_req_size = EVERGREEN_RLC_UCODE_SIZE * 4;
 		mc_req_size = BTC_MC_UCODE_SIZE * 4;
-		smc_req_size = ALIGN(TURKS_SMC_UCODE_SIZE, 4);
 		break;
 	case CHIP_CAICOS:
 		chip_name = "CAICOS";
@@ -718,7 +715,6 @@ int ni_init_microcode(struct radeon_device *rdev)
 		me_req_size = EVERGREEN_PM4_UCODE_SIZE * 4;
 		rlc_req_size = EVERGREEN_RLC_UCODE_SIZE * 4;
 		mc_req_size = BTC_MC_UCODE_SIZE * 4;
-		smc_req_size = ALIGN(CAICOS_SMC_UCODE_SIZE, 4);
 		break;
 	case CHIP_CAYMAN:
 		chip_name = "CAYMAN";
@@ -727,7 +723,6 @@ int ni_init_microcode(struct radeon_device *rdev)
 		me_req_size = CAYMAN_PM4_UCODE_SIZE * 4;
 		rlc_req_size = CAYMAN_RLC_UCODE_SIZE * 4;
 		mc_req_size = CAYMAN_MC_UCODE_SIZE * 4;
-		smc_req_size = ALIGN(CAYMAN_SMC_UCODE_SIZE, 4);
 		break;
 	case CHIP_ARUBA:
 		chip_name = "ARUBA";
@@ -791,23 +786,6 @@ int ni_init_microcode(struct radeon_device *rdev)
 		}
 	}
 
-	if ((rdev->family >= CHIP_BARTS) && (rdev->family <= CHIP_CAYMAN)) {
-		snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name);
-		err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev);
-		if (err) {
-			printk(KERN_ERR
-			       "smc: error loading firmware \"%s\"\n",
-			       fw_name);
-			release_firmware(rdev->smc_fw);
-			rdev->smc_fw = NULL;
-		} else if (rdev->smc_fw->size != smc_req_size) {
-			printk(KERN_ERR
-			       "ni_mc: Bogus length %zu in firmware \"%s\"\n",
-			       rdev->mc_fw->size, fw_name);
-			err = -EINVAL;
-		}
-	}
-
 out:
 	if (err) {
 		if (err != -EINVAL)
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c
index 8e5438e..8d81f59 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.c
+++ b/drivers/gpu/drm/radeon/radeon_asic.c
@@ -1759,23 +1759,6 @@ static struct radeon_asic btc_asic = {
 		.set_uvd_clocks = &evergreen_set_uvd_clocks,
 		.get_temperature = &evergreen_get_temp,
 	},
-	.dpm = {
-		.init = &btc_dpm_init,
-		.setup_asic = &btc_dpm_setup_asic,
-		.enable = &btc_dpm_enable,
-		.disable = &btc_dpm_disable,
-		.pre_set_power_state = &btc_dpm_pre_set_power_state,
-		.set_power_state = &btc_dpm_set_power_state,
-		.post_set_power_state = &btc_dpm_post_set_power_state,
-		.display_configuration_changed = &cypress_dpm_display_configuration_changed,
-		.fini = &btc_dpm_fini,
-		.get_sclk = &btc_dpm_get_sclk,
-		.get_mclk = &btc_dpm_get_mclk,
-		.print_power_state = &rv770_dpm_print_power_state,
-		.debugfs_print_current_performance_level = &rv770_dpm_debugfs_print_current_performance_level,
-		.force_performance_level = &rv770_dpm_force_performance_level,
-		.vblank_too_short = &btc_dpm_vblank_too_short,
-	},
 	.pflip = {
 		.pre_page_flip = &evergreen_pre_page_flip,
 		.page_flip = &evergreen_page_flip,
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
index ddbd2b8..6a54491 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.h
+++ b/drivers/gpu/drm/radeon/radeon_asic.h
@@ -554,17 +554,6 @@ int cypress_dpm_set_power_state(struct radeon_device *rdev);
 void cypress_dpm_display_configuration_changed(struct radeon_device *rdev);
 void cypress_dpm_fini(struct radeon_device *rdev);
 bool cypress_dpm_vblank_too_short(struct radeon_device *rdev);
-int btc_dpm_init(struct radeon_device *rdev);
-void btc_dpm_setup_asic(struct radeon_device *rdev);
-int btc_dpm_enable(struct radeon_device *rdev);
-void btc_dpm_disable(struct radeon_device *rdev);
-int btc_dpm_pre_set_power_state(struct radeon_device *rdev);
-int btc_dpm_set_power_state(struct radeon_device *rdev);
-void btc_dpm_post_set_power_state(struct radeon_device *rdev);
-void btc_dpm_fini(struct radeon_device *rdev);
-u32 btc_dpm_get_sclk(struct radeon_device *rdev, bool low);
-u32 btc_dpm_get_mclk(struct radeon_device *rdev, bool low);
-bool btc_dpm_vblank_too_short(struct radeon_device *rdev);
 int sumo_dpm_init(struct radeon_device *rdev);
 int sumo_dpm_enable(struct radeon_device *rdev);
 void sumo_dpm_disable(struct radeon_device *rdev);
Comment 6 Alex Deucher 2013-10-15 18:10:08 UTC
Do you have dpm enabled (radeon.dpm=1 on the kernel command line in grub, etc.)?  dpm is disabled by default so unless you have enabled it, none of that new code added in that patch gets executed.  You might be missing the smc ucode file for which would explain why your patch fixes the issue.  Please attach your dmesg output.
Comment 7 Mikko Rapeli 2013-10-16 06:45:01 UTC
Created attachment 111241 [details]
dmesg with 3.11.5+patch

(In reply to Alex Deucher from comment #6)
> Do you have dpm enabled (radeon.dpm=1 on the kernel command line in grub,
> etc.)? 

Nope, I have not touched Ubuntu 12.04 boot options:

$ cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-3.11.5+ root=UUID=9f5a9635-088b-43a8-9444-a3c642a81256 ro quiet splash vt.handoff=7

> dpm is disabled by default so unless you have enabled it, none of
> that new code added in that patch gets executed.  You might be missing the
> smc ucode file for which would explain why your patch fixes the issue. 
> Please attach your dmesg output.

Full one attached:

$ dmesg|egrep -i "radeon|drm"
[    3.467905] [drm] Initialized drm 1.1.0 20060810
[    3.474384] [drm] radeon kernel modesetting enabled.
[    3.474619] [drm] initializing kernel modesetting (CAICOS 0x1002:0x6760 0x103C:0x161A).
[    3.474639] [drm] register mmio base: 0xD4400000
[    3.474640] [drm] register mmio size: 131072
[    3.475154] radeon 0000:01:00.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M used)
[    3.475156] radeon 0000:01:00.0: GTT: 512M 0x0000000040000000 - 0x000000005FFFFFFF
[    3.475158] [drm] Detected VRAM RAM=1024M, BAR=256M
[    3.475160] [drm] RAM width 64bits DDR
[    3.475263] [drm] radeon: 1024M of VRAM memory ready
[    3.475264] [drm] radeon: 512M of GTT memory ready.
[    3.494973] radeon 0000:01:00.0: radeon_uvd: Can't load firmware "radeon/SUMO_uvd.bin"
[    3.494985] [drm] GART: num cpu pages 131072, num gpu pages 131072
[    3.495370] [drm] enabling PCIE gen 2 link speeds, disable with radeon.pcie_gen2=0
[    3.508367] [drm] Loading CAICOS Microcode
[    3.509151] [drm] PCIE GART of 512M enabled (table at 0x0000000000040000).
[    3.509259] radeon 0000:01:00.0: WB enabled
[    3.509262] radeon 0000:01:00.0: fence driver on ring 0 use gpu addr 0x0000000040000c00 and cpu addr 0xffff88022dd56c00
[    3.509263] radeon 0000:01:00.0: fence driver on ring 3 use gpu addr 0x0000000040000c0c and cpu addr 0xffff88022dd56c0c
[    3.509265] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[    3.509266] [drm] Driver supports precise vblank timestamp query.
[    3.509286] radeon 0000:01:00.0: irq 58 for MSI/MSI-X
[    3.509295] radeon 0000:01:00.0: radeon: using MSI.
[    3.509321] [drm] radeon: irq initialized.
[    3.525688] [drm] ring test on 0 succeeded in 2 usecs
[    3.525752] [drm] ring test on 3 succeeded in 1 usecs
[    3.525943] [drm] ib test on ring 0 succeeded in 0 usecs
[    3.525988] [drm] ib test on ring 3 succeeded in 0 usecs
[    3.583259] [drm] radeon atom DIG backlight initialized
[    3.583264] [drm] Radeon Display Connectors
[    3.583265] [drm] Connector 0:
[    3.583267] [drm]   LVDS-1
[    3.583268] [drm]   DDC: 0x6430 0x6430 0x6434 0x6434 0x6438 0x6438 0x643c 0x643c
[    3.583269] [drm]   Encoders:
[    3.583270] [drm]     LCD1: INTERNAL_UNIPHY
[    3.583270] [drm] Connector 1:
[    3.583271] [drm]   DP-1
[    3.583272] [drm]   HPD1
[    3.583273] [drm]   DDC: 0x6460 0x6460 0x6464 0x6464 0x6468 0x6468 0x646c 0x646c
[    3.583274] [drm]   Encoders:
[    3.583274] [drm]     DFP1: INTERNAL_UNIPHY1
[    3.583275] [drm] Connector 2:
[    3.583276] [drm]   DP-2
[    3.583276] [drm]   HPD2
[    3.583277] [drm]   DDC: 0x6440 0x6440 0x6444 0x6444 0x6448 0x6448 0x644c 0x644c
[    3.583278] [drm]   Encoders:
[    3.583279] [drm]     DFP2: INTERNAL_UNIPHY1
[    3.583279] [drm] Connector 3:
[    3.583280] [drm]   DP-3
[    3.583280] [drm]   HPD3
[    3.583281] [drm]   DDC: 0x6450 0x6450 0x6454 0x6454 0x6458 0x6458 0x645c 0x645c
[    3.583282] [drm]   Encoders:
[    3.583283] [drm]     DFP3: INTERNAL_UNIPHY2
[    3.583283] [drm] Connector 4:
[    3.583284] [drm]   VGA-1
[    3.583285] [drm]   DDC: 0x64d8 0x64d8 0x64dc 0x64dc 0x64e0 0x64e0 0x64e4 0x64e4
[    3.583286] [drm]   Encoders:
[    3.583287] [drm]     CRT1: INTERNAL_KLDSCP_DAC1
[    3.583391] [drm] Internal thermal controller with fan control
[    3.584236] [drm] radeon: power management initialized
[    3.689399] [drm] fb mappable at 0xC0142000
[    3.689402] [drm] vram apper at 0xC0000000
[    3.689403] [drm] size 8294400
[    3.689403] [drm] fb depth is 24
[    3.689404] [drm]    pitch is 7680
[    3.689475] fbcon: radeondrmfb (fb0) is primary device
[    3.972457] radeon 0000:01:00.0: fb0: radeondrmfb frame buffer device
[    3.972459] radeon 0000:01:00.0: registered panic notifier
[    3.972560] [drm] Initialized radeon 2.34.0 20080528 for 0000:01:00.0 on minor 0
Comment 8 Alex Deucher 2013-10-16 15:18:30 UTC
Please attach your dmesg output without the patch applied.
Comment 9 Alex Deucher 2013-10-16 15:20:34 UTC
Does adding the smc ucode for your chip to the filesytem (and initrd if you are using one) fix the issue?
Comment 10 Mikko Rapeli 2013-10-16 15:29:18 UTC
Created attachment 111331 [details]
dmesg with 3.11.5

dmesg from plain 3.11.5 attached.

The horizontal stripes also appear on the laptop display, not just the externa DVI display.
Comment 11 Alex Deucher 2013-10-16 15:37:57 UTC
You need to install the new SMC ucode for your card.  The driver is failing to initialize without it so you are ending up with the vesa driver.

[    3.519520] smc: error loading firmware "radeon/CAICOS_smc.bin"
[    3.519525] ni_cp: Failed to load firmware "radeon/CAICOS_smc.bin"
[    3.519532] [drm:evergreen_startup] *ERROR* Failed to load firmware!
[    3.519536] radeon 0000:01:00.0: disabling GPU acceleration
[    3.520562] radeon 0000:01:00.0: ffff880233cd6c00 unpin not necessary
[    3.520619] [drm:evergreen_init] *ERROR* radeon: MC ucode required for NI+.
[    3.520622] radeon 0000:01:00.0: Fatal error during GPU init
[    3.520625] [drm] radeon: finishing device.
Comment 12 Alex Deucher 2013-10-16 15:38:35 UTC
Created attachment 111341 [details]
make missing smc ucode non-fatal

This patch should fix the issue if the smc ucode is missing.
Comment 13 Mikko Rapeli 2013-10-16 16:31:49 UTC
Created attachment 111351 [details]
dmesg with 3.11.5+0001-drm-radeon-make-missing-smc-ucode-non-fatal-r7xx-SI.patch

(In reply to Alex Deucher from comment #12)
> Created attachment 111341 [details]
> make missing smc ucode non-fatal
> 
> This patch should fix the issue if the smc ucode is missing.

Thanks, patch works. dmesg with the patch attached. Would be nice to get this fix to stable.

Tested-by: Mikko Rapeli <mikko.rapeli@iki.fi>

Adding the missing firmware files works as well. Copied CAICOS_smc.bin from latest linux-firmware git tree to /lib/firmware/radeon/, created new initramfs with 'update-initramfs -u' and rebooted.

The vesa driver seems rather buggy. Switching to virtual consoles from X brough up just dark screens with no way to get back without power cycles.