Thread (24 messages) flat view 24 messages, 7 authors, 2006-11-17

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

From: Christian Hoffmann <hidden>
Date: 2006-11-17 20:34:10
Also in: lkml

On Friday 17 November 2006 16:41, Stuffed Crust wrote:
On Fri, Nov 17, 2006 at 01:07:58AM -0500, Stuffed Crust wrote:
quoted
  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

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help