]> git.baikalelectronics.ru Git - kernel.git/commit
ASoC: SOF: core: release resources on errors in probe_continue
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Fri, 24 Jan 2020 21:36:21 +0000 (15:36 -0600)
committerMark Brown <broonie@kernel.org>
Mon, 27 Jan 2020 17:51:59 +0000 (17:51 +0000)
commitddc05aca77b39bd07a41d2b11b27d4677e7c05c0
tree4ef9a8e9a8acb285a8e46488fc929ea60a71a607
parent762ddb1337f39de337fc863d148c8eec38feac0b
ASoC: SOF: core: release resources on errors in probe_continue

The initial intent of releasing resources in the .remove does not work
well with HDaudio codecs. If the probe_continue() fails in a work
queue, e.g. due to missing firmware or authentication issues, we don't
release any resources, and as a result the kernel oopses during
suspend operations.

The suggested fix is to release all resources during errors in
probe_continue(), and use fw_state to track resource allocation
state, so that .remove does not attempt to release the same
hardware resources twice. PM operations are also modified so that
no action is done if DSP resources have been freed due to
an error at probe.

Reported-by: Takashi Iwai <tiwai@suse.de>
Co-developed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Bugzilla:  http://bugzilla.suse.com/show_bug.cgi?id=1161246
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20200124213625.30186-4-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org
sound/soc/sof/core.c
sound/soc/sof/pm.c