Re: amd64 panic snd_hda - hdac_get_capabilities: Invalid corb size (0)

From: Anton Shterenlikht <mexas_at_bristol.ac.uk>
Date: Wed, 28 Jul 2010 17:01:52 +0100
On Wed, Jul 28, 2010 at 03:56:34PM +0300, Andriy Gapon wrote:
> on 27/07/2010 20:20 Anton Shterenlikht said the following:
> > yes, thanks, the panic has gone away.
> > There still seems to be a problem with this device:
> > 
> > 
> > hdac0_at_pci0:0:20:2:	class=0x040300 card=0x30c2103c chip=0x43831002 rev=0x00 hdr=0x00
> >     vendor     = 'ATI Technologies Inc. / Advanced Micro Devices, Inc.'
> >     device     = 'IXP SB600 High Definition Audio Controller'
> >     class      = multimedia
> >     subclass   = HDA
> > 
> > 
> > hdac0: <ATI SB600 High Definition Audio Controller> irq 16 at device 20.2 on pci0
> > hdac0: HDA Driver Revision: 20100226_0142
> > hdac0: [ITHREAD]
> > hdac0: hdac_get_capabilities: Invalid rirb size (0)
> > device_attach: hdac0 attach returned 6
> > 
> > 
> > I understand from the manual, there should 
> > be devices /dev/pcmX and /dev/dsp, but I have neither.
> > 
> > I'll ask in _at_questions.
> > 
> > many thanks for a quick fix!
> 
> Can you also try the following patch?
> If the patch works, could you please report back `dmesg | fgrep -i hda` output?

here it is:

% dmesg|fgrep -i hda
pci0: <multimedia, HDA> at device 20.2 (no driver attached)
pci0: <multimedia, HDA> at device 20.2 (no driver attached)
hdac0: <ATI SB600 High Definition Audio Controller> irq 16 at device 20.2 on pci0
hdac0: HDA Driver Revision: 20100226_0142
hdac0: [ITHREAD]
hdac0: hdac_get_capabilities: Invalid rirb size (0)
device_attach: hdac0 attach returned 6
hdac0: <ATI SB600 High Definition Audio Controller> irq 16 at device 20.2 on pci0
hdac0: HDA Driver Revision: 20100226_0142
hdac0: [ITHREAD]
hdac0: hdac_get_capabilities: Invalid rirb size (0)
hdac0: Resetting rirb size to 256


many thanks
anton


> 
> diff --git a/sys/dev/sound/pci/hda/hdac.c b/sys/dev/sound/pci/hda/hdac.c
> index 22ea4c8..a5556d2 100644
> --- a/sys/dev/sound/pci/hda/hdac.c
> +++ b/sys/dev/sound/pci/hda/hdac.c
> _at__at_ -1609,7 +1609,15 _at__at_ hdac_get_capabilities(struct hdac_softc *sc)
>  	else {
>  		device_printf(sc->dev, "%s: Invalid corb size (%x)\n",
>  		    __func__, corbsize);
> -		return (ENXIO);
> +		if (corbsize == 0) {
> +			device_printf(sc->dev, "Resetting corb size to 256\n");
> +			sc->corb_size = 256;
> +			corbsize =
> +			    HDAC_CORBSIZE_CORBSIZE(HDAC_CORBSIZE_CORBSIZE_256);
> +			HDAC_WRITE_1(&sc->mem, HDAC_CORBSIZE, corbsize);
> +		}
> +		else
> +			return (ENXIO);
>  	}
> 
>  	rirbsize = HDAC_READ_1(&sc->mem, HDAC_RIRBSIZE);
> _at__at_ -1625,7 +1633,15 _at__at_ hdac_get_capabilities(struct hdac_softc *sc)
>  	else {
>  		device_printf(sc->dev, "%s: Invalid rirb size (%x)\n",
>  		    __func__, rirbsize);
> -		return (ENXIO);
> +		if (rirbsize == 0) {
> +			device_printf(sc->dev, "Resetting rirb size to 256\n");
> +			sc->rirb_size = 256;
> +			rirbsize =
> +			    HDAC_RIRBSIZE_RIRBSIZE(HDAC_RIRBSIZE_RIRBSIZE_256);
> +			HDAC_WRITE_1(&sc->mem, HDAC_RIRBSIZE, rirbsize);
> +		}
> +		else
> +			return (ENXIO);
>  	}
> 
>  	HDA_BOOTVERBOSE(
> 
> -- 
> Andriy Gapon

-- 
Anton Shterenlikht
Room 2.6, Queen's Building
Mech Eng Dept
Bristol University
University Walk, Bristol BS8 1TR, UK
Tel: +44 (0)117 331 5944
Fax: +44 (0)117 929 4423
Received on Wed Jul 28 2010 - 14:01:55 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:05 UTC