Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Mar 2009 23:10:57 +1100
From:      Lawrence Stewart <lstewart@room52.net>
To:        Alexander Motin <mav@freebsd.org>
Cc:        freebsd-current@freebsd.org
Subject:   Re: kernel panic with snd_hda "panic: Duplicate free of item 0xffffff00025f8c00 from zone 0xffffff00b697d400(1024)"
Message-ID:  <49CF6551.4080301@room52.net>
In-Reply-To: <49CF2B0C.7050301@FreeBSD.org>
References:  <49CF0754.9070907@room52.net> <49CF2B0C.7050301@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Alexander Motin wrote:
> Lawrence Stewart wrote:
>> I'm getting a kernel panic with the snd_hda driver on fresh 8-CURRENT 
>> amd64 (r190518). I received this panic the other day when loading the 
>> module from the command line on a slightly older kernel revision (I 
>> think it was r190437). After putting the module load into 
>> /boot/loader.conf, the problem didn't occur again and sound worked 
>> just fine on subsequent reboots.
>>
>> A few minutes ago I installed the new r190518 kernel and now it panics 
>> consistently with the same message every time. It also panics if I 
>> unload the module at the loader prompt, boot the kernel and then 
>> kldload on the command line.
>>
>> Hardware is a Toshiba Portege R600 laptop. Details below are hand 
>> transcribed as the machine doesn't have a serial port.
>>
>> Relevant bit of verbose boot message when it panics:
>>
>> hdac0: <Intel 82801I High Definition Audio Controller> at device 27.0 on
>>        pci0
>> hdac0: HDA driver revision: 20090316_0130
>> hdac0: Lazy allocation of 0x4000 bytes rid 0x10 type 3 at 0xb69a4000
>> hdac0: Reserved 0x4000 bytes for rid 0x10 type 3 at 0xb69a4000
>> hdac0: attempting to allocate 1 MSI vectors (1 supported)
>> hdac0: using IRQ 257 for MSI
>> msi: Assinging MSI IRQ 257 to local APIC 0 vector 53
>> hdac0: [MPSAFE]
>> hdac0: [ITHREAD]
>> hdac0: hdac_get_capabilities: Invalid corb size (0)
>> device_attach: hdac0 attach returned 6
>> Slab at 0xffffff00025d5b18, freei 3 = 0.
>> panic: Duplicate free of item 0xffffff00025f8c00 from zone 
>> 0xffffff00b697d400(1024)
>>
>> Any idea what the issue(s) might be?
> 
> I can't reproduce neither "Invalid corb size (0)" error, nor the crash 
> in case of it. I have tried to simulate that error, but system handled 
> it correctly. But I have INVARIANTS disabled on my system.
> 
> Can you try to disable MSI?

Setting hw.pci.enable_msix=0 and hw.pci.enable_msi=0 at the loader 
prompt made no difference.

> 
> Can you try to move hdac_irq_alloc() call after hdac_rirb_init() in 
> hdac_attach()? May be interrupt shots while something is not yet 
> initialized?
> 

Running with the following patch made no difference either.

lstewart-laptop# svn diff dev/sound/pci/hda/hdac.c
Index: dev/sound/pci/hda/hdac.c
===================================================================
--- dev/sound/pci/hda/hdac.c    (revision 190518)
+++ dev/sound/pci/hda/hdac.c    (working copy)
@@ -4145,9 +4145,6 @@
         result = hdac_mem_alloc(sc);
         if (result != 0)
                 goto hdac_attach_fail;
-       result = hdac_irq_alloc(sc);
-       if (result != 0)
-               goto hdac_attach_fail;

         /* Get Capabilities */
         result = hdac_get_capabilities(sc);
@@ -4174,6 +4171,10 @@
         hdac_corb_init(sc);
         hdac_rirb_init(sc);

+       result = hdac_irq_alloc(sc);
+       if (result != 0)
+               goto hdac_attach_fail;
+
         /* Defer remaining of initialization until interrupts are 
enabled */
         sc->intrhook.ich_func = hdac_attach2;
         sc->intrhook.ich_arg = (void *)sc;




Any other ideas I could try?

Cheers,
Lawrence



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49CF6551.4080301>