Hi,

I updated my laptop from Squeeze (kernel 2.6.32) to Wheezy (kernel 3.2)
and suspend/resume is broken (I also tried with a 3.8 kernel without
success). During resume I got a bug in radeon_pm_resume (kernel logs
attached).
I investigated a little bit and found that during radeon_pm_resume, the
variable rdev->pm.default_power_state_index is equal to -1 causing a bug
when trying to access
rdev->pm.power_state[rdev->pm.default_power_state_index].
This variable is set in radeon_atombios_parse_power_table_1_3.
In my case, num_modes = 3 and frev = 2.
I added printk in this code to get the clocks and got:

memoryClock | engineClock
------------+------------
0           | 10900
0           | 30800
0           | 30800

So no valid power state mode is found and at the end state_index is
still equal to 0,
rdev->pm.default_power_state_index = state_index - 1;
and default_power_state_index will be equal to -1.

IMHO, a BUG_ON(!state_index) is missing somewhere!

Having said, I am able to use a workaround for this bug: in the bios, I
am able (thanks to an alternate bios) to set the memory type clock to
SYNC or ASYNC (that let me choose between different memory clock
speeds). When set to ASYNC, the radeon_atombios_parse_power_table_1_3
correctly found the 3 modes with a memoryClock of 33300 =>
suspend/resume is ok.

Is there something I can do to help fixing this bug?

Best regards,
Clement.

Attachment: dmesg.bug
Description: Binary data

Attachment: lspci
Description: Binary data

_______________________________________________
xorg-driver-ati mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-driver-ati

Reply via email to