Page 1 of 2 12 LastLast
Results 1 to 10 of 25

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

Hybrid View

  1. #1
    Join Date
    Mar 2012
    Posts
    12

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

    After googling and searching various forums for help didn't solve my problem, I now post here:

    I'm running Kubuntu 12.04.01, Kernel 3.2, and using a Radeon 6970 (Cayman chip). Using two monitors side by side. The open source driver that comes with Ubuntu 12.04.01 is used. No xorg.conf exists.

    I tried to set power save as per: http://askubuntu.com/questions/16207...aining-it-afte via:

    Code:
    echo profile > /sys/class/drm/card0/device/power_method
    echo low > /sys/class/drm/card0/device/power_profile
    However
    Code:
    cat /sys/kernel/debug/dri/0/radeon_pm_info
    shows no change wether I set low, mid, high or auto profile. Using dynpm as power_method has no effect either.

    Any ideas what might cause this and how to proceed?

    Thanks and best regards
    Drake

  2. #2
    Join Date
    Sep 2012
    Posts
    9

    Default

    It's a bug I've been looking at lately: https://bugs.freedesktop.org/show_bug.cgi?id=49981

    It's because the card use different power states depending on whether it's running one or two heads. The problem seems to be that for HD6000s there doesn't appear to be a second 'performance' power state in the atombios, or if there is, it doesn't allow the clock to be altered. If you grab the kernel source and alter the numbers I mention in the last post it will fix it, but all it's really doing is using the same low power mode as single-head configuration uses. The source file you want is drivers/gpu/drm/radeon/r600.c, line 510.
    Code:
    if (rdev->flags & RADEON_IS_MOBILITY)
    	idx = radeon_pm_get_type_index(rdev, POWER_STATE_TYPE_BATTERY, 1); // change to 0
    else
    	idx = radeon_pm_get_type_index(rdev, POWER_STATE_TYPE_PERFORMANCE, 1); // change to 0
    Can't really do much about the bug without knowing what power states the HD6000 series supports, and whether they are different from all the other families that use the r600 profile settings.

  3. #3
    Join Date
    Aug 2012
    Posts
    315

    Default

    Power-management is broken by design for the radeon driver and this is a explicit management decision say "hello" to "Bridgman".
    maybe ask the new guy "twriter" (tim writer)

    But I think he is not allowed to chance anything because he is forced to act inside of the corporatism logic and this drains the support money inside of the market-share to a useless and pointless contribution.

    But maybe Bridgman is innocent and he only act like this because the consumers force them (amd) to act like this.

    The best you can do is sell your AMD hardware on ebay and buy Loongson,ARM and Intel hardware.

    And don't even try to argue with these people because : resistance against corporatism is futile


  4. #4
    Join Date
    Sep 2012
    Posts
    9

  5. #5
    Join Date
    Jul 2008
    Location
    Berlin, Germany
    Posts
    857

    Default

    Power management does not work so well with multiple monitors attached. Try booting with only one monitor attached, and see if that allows you to change the power profile. Also, use a more recent kernel if you can.

  6. #6
    Join Date
    Mar 2012
    Posts
    12

    Default

    Quote Originally Posted by chithanh View Post
    Power management does not work so well with multiple monitors attached. Try booting with only one monitor attached, and see if that allows you to change the power profile.
    I can confirm that the problem is related to the dualhead setup. Disabling the second monitor via
    Code:
    xrandr
    alows to the card to use low power profile imeadiately, no reboot required. Temperature difference is 10C. Upon reenabling the second monitor the low power state does however not presist, but the card siwtches to high again.

    Thanks for your pointers. Now I'm goingt to search for the easiest way around, maintaining my own kernel is more work than I would like ... Maybe the new kernel from Ubuntu 12.10 (linux-3.5.3) solves the problem?

  7. #7
    Join Date
    Sep 2012
    Posts
    9

    Default

    Quote Originally Posted by Ares Drake View Post
    Maybe the new kernel from Ubuntu 12.10 (linux-3.5.3) solves the problem?
    Nope, the bad PM code is still in the latest kernel source. Doesn't seem as if anyone wants to touch it. I could submit a patch, but the r600 profile affects so many cards, I wouldn't know if I was breaking the power profiles for all the others or not.

  8. #8
    Join Date
    Sep 2012
    Posts
    9

    Default

    Any chance anyone with an hd6k can add drm.debug=2 to the kernel options and print the output of
    dmesg | grep "radeon_pm_print_states"

    For me it results in:
    Code:
    [    7.946934] [drm:radeon_pm_print_states], State 0: Default
    [    7.946935] [drm:radeon_pm_print_states],    Default
    [    7.946936] [drm:radeon_pm_print_states], 
    [    7.946938] [drm:radeon_pm_print_states],    3 Clock Mode(s)
    [    7.946939] [drm:radeon_pm_print_states],            0 e: 900000     m: 1050000      v: 1175 No display only
    [    7.946940] [drm:radeon_pm_print_states],            1 e: 900000     m: 1050000      v: 1175
    [    7.946942] [drm:radeon_pm_print_states],            2 e: 900000     m: 1050000      v: 1175
    [    7.946943] [drm:radeon_pm_print_states], State 1: Performance
    [    7.946944] [drm:radeon_pm_print_states],    16 PCIE Lanes
    [    7.946945] [drm:radeon_pm_print_states],    3 Clock Mode(s)
    [    7.946946] [drm:radeon_pm_print_states],            0 e: 100000     m: 150000       v: 950  No display only
    [    7.946947] [drm:radeon_pm_print_states],            1 e: 775000     m: 1050000      v: 1100
    [    7.946948] [drm:radeon_pm_print_states],            2 e: 900000     m: 1050000      v: 1175
    [    7.946950] [drm:radeon_pm_print_states], State 2: Default
    [    7.946950] [drm:radeon_pm_print_states],    16 PCIE Lanes
    [    7.946951] [drm:radeon_pm_print_states],    3 Clock Mode(s)
    [    7.946952] [drm:radeon_pm_print_states],            0 e: 300000     m: 1050000      v: 950  No display only
    [    7.946953] [drm:radeon_pm_print_states],            1 e: 300000     m: 1050000      v: 950
    [    7.946955] [drm:radeon_pm_print_states],            2 e: 900000     m: 1050000      v: 1175
    [    7.946956] [drm:radeon_pm_print_states], State 3: Default
    [    7.946957] [drm:radeon_pm_print_states],    16 PCIE Lanes
    [    7.946958] [drm:radeon_pm_print_states],    3 Clock Mode(s)
    [    7.946959] [drm:radeon_pm_print_states],            0 e: 600000     m: 1050000      v: 1000 No display only
    [    7.946960] [drm:radeon_pm_print_states],            1 e: 600000     m: 1050000      v: 1000
    [    7.946961] [drm:radeon_pm_print_states],            2 e: 900000     m: 1050000      v: 1175
    So there is only one performance state, on my card at least, but it seems weird that there are 3 default states. That suggests there is something wrong in atombios I think. It would appear that the first default state is being used after failing to find the 2nd performance state. Even with the performance mode being used for single head mode, I don't think it should be using the first clock mode as that seems reserved for when dpms is off. If anything I think it should be using the second default with the clock at 300k.

  9. #9
    Join Date
    Jan 2009
    Posts
    1,762

    Default

    Quote Originally Posted by necro-lover View Post
    The best you can do is sell your AMD hardware on ebay and buy Loongson,ARM and Intel hardware.
    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.

  10. #10
    Join Date
    Oct 2012
    Posts
    1

    Default 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 #

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •