[alsa-devel] [PATCH] ASoC: OMAP machines: Fix kernel crash due to changes in core
peter.ujfalusi at ti.com
Fri Oct 7 15:14:36 CEST 2011
On Friday 07 October 2011 12:47:49 Mark Brown wrote:
> Removing the calls is a totally sensible thing to do, like I say they
> should at best be a waste of time. The problem with your patch was that
> weren't just removing them, you were replacing them with calls to
> new_widgets() which should be equally pointless. If we have to do that
> we're clearly failing at something.
I tend to agree with all of these.
I have done some bisecting, and this is my conclusion:
We have quite many machine drivers adding their DAPM widgets/routes in their
All of these machine driver added DAPM widgets stopped working with:
ASoC: Instantiate DAPM widgets before we do the DAI link init
This patch moves the snd_soc_dapm_new_widgets() call pre dai_link->init.
Make sense for those machines which passing their DAPM widgets/routes via the
Rest of the machines were ended up their DAPM widgets being not initialized -
They had the soc_dapm_sync call which is pointless thing to call anyway. These
machines started to crash with commit:
ASoC: Ensure all DAPM widgets have a power check callback
Since the check for w->power_check has been removed from dapm_power_one_widget
What we can do:
- Add back the snd_soc_dapm_new_widgets() call post dai_link->init in the
soc_post_component_init (while keeping the pre dai_link->init call to this).
- Convert all machine drivers which uses the dai_link->init call to just add
their DAPM widgets/routes to pass it via snd_soc_card struct.
- From the remaining drivers the soc_dapm_sync need to be removed. If they do
funky stuff with their widgets we might need to add snd_soc_dapm_new_widgets()
for their init call to be sure they are not crashing.
I have converted some of the OMAP machine drivers according to point 2 after
this patch. I only changed those which seamed obvious.
This patch was mostly a search'n'replace to make sure they are no longer
More information about the Alsa-devel