Commit 50246dd4 authored by Linus Torvalds's avatar Linus Torvalds

Revert "PCI PM: Register power state of devices during initialization"

This reverts commit 98e6e286, as Yinghai
Lu reports that it breaks kexec with at least the e1000 and e1000e
drivers.  The reason is that the shutdown sequence puts the hardware
into D3 sleep, and the commit causes us to claim that it then is in D0
(running) state just because we don't understand the PM capabilities.

Which then later makes "pci_set_power_state()" not do anything, and the
device never wakes up properly and just returns 0xff to everything.
Reported-by: default avatarYinghai Lu <yinghai@kernel.org>
Acked-by: default avatarFrom: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Jesse Barnes <jesse.barnes@intel.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7cb36b6c
...@@ -1260,15 +1260,14 @@ void pci_pm_init(struct pci_dev *dev) ...@@ -1260,15 +1260,14 @@ void pci_pm_init(struct pci_dev *dev)
/* find PCI PM capability in list */ /* find PCI PM capability in list */
pm = pci_find_capability(dev, PCI_CAP_ID_PM); pm = pci_find_capability(dev, PCI_CAP_ID_PM);
if (!pm) if (!pm)
goto Exit; return;
/* Check device's ability to generate PME# */ /* Check device's ability to generate PME# */
pci_read_config_word(dev, pm + PCI_PM_PMC, &pmc); pci_read_config_word(dev, pm + PCI_PM_PMC, &pmc);
if ((pmc & PCI_PM_CAP_VER_MASK) > 3) { if ((pmc & PCI_PM_CAP_VER_MASK) > 3) {
dev_err(&dev->dev, "unsupported PM cap regs version (%u)\n", dev_err(&dev->dev, "unsupported PM cap regs version (%u)\n",
pmc & PCI_PM_CAP_VER_MASK); pmc & PCI_PM_CAP_VER_MASK);
goto Exit; return;
} }
dev->pm_cap = pm; dev->pm_cap = pm;
...@@ -1307,9 +1306,6 @@ void pci_pm_init(struct pci_dev *dev) ...@@ -1307,9 +1306,6 @@ void pci_pm_init(struct pci_dev *dev)
} else { } else {
dev->pme_support = 0; dev->pme_support = 0;
} }
Exit:
pci_update_current_state(dev, PCI_D0);
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment