Re: [Regression, post-rc1] Multiple issues after enabling SetVoltage on rs780m

From: Alex Deucher
Date: Mon Jun 07 2010 - 11:50:28 EST


On Mon, Jun 7, 2010 at 6:15 AM, Dave Airlie <airlied@xxxxxxxxx> wrote:
> On Mon, Jun 7, 2010 at 7:29 PM, Rafael J. Wysocki <rjw@xxxxxxx> wrote:
>> Hi Alex,
>>
>> Your commit 9349d5cc920c10845693f906ebd67f394f1d0d04
>> (drm/radeon/kms/pm: enable SetVoltage on r7xx/evergreen) has caused my test-bed
>> Acer Ferrari One to behave quite unreliably.  The symptoms are:
>>
>> - the system hangs hard (~ 50% of the time) when starting Xorg
>> - the system hangs hard (~ 50% of the time) when stopping Xorg during system
>>  reboot
>> - the system sometimes hangs hard during suspend to RAM
>>
>> These problems are not reproducible with the commit above reverted.
>>
>> Below is the information about the graphics adapter from lspci.
>
> Reverting that commit on master fixes it?
>
> that commit touches code paths in rv770 and evergreen that in no way
> should affect that chipset which is an rs780, so takes the r600 paths.
>
> are you sure its not 7ac9aa5a1f1b87adb69bcbec2b89e228f074103a?

It should be that commit if it is indeed the voltage adjust. That
said, I just took a closer look at the voltage adjust on newer IGPs
and unfortunately, it doesn't work the same as the discrete cards, so
for now we should disable it. The attached patch should do the trick.
There weren't any problems on my IGP chips, but they don't have a
SetVoltage table, so nothing is touching the hw.

Alex
From 8c055a2a5c0bd063fe2bf4797c585fd1cd59a673 Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexdeucher@xxxxxxxxx>
Date: Mon, 7 Jun 2010 11:35:53 -0400
Subject: [PATCH] drm/radeon/kms/pm: Disable voltage adjust on RS780/RS880

The vddc value in the power tables is not an actual voltage
like on discrete r6xx/r7xx/evergreen systems, but instead has
a symbolic meaning (e.g., NONE, LOW, HIGH, etc.). See atombios.h

Most RS780/RS880 vbioses don't have a SetVoltage table anyway,
so it shouldn't be doing anything to the hardware at the moment.

I need to figure out how voltage is supposed to work on the newer
IGPs; until then, disable it.

Signed-off-by: Alex Deucher <alexdeucher@xxxxxxxxx>
---
drivers/gpu/drm/radeon/radeon_atombios.c | 5 +----
1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
index 0616e39..5dd86b9 100644
--- a/drivers/gpu/drm/radeon/radeon_atombios.c
+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
@@ -1841,10 +1841,7 @@ void radeon_atombios_get_power_modes(struct radeon_device *rdev)
/* skip invalid modes */
if (rdev->pm.power_state[state_index].clock_info[mode_index].sclk == 0)
continue;
- rdev->pm.power_state[state_index].clock_info[mode_index].voltage.type =
- VOLTAGE_SW;
- rdev->pm.power_state[state_index].clock_info[mode_index].voltage.voltage =
- clock_info->usVDDC;
+ /* voltage works differently on IGPs */
mode_index++;
} else if (ASIC_IS_DCE4(rdev)) {
struct _ATOM_PPLIB_EVERGREEN_CLOCK_INFO *clock_info =
--
1.7.0.1