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: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
061e41fdb5
commit
32e176c14d
|
@ -1951,13 +1951,16 @@ static int azx_suspend(struct pci_dev *pci, pm_message_t state)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int azx_resume_early(struct pci_dev *pci)
|
||||
{
|
||||
return pci_restore_state(pci);
|
||||
}
|
||||
|
||||
static int azx_resume(struct pci_dev *pci)
|
||||
{
|
||||
struct snd_card *card = pci_get_drvdata(pci);
|
||||
struct azx *chip = card->private_data;
|
||||
|
||||
pci_set_power_state(pci, PCI_D0);
|
||||
pci_restore_state(pci);
|
||||
if (pci_enable_device(pci) < 0) {
|
||||
printk(KERN_ERR "hda-intel: pci_enable_device failed, "
|
||||
"disabling device\n");
|
||||
|
@ -2465,6 +2468,7 @@ static struct pci_driver driver = {
|
|||
.remove = __devexit_p(azx_remove),
|
||||
#ifdef CONFIG_PM
|
||||
.suspend = azx_suspend,
|
||||
.resume_early = azx_resume_early,
|
||||
.resume = azx_resume,
|
||||
#endif
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue