aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2009-01-22 17:39:57 -0500
committerJesse Barnes <jbarnes@virtuousgeek.org>2009-01-27 12:47:10 -0500
commit476e7faefc43f106a90b5c96166c59b75de19d30 (patch)
tree8226bd551e58c4a4b1f4b23118d6cbbb18b4ea59 /drivers/pci
parent48f67f54a53bb68619a63c3f38cf7f502ed74b1d (diff)
PCI PM: Do not wait for buses in B2 or B3 during resume
pci_restore_standard_config() adds extra delay for PCI buses in low power states (B2 or B3), but this is only correct for buses in B2, because the buses in B3 are reset when they are put back into B0. Thus we should wait for such buses to settle after the reset, but it's not a good idea to wait that long (1.1 s) with interrupts off. On the other hand, we have never waited for buses in B2 and B3 during resume and it seems reasonable to go back to this well tested behaviour. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/pci.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index f0aa3d53383..48807556b47 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1403,19 +1403,19 @@ int pci_restore_standard_config(struct pci_dev *dev)
1403 if (error) 1403 if (error)
1404 return error; 1404 return error;
1405 1405
1406 if (pci_is_bridge(dev)) { 1406 /*
1407 if (prev_state > PCI_D1) 1407 * This assumes that we won't get a bus in B2 or B3 from the BIOS, but
1408 mdelay(PCI_PM_BUS_WAIT); 1408 * we've made this assumption forever and it appears to be universally
1409 } else { 1409 * satisfied.
1410 switch(prev_state) { 1410 */
1411 case PCI_D3cold: 1411 switch(prev_state) {
1412 case PCI_D3hot: 1412 case PCI_D3cold:
1413 mdelay(pci_pm_d3_delay); 1413 case PCI_D3hot:
1414 break; 1414 mdelay(pci_pm_d3_delay);
1415 case PCI_D2: 1415 break;
1416 udelay(PCI_PM_D2_DELAY); 1416 case PCI_D2:
1417 break; 1417 udelay(PCI_PM_D2_DELAY);
1418 } 1418 break;
1419 } 1419 }
1420 1420
1421 dev->current_state = PCI_D0; 1421 dev->current_state = PCI_D0;