Page 1 of 3 123 LastLast
Results 1 to 10 of 25

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

  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
    292

    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
    835

    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
    Jul 2011
    Posts
    44

    Default

    Quote Originally Posted by c0ld View Post
    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"
    Hi! I'm running Debian GNU/Linux testing+unstable on HP laptop with integrated and discrete radeons. Linux kernel 3.2.30-1 amd64 (debian stock). I'm running with low profile and discrete card switched off with vgaswitcheroo (switches after initialization).

    Here is my output:

    1. For IGP (Radeon 4200):
    [ 1.429314] [drm:radeon_pm_print_states], 6 Power State(s)
    [ 1.429316] [drm:radeon_pm_print_states], State 0: Default
    [ 1.429318] [drm:radeon_pm_print_states], Default
    [ 1.429319] [drm:radeon_pm_print_states], 1 Clock Mode(s)
    [ 1.429321] [drm:radeon_pm_print_states], 0 e: 500000
    [ 1.429323] [drm:radeon_pm_print_states], State 1: Performance
    [ 1.429325] [drm:radeon_pm_print_states], 1 Clock Mode(s)
    [ 1.429327] [drm:radeon_pm_print_states], 0 e: 200000
    [ 1.429329] [drm:radeon_pm_print_states], State 2: Battery
    [ 1.429330] [drm:radeon_pm_print_states], Single display only
    [ 1.429332] [drm:radeon_pm_print_states], 1 Clock Mode(s)
    [ 1.429334] [drm:radeon_pm_print_states], 0 e: 200000
    [ 1.429335] [drm:radeon_pm_print_states], State 3: Default
    [ 1.429337] [drm:radeon_pm_print_states], 1 Clock Mode(s)
    [ 1.429339] [drm:radeon_pm_print_states], 0 e: 500000
    [ 1.429340] [drm:radeon_pm_print_states], State 4: Battery
    [ 1.429342] [drm:radeon_pm_print_states], Single display only
    [ 1.429344] [drm:radeon_pm_print_states], 1 Clock Mode(s)
    [ 1.429345] [drm:radeon_pm_print_states], 0 e: 380000
    [ 1.429347] [drm:radeon_pm_print_states], State 5: Battery
    [ 1.429349] [drm:radeon_pm_print_states], Single display only
    [ 1.429351] [drm:radeon_pm_print_states], 1 Clock Mode(s)
    [ 1.429352] [drm:radeon_pm_print_states], 0 e: 380000
    [ 1.429361] [drm] radeon: power management initialized

    2. For discrete (Radeon 6650M):
    [ 3.746209] [drm:radeon_pm_print_states], 6 Power State(s)
    [ 3.746211] [drm:radeon_pm_print_states], State 0: Default
    [ 3.746213] [drm:radeon_pm_print_states], Default
    [ 3.746214] [drm:radeon_pm_print_states], 16 PCIE Lanes
    [ 3.746216] [drm:radeon_pm_print_states], 3 Clock Mode(s)
    [ 3.746218] [drm:radeon_pm_print_states], 0 e: 600000 m: 900000 v: 1000 No display only
    [ 3.746220] [drm:radeon_pm_print_states], 1 e: 600000 m: 900000 v: 1000
    [ 3.746222] [drm:radeon_pm_print_states], 2 e: 600000 m: 900000 v: 1000
    [ 3.746225] [drm:radeon_pm_print_states], State 1: Performance
    [ 3.746226] [drm:radeon_pm_print_states], 16 PCIE Lanes
    [ 3.746228] [drm:radeon_pm_print_states], 3 Clock Mode(s)
    [ 3.746230] [drm:radeon_pm_print_states], 0 e: 100000 m: 150000 v: 900 No display only
    [ 3.746232] [drm:radeon_pm_print_states], 1 e: 400000 m: 900000 v: 1000
    [ 3.746234] [drm:radeon_pm_print_states], 2 e: 600000 m: 900000 v: 1000
    [ 3.746236] [drm:radeon_pm_print_states], State 2: Default
    [ 3.746238] [drm:radeon_pm_print_states], 16 PCIE Lanes
    [ 3.746239] [drm:radeon_pm_print_states], 3 Clock Mode(s)
    [ 3.746241] [drm:radeon_pm_print_states], 0 e: 600000 m: 900000 v: 1000 No display only
    [ 3.746243] [drm:radeon_pm_print_states], 1 e: 600000 m: 900000 v: 1000
    [ 3.746246] [drm:radeon_pm_print_states], 2 e: 600000 m: 900000 v: 1000
    [ 3.746248] [drm:radeon_pm_print_states], State 3: Battery
    [ 3.746249] [drm:radeon_pm_print_states], 4 PCIE Lanes
    [ 3.746251] [drm:radeon_pm_print_states], 3 Clock Mode(s)
    [ 3.746252] [drm:radeon_pm_print_states], 0 e: 100000 m: 150000 v: 900 No display only
    [ 3.746255] [drm:radeon_pm_print_states], 1 e: 100000 m: 150000 v: 900
    [ 3.746257] [drm:radeon_pm_print_states], 2 e: 300000 m: 300000 v: 900
    [ 3.746259] [drm:radeon_pm_print_states], State 4: Battery
    [ 3.746260] [drm:radeon_pm_print_states], 4 PCIE Lanes
    [ 3.746262] [drm:radeon_pm_print_states], 3 Clock Mode(s)
    [ 3.746264] [drm:radeon_pm_print_states], 0 e: 600000 m: 900000 v: 1000 No display only
    [ 3.746266] [drm:radeon_pm_print_states], 1 e: 600000 m: 900000 v: 1000
    [ 3.746268] [drm:radeon_pm_print_states], 2 e: 600000 m: 900000 v: 1000
    [ 3.746270] [drm:radeon_pm_print_states], State 5: Battery
    [ 3.746272] [drm:radeon_pm_print_states], 4 PCIE Lanes
    [ 3.746273] [drm:radeon_pm_print_states], 3 Clock Mode(s)
    [ 3.746275] [drm:radeon_pm_print_states], 0 e: 300000 m: 300000 v: 900 No display only
    [ 3.746277] [drm:radeon_pm_print_states], 1 e: 300000 m: 300000 v: 900
    [ 3.746279] [drm:radeon_pm_print_states], 2 e: 300000 m: 300000 v: 900
    [ 3.747499] [drm] radeon: power management initialized

    Hope this will help.

  10. #10
    Join Date
    Jan 2009
    Posts
    1,709

    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.

Posting Permissions

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