提交 32e176c1 编写于 作者: R Rafael J. Wysocki 提交者: Takashi Iwai

Sound: hda - Restore PCI configuration space with interrupts off

Move the restoration of the standard PCI configuration registers
in the snd_hda_intel driver to a ->resume_early() callback executed
with interrupts disabled, since doing that with interrupts enabled
may lead to problems in some cases.

This patch addresses the regression from 2.6.26 tracked as
http://bugzilla.kernel.org/show_bug.cgi?id=12121 .
Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
上级 061e41fd
...@@ -1951,13 +1951,16 @@ static int azx_suspend(struct pci_dev *pci, pm_message_t state) ...@@ -1951,13 +1951,16 @@ static int azx_suspend(struct pci_dev *pci, pm_message_t state)
return 0; return 0;
} }
static int azx_resume_early(struct pci_dev *pci)
{
return pci_restore_state(pci);
}
static int azx_resume(struct pci_dev *pci) static int azx_resume(struct pci_dev *pci)
{ {
struct snd_card *card = pci_get_drvdata(pci); struct snd_card *card = pci_get_drvdata(pci);
struct azx *chip = card->private_data; struct azx *chip = card->private_data;
pci_set_power_state(pci, PCI_D0);
pci_restore_state(pci);
if (pci_enable_device(pci) < 0) { if (pci_enable_device(pci) < 0) {
printk(KERN_ERR "hda-intel: pci_enable_device failed, " printk(KERN_ERR "hda-intel: pci_enable_device failed, "
"disabling device\n"); "disabling device\n");
...@@ -2465,6 +2468,7 @@ static struct pci_driver driver = { ...@@ -2465,6 +2468,7 @@ static struct pci_driver driver = {
.remove = __devexit_p(azx_remove), .remove = __devexit_p(azx_remove),
#ifdef CONFIG_PM #ifdef CONFIG_PM
.suspend = azx_suspend, .suspend = azx_suspend,
.resume_early = azx_resume_early,
.resume = azx_resume, .resume = azx_resume,
#endif #endif
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册