[PATCH v2] ALSA: hda/hdmi: fix race in handling acomp ELD notification at resume
Takashi Iwai
tiwai at suse.de
Fri Apr 16 16:03:40 CEST 2021
On Fri, 16 Apr 2021 15:11:57 +0200,
Kai Vehmanen wrote:
>
> When snd-hda-codec-hdmi is used with ASoC HDA controller like SOF (acomp
> used for ELD notifications), display connection change done during suspend,
> can be lost due to following sequence of events:
>
> 1. system in S3 suspend
> 2. DP/HDMI receiver connected
> 3. system resumed
> 4. HDA controller resumed, but card->deferred_resume_work not complete
> 5. acomp eld_notify callback
> 6. eld_notify ignored as power state is not CTL_POWER_D0
> 7. HDA resume deferred work completed, power state set to CTL_POWER_D0
>
> This results in losing the notification, and the jack state reported to
> user-space is not correct.
>
> The check on step 6 was added in commit 8ae743e82f0b ("ALSA: hda - Skip
> ELD notification during system suspend"). It would seem with the deferred
> resume logic in ASoC core, this check is not safe.
>
> Fix the issue by modifying the check to use "dev.power.power_state.event"
> instead of ALSA specific card power state variable.
>
> BugLink: https://github.com/thesofproject/linux/issues/2825
> Suggested-by: Takashi Iwai <tiwai at suse.de>
> Signed-off-by: Kai Vehmanen <kai.vehmanen at linux.intel.com>
Thanks, applied now.
Takashi
More information about the Alsa-devel
mailing list