ALSA: hda: enable regmap internal locking
diff mbox series

Message ID 20200108180856.5194-1-kai.vehmanen@linux.intel.com
State New
Headers show
Series
  • ALSA: hda: enable regmap internal locking
Related show

Commit Message

Kai Vehmanen Jan. 8, 2020, 6:08 p.m. UTC
This reverts commit 42ec336f1f9d ("ALSA: hda: Disable regmap
internal locking").

Without regmap locking, there is a race between snd_hda_codec_amp_init()
and PM callbacks issuing regcache_sync(). This was caught by
following kernel warning trace:

<4> [358.080081] WARNING: CPU: 2 PID: 4157 at drivers/base/regmap/regcache.c:498 regcache_cache_only+0xf5/0x130
[...]
<4> [358.080148] Call Trace:
<4> [358.080158]  snd_hda_codec_amp_init+0x4e/0x100 [snd_hda_codec]
<4> [358.080169]  snd_hda_codec_amp_init_stereo+0x40/0x80 [snd_hda_codec]

Suggested-by: Takashi Iwai <tiwai@suse.de>
BugLink: https://gitlab.freedesktop.org/drm/intel/issues/592
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
---
 sound/hda/hdac_regmap.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Takashi Iwai Jan. 8, 2020, 7:12 p.m. UTC | #1
On Wed, 08 Jan 2020 19:08:56 +0100,
Kai Vehmanen wrote:
> 
> This reverts commit 42ec336f1f9d ("ALSA: hda: Disable regmap
> internal locking").
> 
> Without regmap locking, there is a race between snd_hda_codec_amp_init()
> and PM callbacks issuing regcache_sync(). This was caught by
> following kernel warning trace:
> 
> <4> [358.080081] WARNING: CPU: 2 PID: 4157 at drivers/base/regmap/regcache.c:498 regcache_cache_only+0xf5/0x130
> [...]
> <4> [358.080148] Call Trace:
> <4> [358.080158]  snd_hda_codec_amp_init+0x4e/0x100 [snd_hda_codec]
> <4> [358.080169]  snd_hda_codec_amp_init_stereo+0x40/0x80 [snd_hda_codec]
> 
> Suggested-by: Takashi Iwai <tiwai@suse.de>
> BugLink: https://gitlab.freedesktop.org/drm/intel/issues/592
> Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>

Applied now.  Thanks.


Takashi

Patch
diff mbox series

diff --git a/sound/hda/hdac_regmap.c b/sound/hda/hdac_regmap.c
index 906b1e20bae0..286361ecd640 100644
--- a/sound/hda/hdac_regmap.c
+++ b/sound/hda/hdac_regmap.c
@@ -363,7 +363,6 @@  static const struct regmap_config hda_regmap_cfg = {
 	.reg_write = hda_reg_write,
 	.use_single_read = true,
 	.use_single_write = true,
-	.disable_locking = true,
 };
 
 /**