Resume cause a kernel oops on a x1270 (rs690m)

Clément Calmels cboulte at
Sun May 19 06:41:00 PDT 2013


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
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
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,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dmesg.bug
Type: application/octet-stream
Size: 3749 bytes
Desc: not available
URL: <>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lspci
Type: application/octet-stream
Size: 534 bytes
Desc: not available
URL: <>

More information about the xorg-driver-ati mailing list