diff mbox

[alsa-devel,1/2] ALSA: hda - hdmi add wmb barrier for audio component

Message ID 1457073186-73666-1-git-send-email-libin.yang@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

libin.yang@linux.intel.com March 4, 2016, 6:33 a.m. UTC
From: Libin Yang <libin.yang@linux.intel.com>

To make sure audio_ptr is set before intel_audio_codec_enable()
or intel_audio_codec_disable() calling pin_eld_notify(),
this patch adds wmb barrier to prevent optimizing.

Signed-off-by: Libin Yang <libin.yang@linux.intel.com>
---
 sound/pci/hda/patch_hdmi.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Takashi Iwai March 4, 2016, 7:59 a.m. UTC | #1
On Fri, 04 Mar 2016 07:33:06 +0100,
libin.yang@linux.intel.com wrote:
> 
> From: Libin Yang <libin.yang@linux.intel.com>
> 
> To make sure audio_ptr is set before intel_audio_codec_enable()
> or intel_audio_codec_disable() calling pin_eld_notify(),
> this patch adds wmb barrier to prevent optimizing.
> 
> Signed-off-by: Libin Yang <libin.yang@linux.intel.com>

Thanks, applied both patches to for-linus branch, as it's a 4.4
regression.  The merge conflict was resolved in for-next branch.


Takashi

> ---
>  sound/pci/hda/patch_hdmi.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
> index aa2d6a2..b5190e0 100644
> --- a/sound/pci/hda/patch_hdmi.c
> +++ b/sound/pci/hda/patch_hdmi.c
> @@ -2939,6 +2939,11 @@ static int patch_generic_hdmi(struct hda_codec *codec)
>  	if (codec_has_acomp(codec)) {
>  		codec->depop_delay = 0;
>  		spec->i915_audio_ops.audio_ptr = codec;
> +		/* intel_audio_codec_enable() or intel_audio_codec_disable()
> +		 * will call pin_eld_notify with using audio_ptr pointer
> +		 * We need make sure audio_ptr is really setup
> +		 */
> +		wmb();
>  		spec->i915_audio_ops.pin_eld_notify = intel_pin_eld_notify;
>  		snd_hdac_i915_register_notifier(&spec->i915_audio_ops);
>  	}
> -- 
> 1.9.1
>
diff mbox

Patch

diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index aa2d6a2..b5190e0 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -2939,6 +2939,11 @@  static int patch_generic_hdmi(struct hda_codec *codec)
 	if (codec_has_acomp(codec)) {
 		codec->depop_delay = 0;
 		spec->i915_audio_ops.audio_ptr = codec;
+		/* intel_audio_codec_enable() or intel_audio_codec_disable()
+		 * will call pin_eld_notify with using audio_ptr pointer
+		 * We need make sure audio_ptr is really setup
+		 */
+		wmb();
 		spec->i915_audio_ops.pin_eld_notify = intel_pin_eld_notify;
 		snd_hdac_i915_register_notifier(&spec->i915_audio_ops);
 	}