Announcement

Collapse
No announcement yet.

ATI Radeon HD6970 (Cayman) power saving doesn't work with open source radeon driver

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    result from radeon 6850

    root /home/dim # dmesg | grep radeon
    [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-bzImage-3.6.0-rc7 root=/dev/sda2 ro pcie_aspm=force radeon.pcie_gen2=1 radeon.dynclks=1 radeon.audio=0 drm.debug=2
    [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-bzImage-3.6.0-rc7 root=/dev/sda2 ro pcie_aspm=force radeon.pcie_gen2=1 radeon.dynclks=1 radeon.audio=0 drm.debug=2
    [ 5.761536] [drm] radeon defaulting to kernel modesetting.
    [ 5.761659] [drm] radeon kernel modesetting enabled.
    [ 5.761787] bus: 'pci': add driver radeon
    [ 5.761830] bus: 'pci': driver_probe_device: matched device 0000:03:00.0 with driver radeon
    [ 5.761833] bus: 'pci': really_probe: probing driver radeon with device 0000:03:00.0
    [ 5.763466] radeon 0000:03:00.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M used)
    [ 5.763658] radeon 0000:03:00.0: GTT: 512M 0x0000000040000000 - 0x000000005FFFFFFF
    [ 5.766629] [drm] radeon: 1024M of VRAM memory ready
    [ 5.766745] [drm] radeon: 512M of GTT memory ready.
    [ 5.767182] radeon 0000:03:00.0: irq 43 for MSI/MSI-X
    [ 5.767192] radeon 0000:03:00.0: radeon: using MSI.
    [ 5.767343] [drm] radeon: irq initialized.
    [ 5.768388] [drm] enabling PCIE gen 2 link speeds, disable with radeon.pcie_gen2=0
    [ 5.768623] Registering platform device 'radeon_cp.0'. Parent at platform
    [ 5.768625] device: 'radeon_cp.0': device_add
    [ 5.768633] bus: 'platform': add device radeon_cp.0
    [ 5.768642] PM: Adding info for platform:radeon_cp.0
    [ 5.768847] device: 'radeon_cp.0': device_add
    [ 5.768857] PM: Adding info for No Bus:radeon_cp.0
    [ 5.768862] firmware radeon_cp.0: firmware: requesting radeon/BARTS_pfp.bin
    [ 5.819565] PM: Removing info for No Bus:radeon_cp.0
    [ 5.819650] device: 'radeon_cp.0': device_add
    [ 5.819675] PM: Adding info for No Bus:radeon_cp.0
    [ 5.819682] firmware radeon_cp.0: firmware: requesting radeon/BARTS_me.bin
    [ 5.826437] PM: Removing info for No Bus:radeon_cp.0
    [ 5.826486] device: 'radeon_cp.0': device_add
    [ 5.826502] PM: Adding info for No Bus:radeon_cp.0
    [ 5.826508] firmware radeon_cp.0: firmware: requesting radeon/BTC_rlc.bin
    [ 5.976339] PM: Removing info for No Bus:radeon_cp.0
    [ 5.976423] device: 'radeon_cp.0': device_add
    [ 5.976444] PM: Adding info for No Bus:radeon_cp.0
    [ 5.976450] firmware radeon_cp.0: firmware: requesting radeon/BARTS_mc.bin
    [ 5.977126] PM: Removing info for No Bus:radeon_cp.0
    [ 5.977181] PM: Removing info for platform:radeon_cp.0
    [ 5.977190] bus: 'platform': remove device radeon_cp.0
    [ 5.979918] radeon 0000:03:00.0: WB enabled
    [ 5.980032] radeon 0000:03:00.0: fence driver on ring 0 use gpu addr 0x0000000040000c00 and cpu addr 0xffff88022237cc00
    [ 6.001684] [drm:radeon_pm_print_states], 4 Power State(s)
    [ 6.001686] [drm:radeon_pm_print_states], State 0: Default
    [ 6.001688] [drm:radeon_pm_print_states], Default
    [ 6.001689] [drm:radeon_pm_print_states],
    [ 6.001691] [drm:radeon_pm_print_states], 3 Clock Mode(s)
    [ 6.001692] [drm:radeon_pm_print_states], 0 e: 775000 m: 1000000 v: 1150 No display only
    [ 6.001694] [drm:radeon_pm_print_states], 1 e: 775000 m: 1000000 v: 1150
    [ 6.001696] [drm:radeon_pm_print_states], 2 e: 775000 m: 1000000 v: 1150
    [ 6.001698] [drm:radeon_pm_print_states], State 1: Performance
    [ 6.001699] [drm:radeon_pm_print_states], 16 PCIE Lanes
    [ 6.001700] [drm:radeon_pm_print_states], 3 Clock Mode(s)
    [ 6.001701] [drm:radeon_pm_print_states], 0 e: 100000 m: 150000 v: 950 No display only
    [ 6.001703] [drm:radeon_pm_print_states], 1 e: 600000 m: 1000000 v: 1100
    [ 6.001704] [drm:radeon_pm_print_states], 2 e: 775000 m: 1000000 v: 1150
    [ 6.001706] [drm:radeon_pm_print_states], State 2: Default
    [ 6.001707] [drm:radeon_pm_print_states], 16 PCIE Lanes
    [ 6.001708] [drm:radeon_pm_print_states], 3 Clock Mode(s)
    [ 6.001709] [drm:radeon_pm_print_states], 0 e: 300000 m: 1000000 v: 950 No display only
    [ 6.001711] [drm:radeon_pm_print_states], 1 e: 300000 m: 1000000 v: 950
    [ 6.001712] [drm:radeon_pm_print_states], 2 e: 775000 m: 1000000 v: 1150
    [ 6.001714] [drm:radeon_pm_print_states], State 3: Default
    [ 6.001715] [drm:radeon_pm_print_states], 16 PCIE Lanes
    [ 6.001716] [drm:radeon_pm_print_states], 3 Clock Mode(s)
    [ 6.001717] [drm:radeon_pm_print_states], 0 e: 600000 m: 1000000 v: 1100 No display only
    [ 6.001719] [drm:radeon_pm_print_states], 1 e: 600000 m: 1000000 v: 1100
    [ 6.001720] [drm:radeon_pm_print_states], 2 e: 775000 m: 1000000 v: 1150
    [ 6.002937] [drm] radeon: power management initialized
    [ 6.073809] fbcon: radeondrmfb (fb0) is primary device
    [ 6.277102] [drm:radeon_set_power_state], Setting: e: 77500
    [ 6.277736] [drm:radeon_set_power_state], Setting: m: 100000
    [ 6.292799] fb0: radeondrmfb frame buffer device
    [ 6.292811] [drm] Initialized radeon 2.22.0 20080528 for 0000:03:00.0 on minor 0
    [ 6.292813] driver: '0000:03:00.0': driver_bound: bound to device 'radeon'
    [ 6.292817] bus: 'pci': really_probe: bound device 0000:03:00.0 to driver radeon
    [ 48.065508] [drm:radeon_pm_compute_clocks], radeon: dynamic power management activated
    root /home/dim #

    Comment


    • #12
      Does anyone know wether it is possible to edit the BIOS of the Radeon 6970 card, so it would use the same power profile for dualhead as for single head?

      There are bios editors available for Windows (e.g. http://www.techpowerup.com/rbe/ ) however I have no experience with them and don't know, wether they provide access to the second power profile for dualhead. If access is possible, it should be easy to just copy the profile for singlehead over to dualhead.

      It would be nice if some of you experts could further clarify this, otherwise I am willing to experiment a little on my own. My card still has the bios switch, so experimenting should be possible.

      Comment


      • #13
        Here is a table from an HD 5770 which does downclock when using two monitors (although not as low as when using one monitor).

        Code:
        [    3.192710] [drm:radeon_pm_print_states], State 0: Default
        [    3.192715] [drm:radeon_pm_print_states], 	Default
        [    3.192718] [drm:radeon_pm_print_states], 
        [    3.192723] [drm:radeon_pm_print_states], 	3 Clock Mode(s)
        [    3.192727] [drm:radeon_pm_print_states], 		0 e: 860000	m: 1200000	v: 1125	No display only
        [    3.192733] [drm:radeon_pm_print_states], 		1 e: 860000	m: 1200000	v: 1125
        [    3.192738] [drm:radeon_pm_print_states], 		2 e: 860000	m: 1200000	v: 1125
        [    3.192743] [drm:radeon_pm_print_states], State 1: Performance
        [    3.192747] [drm:radeon_pm_print_states], 	16 PCIE Lanes
        [    3.192750] [drm:radeon_pm_print_states], 	Single display only
        [    3.192753] [drm:radeon_pm_print_states], 	3 Clock Mode(s)
        [    3.192757] [drm:radeon_pm_print_states], 		0 e: 157000	m: 300000	v: 1000	No display only
        [    3.192762] [drm:radeon_pm_print_states], 		1 e: 600000	m: 1200000	v: 1000
        [    3.192766] [drm:radeon_pm_print_states], 		2 e: 860000	m: 1200000	v: 1125
        [    3.192771] [drm:radeon_pm_print_states], State 2: Default
        [    3.192775] [drm:radeon_pm_print_states], 	16 PCIE Lanes
        [    3.192779] [drm:radeon_pm_print_states], 	3 Clock Mode(s)
        [    3.192782] [drm:radeon_pm_print_states], 		0 e: 400000	m: 900000	v: 1000	No display only
        [    3.192787] [drm:radeon_pm_print_states], 		1 e: 400000	m: 900000	v: 1000
        [    3.192792] [drm:radeon_pm_print_states], 		2 e: 400000	m: 900000	v: 1000
        [    3.192796] [drm:radeon_pm_print_states], State 3: Performance
        [    3.192800] [drm:radeon_pm_print_states], 	16 PCIE Lanes
        [    3.192804] [drm:radeon_pm_print_states], 	3 Clock Mode(s)
        [    3.192807] [drm:radeon_pm_print_states], 		0 e: 400000	m: 1200000	v: 1000	No display only
        [    3.192812] [drm:radeon_pm_print_states], 		1 e: 600000	m: 1200000	v: 1000
        [    3.192817] [drm:radeon_pm_print_states], 		2 e: 860000	m: 1200000	v: 1125
        [    3.192822] [drm:radeon_pm_print_states], State 4: Default
        [    3.192825] [drm:radeon_pm_print_states], 	16 PCIE Lanes
        [    3.192829] [drm:radeon_pm_print_states], 	3 Clock Mode(s)
        [    3.192833] [drm:radeon_pm_print_states], 		0 e: 157000	m: 300000	v: 1000	No display only
        [    3.192837] [drm:radeon_pm_print_states], 		1 e: 157000	m: 300000	v: 1000
        [    3.192842] [drm:radeon_pm_print_states], 		2 e: 157000	m: 300000	v: 1000
        With one monitor the State 1 section is used, with the 0/1/2 modes matching the low/mid/high power profiles.
        With two monitors the State 3 section is used, with low profile dropping the engine clock to 400,000 kHz.

        I get the same behaviour in Windows 7 using the Catalyst driver, I checked the clock values using GPU-Z and looking at the sensors tab.

        IIRC bridgman has said that the power tables are set by the card manufacturer and are different for each card. This particular card is a Sapphire Vapor-X HD 5770.

        Comment


        • #14
          Originally posted by Agent20 View Post
          Here is a table from an HD 5770 which does downclock when using two monitors (although not as low as when using one monitor).
          Hi, thanks that's useful. I can see that it has two performance states, one for single head and one for dual head. That's exactly what the current code is targeting, but which is absent in the HD6000 series.



          Originally posted by Agent20 View Post
          IIRC bridgman has said that the power tables are set by the card manufacturer and are different for each card.
          Well that complicates things, but I guess anything is better than the current version, which doesn't seem to target Northern Islands at all.


          I could use the states for cayman, caicos and turks still if anyone has them.

          Comment


          • #15
            I don't think this is an open-source or even an AMD specific problem. As far as I know, all drivers run the cards at full power when several monitors are attached. This is because power state changes are synced to v-blank, so when there are several monitors installed, there is no single v-blank you can use for reference. This is way out of my area of expertise, maybe someone else can explain it better.

            Comment


            • #16
              Originally posted by bug77 View Post
              I don't think this is an open-source or even an AMD specific problem. As far as I know, all drivers run the cards at full power when several monitors are attached.
              The idle states are different, for barts at least. On my card, engine clocks for single head is 100Mhz, dual head 300Mhz, and eyefinity 600Mhz. The mid and high states are always the same though, at 775Mhz and 900Mhz.
              This is because power state changes are synced to v-blank, so when there are several monitors installed, there is no single v-blank you can use for reference.
              It is varied under Windows, and I don't notice a flicker on the secondary when it changes. Pretty sure I read elsewhere that ATI have a more direct way to manage the power states though. Regardless, the linux driver doesn't seem able to do it within v-blank anyway.

              Comment


              • #17
                Originally posted by 89c51 View Post
                lolwut?

                Loongson = Underpowered chip for which you still need a GPU. (ATI nVidia)

                ARM = Underpowered chip for which you still need a GPU. (bonus closed drivers for every GPU related to ARM)

                Intel = Buggy firmware mobos for which they don't give a fuck about linux. They don't support it. (+ GPUS not on par with AMD nVidia)

                Enjoy.
                Hi you know what? The thread was death for days until I posted the "lolwut?" stuff.
                Then the thread awake and moves forward...

                Sometimes some tropics need a kick-starter.

                Comment


                • #18
                  The thread has constantly seen several productive posts per day despite your childish attempts to derail it.
                  Last edited by chithanh; 01 October 2012, 10:29 PM.

                  Comment


                  • #19
                    Cayman
                    Code:
                    [    0.790577] [drm] Internal thermal controller with fan control
                    [    0.790678] [drm:radeon_pm_print_states], 4 Power State(s)
                    [    0.790679] [drm:radeon_pm_print_states], State 0: Default
                    [    0.790680] [drm:radeon_pm_print_states],    Default
                    [    0.790681] [drm:radeon_pm_print_states], 
                    [    0.790682]  16 PCIE Lanes
                    [    0.790767] [drm:radeon_pm_print_states],    3 Clock Mode(s)
                    [    0.790767] [drm:radeon_pm_print_states],            0 e: 800000     m: 1250000      v: 1175 No display only
                    [    0.790769] [drm:radeon_pm_print_states],            1 e: 800000     m: 1250000      v: 1175
                    [    0.790770] [drm:radeon_pm_print_states],            2 e: 800000     m: 1250000      v: 1175
                    [    0.790771] [drm:radeon_pm_print_states], State 1: Performance
                    [    0.790772] [drm:radeon_pm_print_states],    16 PCIE Lanes
                    [    0.790773] [drm:radeon_pm_print_states],    3 Clock Mode(s)
                    [    0.790774] [drm:radeon_pm_print_states],            0 e: 250000     m: 150000       v: 900  No display only
                    [    0.790775] [drm:radeon_pm_print_states],            1 e: 500000     m: 1250000      v: 1000
                    [    0.790776] [drm:radeon_pm_print_states],            2 e: 870000     m: 1250000      v: 1175
                    [    0.790777] [drm:radeon_pm_print_states], State 2: Default
                    [    0.790778] [drm:radeon_pm_print_states],    16 PCIE Lanes
                    [    0.790779] [drm:radeon_pm_print_states],    3 Clock Mode(s)
                    [    0.790780] [drm:radeon_pm_print_states],            0 e: 500000     m: 1250000      v: 1000 No display only
                    [    0.790781] [drm:radeon_pm_print_states],            1 e: 500000     m: 1250000      v: 1000
                    [    0.790782] [drm:radeon_pm_print_states],            2 e: 870000     m: 1250000      v: 1175
                    [    0.790783] [drm:radeon_pm_print_states], State 3: Default
                    [    0.790784] [drm:radeon_pm_print_states],    16 PCIE Lanes
                    [    0.790785] [drm:radeon_pm_print_states],    3 Clock Mode(s)
                    [    0.790786] [drm:radeon_pm_print_states],            0 e: 500000     m: 1250000      v: 1000 No display only
                    [    0.790787] [drm:radeon_pm_print_states],            1 e: 500000     m: 1250000      v: 1000
                    [    0.790788] [drm:radeon_pm_print_states],            2 e: 870000     m: 1250000      v: 1175
                    [    0.791822] [drm] radeon: power management initialized
                    My kernel is custom modified to always force single monitor power mode so the GPU sits at 250000 / 150000 (State 1: Performance, 0 Clock Mode) all day long with no issues with dual displays. The windows driver isn't much better, by default it is always at 870000/1250000 and occasionally it will drop down to 450000 / 1250000 which doesn't even exist in the power play tables.

                    Comment


                    • #20
                      The Cayman is weird. I don't think the 3rd and 4th power states are for dual head idle like they are on the Barts, because that would mean it would idle higher than a less powerful card. I suspect it doesn't need to change away from the performance mode at all for multiple screens, and maybe the other modes are idle and mid during gaming.

                      It'd be useful to see what it does in windows in dual head mode. Something like amd overdrive will show it mode switching if you move some windows around.
                      Last edited by c0ld; 02 October 2012, 05:16 AM.

                      Comment

                      Working...
                      X