When using DPM with the open-source radeon driver, the Card first gets into Power-State-1 which is the desirable one. But after few seconds, it changes its state to a seemingly multi-display one. Tested on a Dell Studio 1555 with Radeon 4570 running Trusty alpha and openSUSE 13.1. 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v] [1002:9553] (prog-if 00 [VGA controller]) Subsystem: Dell Mobility Radeon HD 4570 [1028:02be] Flags: bus master, fast devsel, latency 0, IRQ 46 Memory at d0000000 (32-bit, prefetchable) [size=256M] I/O ports at 2000 [size=256] Memory at fc000000 (32-bit, non-prefetchable) [size=64K] [virtual] Expansion ROM at fc020000 [disabled] [size=128K] Capabilities: <access denied> Kernel driver in use: radeon Dmesg log. (It successfully gets into single_disp video mode.) [ 2.047282] [drm] ib test on ring 5 succeeded [ 2.073894] [drm] radeon atom DIG backlight initialized [ 2.073898] [drm] Radeon Display Connectors [ 2.073900] [drm] Connector 0: [ 2.073902] [drm] VGA-1 [ 2.073904] [drm] DDC: 0x7fa0 0x7fa0 0x7fa4 0x7fa4 0x7fa8 0x7fa8 0x7fac 0x7fac [ 2.073906] [drm] Encoders: [ 2.073907] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [ 2.073923] [drm] Connector 1: [ 2.073925] [drm] HDMI-A-1 [ 2.073926] [drm] HPD1 [ 2.073928] [drm] DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c [ 2.073930] [drm] Encoders: [ 2.073931] [drm] DFP1: INTERNAL_UNIPHY [ 2.073932] [drm] Connector 2: [ 2.073934] [drm] LVDS-1 [ 2.073937] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 2.073940] [drm] DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c [ 2.073955] [drm] Encoders: [ 2.073956] [drm] LCD1: INTERNAL_UNIPHY2 [ 2.073997] [drm] Internal thermal controller with fan control [ 2.074090] == power state 0 == [ 2.074092] ui class: none [ 2.074094] internal class: boot [ 2.074096] caps: video [ 2.074099] uvd vclk: 0 dclk: 0 [ 2.074115] power level 0 sclk: 50000 mclk: 80000 vddc: 1200 [ 2.074117] power level 1 sclk: 50000 mclk: 80000 vddc: 1200 [ 2.074119] power level 2 sclk: 50000 mclk: 80000 vddc: 1200 [ 2.074120] status: c r b [ 2.074123] == power state 1 == [ 2.074124] ui class: performance [ 2.074126] internal class: none [ 2.074128] caps: single_disp video [ 2.074131] uvd vclk: 0 dclk: 0 [ 2.074133] power level 0 sclk: 22000 mclk: 30000 vddc: 900 [ 2.074149] power level 1 sclk: 30000 mclk: 50000 vddc: 900 [ 2.074150] power level 2 sclk: 68000 mclk: 80000 vddc: 1200 [ 2.074152] status: [ 2.074153] == power state 2 == [ 2.074155] ui class: battery [ 2.074156] internal class: none [ 2.074158] caps: single_disp video [ 2.074161] uvd vclk: 0 dclk: 0 [ 2.074163] power level 0 sclk: 22000 mclk: 30000 vddc: 900 [ 2.074164] power level 1 sclk: 30000 mclk: 30000 vddc: 900 [ 2.074180] power level 2 sclk: 30000 mclk: 30000 vddc: 900 [ 2.074181] status: [ 2.074183] == power state 3 == [ 2.074184] ui class: none [ 2.074185] internal class: uvd [ 2.074188] caps: video [ 2.074190] uvd vclk: 54000 dclk: 40000 [ 2.074192] power level 0 sclk: 60000 mclk: 80000 vddc: 1100 [ 2.074193] power level 1 sclk: 60000 mclk: 80000 vddc: 1100 [ 2.074195] power level 2 sclk: 60000 mclk: 80000 vddc: 1100 [ 2.074196] status: [ 2.074212] == power state 4 == [ 2.074213] ui class: performance [ 2.074214] internal class: none [ 2.074216] caps: video [ 2.074219] uvd vclk: 0 dclk: 0 [ 2.074220] power level 0 sclk: 30000 mclk: 80000 vddc: 1200 [ 2.074222] power level 1 sclk: 30000 mclk: 80000 vddc: 1200 [ 2.074224] power level 2 sclk: 68000 mclk: 80000 vddc: 1200 [ 2.074225] status: [ 2.074226] == power state 5 == [ 2.074227] ui class: battery [ 2.074243] internal class: none [ 2.074245] caps: video [ 2.074247] uvd vclk: 0 dclk: 0 [ 2.074249] power level 0 sclk: 30000 mclk: 40000 vddc: 1000 [ 2.074251] power level 1 sclk: 30000 mclk: 40000 vddc: 1000 [ 2.074252] power level 2 sclk: 30000 mclk: 40000 vddc: 1000 [ 2.074253] status: [ 2.074255] == power state 6 == [ 2.074256] ui class: none [ 2.074257] internal class: uvd_hd [ 2.074259] caps: video [ 2.074276] uvd vclk: 40000 dclk: 30000 [ 2.074278] power level 0 sclk: 45000 mclk: 50000 vddc: 1000 [ 2.074279] power level 1 sclk: 45000 mclk: 50000 vddc: 1000 [ 2.074281] power level 2 sclk: 45000 mclk: 50000 vddc: 1000 [ 2.074282] status: [ 2.074284] == power state 7 == [ 2.074285] ui class: none [ 2.074286] internal class: uvd_sd [ 2.074288] caps: video [ 2.074291] uvd vclk: 10000 dclk: 10000 [ 2.074292] power level 0 sclk: 30000 mclk: 40000 vddc: 900 [ 2.074308] power level 1 sclk: 30000 mclk: 40000 vddc: 900 [ 2.074310] power level 2 sclk: 30000 mclk: 40000 vddc: 900 [ 2.074311] status: [ 2.076071] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 2.078243] ata1.00: ATA-8: ST9500325AS, 0003DEM1, max UDMA/133 [ 2.078260] ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32) [ 2.080345] ata1.00: configured for UDMA/133 [ 2.080712] scsi 0:0:0:0: Direct-Access ATA ST9500325AS 0003 PQ: 0 ANSI: 5 [ 2.081012] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB) [ 2.081051] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 2.081194] sd 0:0:0:0: [sda] Write Protect is off [ 2.081197] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.081274] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.090253] ata2.00: ATAPI: TSSTcorp DVD+/-RW TS-T633A, DW20, max UDMA/100 [ 2.090259] ata2.00: applying bridge limits [ 2.104271] ata2.00: configured for UDMA/100 [ 2.107969] scsi 1:0:0:0: CD-ROM TSSTcorp DVD+-RW TS-T633A DW20 PQ: 0 ANSI: 5 [ 2.113543] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 2.113549] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 2.113784] sr 1:0:0:0: Attached scsi CD-ROM sr0 [ 2.113903] sr 1:0:0:0: Attached scsi generic sg1 type 5 [ 2.165001] sda: sda1 sda2 sda3 sda4 < sda5 sda6 > [ 2.166164] sd 0:0:0:0: [sda] Attached SCSI disk [ 2.176413] switching from power state: [ 2.176418] ui class: none [ 2.176420] internal class: boot [ 2.176422] caps: video [ 2.176425] uvd vclk: 0 dclk: 0 [ 2.176428] power level 0 sclk: 50000 mclk: 80000 vddc: 1200 [ 2.176443] power level 1 sclk: 50000 mclk: 80000 vddc: 1200 [ 2.176445] power level 2 sclk: 50000 mclk: 80000 vddc: 1200 [ 2.176446] status: c b [ 2.176449] switching to power state: [ 2.176450] ui class: performance [ 2.176451] internal class: none [ 2.176454] caps: single_disp video [ 2.176457] uvd vclk: 0 dclk: 0 [ 2.176458] power level 0 sclk: 22000 mclk: 30000 vddc: 900 [ 2.176474] power level 1 sclk: 30000 mclk: 50000 vddc: 900 [ 2.176476] power level 2 sclk: 68000 mclk: 80000 vddc: 1200 [ 2.176477] status: r [ 2.180231] firewire_core 0000:09:01.0: created device fw0: GUID 324fc0003c809158, S400 [ 2.182491] [drm] radeon: dpm initialized ================================================================== After a sec, it moves into another state. [ 3.378716] [drm] fb mappable at 0xD045E000 [ 3.378719] [drm] vram apper at 0xD0000000 [ 3.378721] [drm] size 4325376 [ 3.378722] [drm] fb depth is 24 [ 3.378724] [drm] pitch is 5632 [ 3.378877] fbcon: radeondrmfb (fb0) is primary device [ 3.620192] switching from power state: [ 3.620212] ui class: performance [ 3.620214] internal class: none [ 3.620217] caps: single_disp video [ 3.620219] uvd vclk: 0 dclk: 0 [ 3.620221] power level 0 sclk: 22000 mclk: 30000 vddc: 900 [ 3.620222] power level 1 sclk: 30000 mclk: 50000 vddc: 900 [ 3.620224] power level 2 sclk: 68000 mclk: 80000 vddc: 1200 [ 3.620226] status: c [ 3.620227] switching to power state: [ 3.620228] ui class: performance [ 3.620244] internal class: none [ 3.620247] caps: video [ 3.620248] uvd vclk: 0 dclk: 0 [ 3.620250] power level 0 sclk: 30000 mclk: 80000 vddc: 1200 [ 3.620251] power level 1 sclk: 30000 mclk: 80000 vddc: 1200 [ 3.620253] power level 2 sclk: 68000 mclk: 80000 vddc: 1200 [ 3.620254] status: r [ 4.440416] Console: switching to colour frame buffer device 170x48 [ 4.446012] radeon 0000:01:00.0: fb0: radeondrmfb frame buffer device [ 4.446014] radeon 0000:01:00.0: registered panic notifier [ 4.446045] [drm] Initialized radeon 2.34.0 20080528 for 0000:01:00.0 on minor 0 Xrandr abhinav@abhinav-Studio-1555:~$ xrandr Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192 VGA-0 disconnected (normal left inverted right x axis y axis) HDMI-0 disconnected (normal left inverted right x axis y axis) LVDS connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm 1366x768 59.6*+ 1280x720 59.9 1152x768 59.8 1024x768 59.9 800x600 59.9 848x480 59.7 720x480 59.7 640x480 59.4 Temp on Power-state 4 remains 18 deg Celsius hotter than Power-State 1 (which is what I get with the latest Catalyst)
Created attachment 126461 [details] possible fix Does the attached patch help? Can you attach the dmesg output with this patch applied?
Created attachment 126561 [details] Dmesg output after applying fix It worked. It's now remaining in single_disp power state unless I add an extra monitor. Just as should it work. BTW Will I have to compile kernel with this fix every time or you will push it upstream?
Great. I'll push a fix upstream. Thanks for testing.
Thanks a lot. I am seeing these vblank_time values. But everything seems fine with no screen blanking or screen artifacts. Clocks and temperature is also under control. [ 22.542092] tg3 0000:08:00.0 eth0: Link is up at 100 Mbps, full duplex [ 22.542096] tg3 0000:08:00.0 eth0: Flow control is on for TX and on for RX [ 22.542117] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 24.364133] [drm] vblank_time: 294 [ 25.180308] [drm] vblank_time: 294 [ 1337.236122] [drm] vblank_time: 4294967295 [ 1337.340217] [drm] vblank_time: 4294967295 [ 1937.476218] [drm] vblank_time: 294 [ 1938.936214] [drm] vblank_time: 4294967295 [ 2537.836213] [drm] vblank_time: 294 [ 2539.296439] [drm] vblank_time: 4294967295 [ 7282.380994] perf samples too long (2502 > 2500), lowering kernel.perf_event_max_sample_rate to 50000 [11578.016133] [drm] vblank_time: 294 abhinav@abhinav-Mintk:~ > sudo cat /sys/kernel/debug/dri/64/radeon_pm_info uvd vclk: 0 dclk: 0 power level 0 sclk: 22000 mclk: 30000 vddc: 900 abhinav@abhinav-Mintk:~ >