Re: [Linux-fbdev-devel] Fwd: [Suspend-devel] resume not working on acer ferrari 4005 with radeonfb enabled

From: Christian Hoffmann
Date: Fri Nov 17 2006 - 15:34:41 EST


On Friday 17 November 2006 16:41, Stuffed Crust wrote:
> On Fri, Nov 17, 2006 at 01:07:58AM -0500, Stuffed Crust wrote:
> > http://www.shaftnet.org/users/pizza/radeonfb-atom-2.6.19-v7-WIP1.diff
>
> http://www.shaftnet.org/users/pizza/radeonfb-atom-2.6.19-v7-WIP2.diff
>
> This incorporates the latest round of BenH's fixes and changes, but
> backs out the PCI suspend changes, which need independent review and
> testing.
>
> (BenH has promised a little more work before he's ready to sign off,
> hence the -WIP2 designation)
>
> The following patch contains a rewrite of radeonfb's suspend/resume code
> to use standard PCI subsystem calls. It applies to 2.6.19-rc6 and also
> on top of the v7-WIP2 patch.
>
> http://www.shaftnet.org/users/pizza/radeonfb-atom-2.6.19-suspend.diff
>
> Christian, if you could see if the latter patch (on top of the -v6b or
> -WIP2 patches) makes a difference for your suspend/resume problems..
>
> And with these patches, I'm going to drop offline for a camping trip
> over the weekend. I'll pick this stuff back up on Monday.
>
> - Solomon

Hlo,

it still locks up.
...
pci_set_power_state(pdev, PCI_D0);
pci_restore_state(pdev);
if (pci_enable_device(pdev)) {
rc = -ENODEV;
printk(KERN_ERR "radeonfb (%s): can't enable PCI device !\n",
pci_name(pdev));
goto bail;
}
pci_set_master(pdev);
if (pdev->dev.power.power_state.event == PM_EVENT_SUSPEND) {
/* Wakeup chip. Check from config space if we were powered off
* (todo: additionally, check CLK_PIN_CNTL too)
*/
if (rinfo->pm_mode & radeon_pm_off) {
if (rinfo->reinit_func != NULL)
rinfo->reinit_func(rinfo);
else {
printk(KERN_ERR "radeonfb (%s): can't resume
radeon from"
" D3 cold, need softboot !",
pci_name(pdev));
rc = -EIO;
goto bail;
}
}
/* If we support D2, try to resume... we should check what was
our
* state though... (were we really in D2 state ?). Right now,
this code
* is only enable on Macs so it's fine.
*/
else if (rinfo->pm_mode & radeon_pm_d2)
radeon_set_suspend(rinfo, 0);

rinfo->asleep = 0;
} else
radeon_engine_idle();
goto bail;

When I comment out the rinfo->asleep = 0; line, the machine comes back. So it
seems that rinfo struct is still corrupted somehow.

Chris

Attachment: pgp00000.pgp
Description: PGP signature