Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 32e176c1 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki Committed by Takashi Iwai
Browse files

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: default avatarRafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 061e41fd
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -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
};