diff mbox

New dapm panic on beaver with next-20130730

Message ID 51F8B045.8030303@metafoo.de (mailing list archive)
State New, archived
Headers show

Commit Message

Lars-Peter Clausen July 31, 2013, 6:35 a.m. UTC
On 07/31/2013 08:13 AM, Olof Johansson wrote:
> On Tue, Jul 30, 2013 at 11:05 PM, Lars-Peter Clausen <lars@metafoo.de> wrote:
>> On 07/31/2013 07:36 AM, Olof Johansson wrote:
>>>
>>> Hi Mark, Lars-Peter,
>>>
>>> I noticed the below panic on beaver (Tegra30). Seems like seaboard
>>> (Tegra20) is fine. This is with next-20130730, tegra_defconfig.
>>
>>
>> Hi,
>>
>> So the same machine driver with the same codec works on tegra2, but not on
>> tegra3? The crash doesn't seem to be directly related to the patch, but the
>> patch changed the memory layout. Is it possible that you still have a
>> outdated module that's being loaded on your tegra3 board?
>
> Sorry, I should have been cleared on that. Not at all the same codec,
> seaboard uses wm8903, beaver rt5640.
>
>> Can you add a few debugging printks and run the test again and paste the
>> last few lines before the crash:
>
> [beaver          00:18] [    4.045897] dapm_generic_check_power: IF2 ADC L
> [beaver          00:18] [    4.050417] dapm_clear_walk_output 1: ee3a7bc0
> [beaver          00:18] [    4.054845] dapm_generic_check_power: IF2 DAC
> [beaver          00:18] [    4.059193] dapm_clear_walk_output 1: ee3a8240
> [beaver          00:18] [    4.063621] dapm_clear_walk_output 1: ee3a8280
> [beaver          00:18] [    4.068048] dapm_generic_check_power: IF1 ADC R
> [beaver          00:18] [    4.072661] dapm_clear_walk_output 1: ee3a7c40
> [beaver          00:18] [    4.077091] dapm_generic_check_power: IF1 ADC L
> [beaver          00:18] [    4.081616] dapm_clear_walk_output 1: ee3a7c80
> [beaver          00:18] [    4.086045] dapm_generic_check_power: IF1 DAC
> [beaver          00:18] [    4.090394] dapm_clear_walk_output 1: ee3a82c0
> [beaver          00:18] [    4.094821] dapm_clear_walk_output 1: ee3a8300
> [beaver          00:18] [    4.099256] dapm_generic_check_power: INR Mux
> [beaver          00:18] [    4.103599] dapm_clear_walk_output 1: ee3af670
> [beaver          00:18] [    4.108026] dapm_generic_check_power: INL Mux
> [beaver          00:18] [    4.112375] dapm_clear_walk_output 1: ee3af5f0
> [beaver          00:18] [    4.116802] dapm_clear_walk_output 2: 6b6b6b6b

0x6b6b6b6b is poisoned freed memory. According to the source neither the INR 
Mux nor the INL Mux widget should have any sinks. Can you add a couple more 
printks:

Comments

Mark Brown July 31, 2013, 10:36 a.m. UTC | #1
On Wed, Jul 31, 2013 at 08:35:49AM +0200, Lars-Peter Clausen wrote:

> 0x6b6b6b6b is poisoned freed memory. According to the source neither
> the INR Mux nor the INL Mux widget should have any sinks. Can you
> add a couple more printks:

Dan Carpenter sent a patch which is probably the issue - I'm trying to
figure out how to boot my Beaver board so hopefully I can test, it'll be
in -next tomorrow anyway.
Stephen Warren July 31, 2013, 7:09 p.m. UTC | #2
On 07/31/2013 04:36 AM, Mark Brown wrote:
> On Wed, Jul 31, 2013 at 08:35:49AM +0200, Lars-Peter Clausen
> wrote:
> 
>> 0x6b6b6b6b is poisoned freed memory. According to the source
>> neither the INR Mux nor the INL Mux widget should have any sinks.
>> Can you add a couple more printks:
> 
> Dan Carpenter sent a patch which is probably the issue - I'm trying
> to figure out how to boot my Beaver board so hopefully I can test,
> it'll be in -next tomorrow anyway.

I assume that is "[patch] ASoC: dapm: using freed pointer in
dapm_kcontrol_add_widget()". That doesn't fix the issue. Do you need
me to debug any further?
diff mbox

Patch

diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index b779d36..1a82e75 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -774,8 +774,13 @@ 
  	struct snd_soc_dapm_path *p;

  	list_for_each_entry(p, sink, list_source) {
+		printk("dapm_clear_walk_output 1: %p\n", p);
  		if (p->walked) {
  			p->walked = 0;
+			printk("dapm_clear_walk_output 1: %p\n", p->source);
+			printk("dapm_clear_walk_output 2: %p\n", p->sink);
+			printk("dapm_clear_walk_output 3: %s\n",
+				p->sink->name);
  			dapm_clear_walk_output(dapm, &p->sink->sinks);
  		}
  	}
@@ -1189,6 +1194,8 @@ 
  	DAPM_UPDATE_STAT(w, power_checks);

+	printk("dapm_generic_check_power: %p %s\n", w, w->name);
+
  	in = is_connected_input_ep(w, NULL);
  	dapm_clear_walk_input(w->dapm, &w->sources);
  	out = is_connected_output_ep(w, NULL);