diff options
author | Takashi Iwai <tiwai@suse.de> | 2012-11-19 14:14:58 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-11-19 14:14:58 +0100 |
commit | 989c3187156ad197ae473fa9d9d506eef9624f12 (patch) | |
tree | 2f18bbd11a8811729e039ab1cb72cdc21f74254f /sound/pci/hda/hda_codec.h | |
parent | 0ced14fbda44bf9c4977f1b01ae1077b944b94ab (diff) |
ALSA: hda - Fix recursive suspend/resume call
When the bus reset is performed during the suspend/resume (including
the power-saving too), it calls snd_hda_suspend() and
snd_hda_resume() again, and deadlocks eventually.
For avoiding the recursive call, add a new flag indicating that the PM
is being performed, and don't go to the bus reset mode when it's on.
Reported-and-tested-by: Julian Wollrath <jwollrath@web.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_codec.h')
-rw-r--r-- | sound/pci/hda/hda_codec.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h index 507fe8a917b..4f4e545c0f4 100644 --- a/sound/pci/hda/hda_codec.h +++ b/sound/pci/hda/hda_codec.h @@ -869,6 +869,7 @@ struct hda_codec { unsigned int power_on :1; /* current (global) power-state */ unsigned int d3_stop_clk:1; /* support D3 operation without BCLK */ unsigned int pm_down_notified:1; /* PM notified to controller */ + unsigned int in_pm:1; /* suspend/resume being performed */ int power_transition; /* power-state in transition */ int power_count; /* current (global) power refcount */ struct delayed_work power_work; /* delayed task for powerdown */ |