Skip to content

Commit

Permalink
FROMGIT: ASoC: SOF: pcm: remove warning - initialize workqueue on open
Browse files Browse the repository at this point in the history
If the SOF hw_params() fail, typically with an IPC error thrown by the
firmware, the period_elapsed workqueue is not initialized, but we
still cancel it in hw_free(), which results in a kernel warning.

Move the initialization to the .open callback. Tested on Broadwell
(Samus) and IceLake.

Fixes: e2803e6 ("ASoC: SOF: PCM: add period_elapsed work to fix
race condition in interrupt context")

GitHub issue: thesofproject#932
Reviewed-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit fab4edf
 git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next)

BUG=b:134688240
TEST=Test Audio use cases for CML with full SOF patch series applied.

Change-Id: I3767f778d7b1accaafc517045970f83a810efc42
Signed-off-by: Ap, Kamal <kamal.ap@intel.corp-partner.google.com>
  • Loading branch information
plbossart authored and bzhg committed Jun 14, 2019
1 parent 58171ee commit 8faf0de
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions sound/soc/sof/pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,9 +211,6 @@ static int sof_pcm_hw_params(struct snd_pcm_substream *substream,
/* save pcm hw_params */
memcpy(&spcm->params[substream->stream], params, sizeof(*params));

INIT_WORK(&spcm->stream[substream->stream].period_elapsed_work,
sof_pcm_period_elapsed_work);

/* clear hw_params_upon_resume flag */
spcm->hw_params_upon_resume[substream->stream] = 0;

Expand Down Expand Up @@ -431,6 +428,9 @@ static int sof_pcm_open(struct snd_pcm_substream *substream)
dev_dbg(sdev->dev, "pcm: open stream %d dir %d\n", spcm->pcm.pcm_id,
substream->stream);

INIT_WORK(&spcm->stream[substream->stream].period_elapsed_work,
sof_pcm_period_elapsed_work);

caps = &spcm->pcm.caps[substream->stream];

/* set any runtime constraints based on topology */
Expand Down

0 comments on commit 8faf0de

Please sign in to comment.