HDA: Fix sound resume hang
PATCH 1/1 HDA: Fix sound resume hang
Resuming a switcheroo'd HDA controller hangs since the completion is one-shot (thus works the first time). Fix by using completions that explictly need rearming, so remain fired before.
Signed-off-by Daniel J Blueman <[email protected]>
--- sound/pci/hda/hda_intel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/pci/hda/hda_intel.c +2 -2
@@ -2856,7 +2856,7 @@ static int azx_free(struct azx *chip)azx_notifier_unregister (chip); chip->init_failed =1 ;/* to be sure */ -complete (&chip->probe_wait); +complete_all (&chip->probe_wait);if (use_vga_switcheroo (chip)) {if (chip->disabled && chip->bus)
@@ -3482,7 +3482,7 @@ static int __devinit azx_probe(struct pci_dev *pci,pm_runtime_put_noidle (&pci->dev); dev++; -complete (&chip->probe_wait); +complete_all (&chip->probe_wait);return 0 ; out_free:
Signature · 1 line
1.7.10.4
At Tue, 18 Dec 2012 23:59:33 +0800,
Quoted 6 lines · Daniel J Blueman
Resuming a switcheroo'd HDA controller hangs since the completion is one-shot (thus works the first time). Fix by using completions that explictly need rearming, so remain fired before.
Signed-off-by Daniel J Blueman <[email protected]>
Oops, sorry, this was a forgotten scenario.
This isn't a perfect fix but easy enough and would work practically, so I applied it now. Thanks.
Takashi
Quoted 29 lines
--- sound/pci/hda/hda_intel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)sound/pci/hda/hda_intel.c +2
-2@@ -2856,7 +2856,7 @@ static int azx_free(struct azx *chip)azx_notifier_unregister (chip); chip->init_failed =1 ;/* to be sure */ -complete (&chip->probe_wait); +complete_all (&chip->probe_wait);if (use_vga_switcheroo (chip)) {if (chip->disabled && chip->bus)@@ -3482,7 +3482,7 @@ static int __devinit azx_probe(struct pci_dev *pci,pm_runtime_put_noidle (&pci->dev); dev++; -complete (&chip->probe_wait); +complete_all (&chip->probe_wait);return 0 ; out_free:Signature · 1 line
1.7.10.4