[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