Skip to content

Commit

Permalink
Revert "PCI PM: Register power state of devices during initialization"
Browse files Browse the repository at this point in the history
This reverts commit 98e6e28, 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: Yinghai Lu <yinghai@kernel.org>
Acked-by: From: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Jesse Barnes <jesse.barnes@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Linus Torvalds committed Jan 16, 2009
1 parent 7cb36b6 commit 50246dd
Showing 1 changed file with 2 additions and 6 deletions.
8 changes: 2 additions & 6 deletions drivers/pci/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -1260,15 +1260,14 @@ void pci_pm_init(struct pci_dev *dev)
/* find PCI PM capability in list */
pm = pci_find_capability(dev, PCI_CAP_ID_PM);
if (!pm)
goto Exit;

return;
/* Check device's ability to generate PME# */
pci_read_config_word(dev, pm + PCI_PM_PMC, &pmc);

if ((pmc & PCI_PM_CAP_VER_MASK) > 3) {
dev_err(&dev->dev, "unsupported PM cap regs version (%u)\n",
pmc & PCI_PM_CAP_VER_MASK);
goto Exit;
return;
}

dev->pm_cap = pm;
Expand Down Expand Up @@ -1307,9 +1306,6 @@ void pci_pm_init(struct pci_dev *dev)
} else {
dev->pme_support = 0;
}

Exit:
pci_update_current_state(dev, PCI_D0);
}

/**
Expand Down

0 comments on commit 50246dd

Please sign in to comment.