RADEON / DPM: GPU cannot properly up-clock
Joshua C.
joshuacov at gmail.com
Wed Jun 26 10:51:50 PDT 2013
First of all thank you guys for pushing this out! Great work!
I tried the latest code in drm-next-3.11-wip (up to commit
b3c1e0c3ba885db44 “drm/radeon: fix endian issues in atombios dpm
code”) in connection with the latest radeon_ucode (latest update on
2013-06-26). I also reintroduced the debugfs info so that I can better
observe the gpu-settings. For this I put back the following patch:
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c
b/drivers/gpu/drm/radeon/radeon_pm.c
index 7ba5d6f..9367234 100644
--- a/drivers/gpu/drm/radeon/radeon_pm.c
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -1066,6 +1066,11 @@ static int radeon_pm_init_dpm(struct radeon_device *rdev)
ret = device_create_file(rdev->dev, &dev_attr_power_method);
if (ret)
DRM_ERROR("failed to create device file for power method\n");
+
+ if (radeon_debugfs_pm_init(rdev)) {
+ DRM_ERROR("Failed to register debugfs file for PM!\n");
+ }
+
DRM_INFO("radeon: dpm initialized\n");
}
--
1.8.2.1
Everything works fine, however I think that my gpu (ati 6670, see
below) doesn't reclock properly (OR doesn't reclock at all). I
observed the gpu-temps and compared those with the readings when using
“profile” and “dynpm”. Usually (with dynpm) the temps stay low and
jump up when I start glxgears or any HD-movie. With the latest dpm my
temps and the gpu stay in the lowest profile all the time. It doesn't
reclock even if I start any demanding work like HD-Movie. Dmesg shows
this:
***
[ 1.307529] == power state 0 ==
[ 1.307530] ui class: none
[ 1.307531] internal class: boot
[ 1.307532] caps:
[ 1.307533] uvd vclk: 0 dclk: 0
[ 1.307534] power level 0 sclk: 10000 mclk: 15000 vddc:
900 vddci: 0
[ 1.307535] power level 1 sclk: 10000 mclk: 15000 vddc:
900 vddci: 0
[ 1.307536] power level 2 sclk: 10000 mclk: 15000 vddc:
900 vddci: 0
[ 1.307537] status: c r b
[ 1.307538] == power state 1 ==
[ 1.307539] ui class: performance
[ 1.307539] internal class: none
[ 1.307540] caps:
[ 1.307541] uvd vclk: 0 dclk: 0
[ 1.307542] power level 0 sclk: 10000 mclk: 15000 vddc:
900 vddci: 0
[ 1.307543] power level 1 sclk: 40000 mclk: 100000
vddc: 1100 vddci: 0
[ 1.307544] power level 2 sclk: 80000 mclk: 100000
vddc: 1100 vddci: 0
[ 1.307544] status:
[ 1.307545] == power state 2 ==
[ 1.307546] ui class: none
[ 1.307546] internal class: uvd
[ 1.307547] caps: video
[ 1.307549] uvd vclk: 70000 dclk: 56000
[ 1.307549] power level 0 sclk: 80000 mclk: 100000
vddc: 1100 vddci: 0
[ 1.307550] power level 1 sclk: 80000 mclk: 100000
vddc: 1100 vddci: 0
[ 1.307551] power level 2 sclk: 80000 mclk: 100000
vddc: 1100 vddci: 0
[ 1.307552] status:
[ 1.311858] switching from power state:
[ 1.311859] ui class: none
[ 1.311860] internal class: boot
[ 1.311860] caps:
[ 1.311861] uvd vclk: 0 dclk: 0
[ 1.311862] power level 0 sclk: 10000 mclk: 15000 vddc:
900 vddci: 0
[ 1.311863] power level 1 sclk: 10000 mclk: 15000 vddc:
900 vddci: 0
[ 1.311864] power level 2 sclk: 10000 mclk: 15000 vddc:
900 vddci: 0
[ 1.311865] status: c b
[ 1.311866] switching to power state:
[ 1.311866] ui class: performance
[ 1.311867] internal class: none
[ 1.311868] caps:
[ 1.311869] uvd vclk: 0 dclk: 0
[ 1.311869] power level 0 sclk: 10000 mclk: 15000 vddc:
900 vddci: 0
[ 1.311870] power level 1 sclk: 40000 mclk: 100000
vddc: 1100 vddci: 0
[ 1.311871] power level 2 sclk: 80000 mclk: 100000
vddc: 1100 vddci: 0
[ 1.311872] status: r
and later (other dmesg output is attached)
[ 1.360509] switching from power state:
[ 1.360510] ui class: performance
[ 1.360510] internal class: none
[ 1.360511] caps:
[ 1.360511] uvd vclk: 0 dclk: 0
[ 1.360512] power level 0 sclk: 10000 mclk: 15000 vddc:
900 vddci: 0
[ 1.360512] power level 1 sclk: 40000 mclk: 100000
vddc: 1100 vddci: 0
[ 1.360513] power level 2 sclk: 80000 mclk: 100000
vddc: 1100 vddci: 0
[ 1.360513] status: c r
[ 1.360514] switching to power state:
[ 1.360514] ui class: performance
[ 1.360515] internal class: none
[ 1.360515] caps:
[ 1.360515] uvd vclk: 0 dclk: 0
[ 1.360516] power level 0 sclk: 10000 mclk: 15000 vddc:
900 vddci: 0
[ 1.360516] power level 1 sclk: 40000 mclk: 100000
vddc: 1100 vddci: 0
[ 1.360517] power level 2 sclk: 80000 mclk: 100000
vddc: 1100 vddci: 0
[ 1.360517] status: c r
***
The radeon_pm_info shows all the time:
[root at localhost ~]# cat /sys/kernel/debug/dri/0/radeon_pm_info
default engine clock: 800000 kHz
current engine clock: 99990 kHz
default memory clock: 1000000 kHz
current memory clock: 150000 kHz
voltage: 1100 mV
PCIE lanes: 16
When using the “dynpm” settings I could see the voltage dropping back
to 900mV (as in performace, power level 0) but now it stays high all
the time. When playing a HD-Moving I can see the film in a
“slow-motion” which also confirms that the gpu doesn't reclock.
Setting dynpm reclocks fine and the HD-movie plays smoothly.
My gpu is:
01:00.0 VGA compatible controller: ATI Technologies Inc Turks XT [AMD
Radeon HD 6600 Series] (prog-if 00 [VGA controller])
Subsystem: PC Partner Limited Device e194
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 56
Region 0: Memory at c0000000 (64-bit, prefetchable) [size=256M]
Region 2: Memory at fe620000 (64-bit, non-prefetchable) [size=128K]
Region 4: I/O ports at e000 [size=256]
Expansion ROM at fe600000 [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-, LTR-, OBFF Not Supported
DevCtl2: Completion Timeout: 50us to 50ms,
TimeoutDis-, LTR-, OBFF Disabled
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range,
EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB,
EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-,
LinkEqualizationRequest-
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 41d2
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 driver in use: radeon
Can some take a look at this?
Thanks,
joshua
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dmesg
Type: application/octet-stream
Size: 4067 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20130626/f585b236/attachment-0001.obj>
More information about the dri-devel
mailing list