On Sat, 8 Aug 2009 08:46:19 +0800 Alek Du <alek.du@xxxxxxxxx> wrote: > Here is the updated one... > > > > From 972c7f371604f837a70cc5e9948749f423cf64eb Mon Sep 17 00:00:00 2001 > From: Alek Du <alek.du@xxxxxxxxx> > Date: Wed, 5 Aug 2009 15:25:26 +0800 > Subject: [PATCH] pci: check saved state before restore > > Without the check, the config space may be filled with zeros. Though > the driver should try to avoid call restoring before saving, but the > pci layer also should check this. > > Also removed the existing check in pci_restore_standard_config. > > Signed-off-by: Alek Du <alek.du@xxxxxxxxx> > --- > drivers/pci/pci-driver.c | 2 +- > drivers/pci/pci.c | 2 ++ > 2 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c > index d76c4c8..f99bc7f 100644 > --- a/drivers/pci/pci-driver.c > +++ b/drivers/pci/pci-driver.c > @@ -508,7 +508,7 @@ static int pci_restore_standard_config(struct > pci_dev *pci_dev) return error; > } > > - return pci_dev->state_saved ? pci_restore_state(pci_dev) : 0; > + return pci_restore_state(pci_dev); > } > > static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev) > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index dbd0f94..7b70312 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -846,6 +846,8 @@ pci_restore_state(struct pci_dev *dev) > int i; > u32 val; > > + if (!dev->state_saved) > + return 0; > /* PCI Express register must be restored first */ > pci_restore_pcie_state(dev); > Applied to my linux-next tree. If you're seeing this bug though we should probably get it into 2.6.31 and possibly the stable queue. Are you? -- Jesse Barnes, Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html