public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Lukas Hejtmanek <xhejtman@mail.muni.cz>
To: Greg KH <gregkh@suse.de>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Linux kernel 2.6.17-git14 and PCI suspend/resume
Date: Tue, 4 Jul 2006 09:32:47 +0200	[thread overview]
Message-ID: <20060704073247.GA2790@mail.muni.cz> (raw)
In-Reply-To: <20060703232109.GA18605@suse.de>

On Mon, Jul 03, 2006 at 04:21:09PM -0700, Greg KH wrote:
> When suspending, pci_save_state() would have saved off those values (all
> 1s) which is what it is restoring.  That function gets called if there
> is no driver specific suspend function to call.  On suspend, is there
> any driver loaded for the device?

No driver is loaded.

> And what type of PCI device is this?

It does for these devices:
01:01.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b3)
01:01.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 08)
01:01.2 Class 0805: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev
17)
01:01.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter
(rev 08)
01:01.4 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 03)


> Any chance you can test -mm and see if that helps with suspend/resume?
> Linus's new suspend framework is in there, and that's the way forward
> for these kinds of issues.

I found out, that pci_save_state() reads 0xffffffff value using
pci_read_config_dword for these devices. Actually, I modified pci_save_state
like this:
int
pci_save_state(struct pci_dev *dev)
{
        int i;
        /* XXX: 100% dword access ok here? */
        printk(KERN_ERR "PM: Saving config space on device %s.\n",
                        pci_name(dev));
        mdelay(500);
        for (i = 0; i < 16; i++) {
                pci_read_config_dword(dev, i * 4,&dev->saved_config_space[i]);
                if(strcmp(pci_name(dev), "0000:01:01.4") == 0)
                        printk(KERN_ERR "PM: Saved value: %x.\n", dev->saved_config_space[i]);
        }
        if ((i = pci_save_msi_state(dev)) != 0)
                return i;
        if ((i = pci_save_msix_state(dev)) != 0)
                return i;
        return 0;
}

With this result in log:
kernel: PM: Saving config space on device 0000:01:01.4.
kernel: PM: Saved value: ffffffff.
last message repeated 15 times

So, looks like not enabled/mapped device returns 1s. 
(For none of mentioned devices is loaded driver, so they are all disabled).

So for now, I disabled to restore state of value 0xffffffff and things go OK.

-- 
Lukáš Hejtmánek

  reply	other threads:[~2006-07-04  7:32 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-03 23:11 Linux kernel 2.6.17-git14 and PCI suspend/resume Lukas Hejtmanek
2006-07-03 23:21 ` Greg KH
2006-07-04  7:32   ` Lukas Hejtmanek [this message]
2006-07-07 15:02   ` Lukas Hejtmanek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060704073247.GA2790@mail.muni.cz \
    --to=xhejtman@mail.muni.cz \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox