snd_hda works on i386, fails on amd64 (RELENG_7)

Rick C. Petty rick-freebsd2008 at kiwi-computer.com
Sat Jun 6 01:28:39 UTC 2009


On Fri, Jun 05, 2009 at 11:30:20AM +0300, Alexander Motin wrote:
> Rick C. Petty wrote:
> > 
> > usable memory = 8575410176 (8178 MB)
> > avail memory  = 8273821696 (7890 MB)
> 
> Could you try to limit amount of system RAM to less then 3.5GB? Hardware
> or driver may have issues with support of more then 32bit addresses. I

That defeats the whole point of using amd64 and was the reason I left i386.
Or did you want me to try this as just a diagnostic step?

> have successfully used driver on system with 4GB RAM, so I think that it
> may be a hardware issue.
> 
> Also you may try to change
> 	sc->support_64bit = HDA_FLAG_MATCH(gcap, HDAC_GCAP_64OK);
> line to
> 	sc->support_64bit = 0;
> , to strictly limit driver to 32bit addresses ignoring hardware
> capabilities.

I did this to sys/dev/sound/pci/hda/hdac.c and it didn't help.  I added a
printf immediately afterward so I was sure I was loading the right module.
I'll append the dmesg output below.  I'm willing to try other kernel
changes but I understand little of how the (relatively) new HDA subsystem
works.

-- Rick C. Petty


hdac0: <NVidia MCP78 High Definition Audio Controller> mem 0xfe978000-0xfe97bfff irq 22 at device 7.0 on pci0
hdac0: HDA Driver Revision: 20090329_0131
hdac0: DMA Coherency: Uncacheable / vendor=0x10de
hdac0: [ITHREAD]
*** RCP: disabled 64-bit support in hdac ***
hdac0:     CORB size: 256
hdac0:     RIRB size: 256
hdac0:       Streams: ISS=4 OSS=4 BSS=0
hdac0: hdac_dma_alloc: size=1024 -> roundsz=1024
hdac0: hdac_dma_alloc: size=2048 -> roundsz=2048
hdac0: Reset controller...
hdac0: HDA Config: on=0x00000000 off=0x00000000
hdac0: Starting CORB Engine...
hdac0: Starting RIRB Engine...
hdac0: Enabling controller interrupt...
hdac0: Scanning HDA codecs ...
hdac0: Probing codec #0...
hdac0: hdac_command_send_internal: TIMEOUT numcmd=1, sent=1, received=0
hdac0: hdac_command_send_internal: TIMEOUT numcmd=1, sent=1, received=0
hdac0: Codec #0 is not responding! Probing aborted.
hdac0: Probing codec #3...
hdac0: hdac_command_send_internal: TIMEOUT numcmd=1, sent=1, received=0
hdac0: hdac_command_send_internal: TIMEOUT numcmd=1, sent=1, received=0
hdac0: Codec #3 is not responding! Probing aborted.
hdac0: 


More information about the freebsd-multimedia mailing list