Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Jan 2008 22:54:27 +0100
From:      Marius Strobl <marius@alchemy.franken.de>
To:        Pyun YongHyeon <pyunyh@gmail.com>
Cc:        freebsd-sparc64@freebsd.org
Subject:   Re: bus_dma lowaddr problems with snd_t4dwave
Message-ID:  <20080104215427.GA42961@alchemy.franken.de>
In-Reply-To: <20071231062634.GA20276@cdnetworks.co.kr>
References:  <47786A7B.5060209@sasktel.net> <20071231062634.GA20276@cdnetworks.co.kr>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Dec 31, 2007 at 03:26:34PM +0900, Pyun YongHyeon wrote:
> On Sun, Dec 30, 2007 at 08:05:15PM -0800, Stephen Hurd wrote:
>  > After installing FreeBSD 7.0-rc1 on my Blade 100, I decided to take a 
>  > stab at getting the on board audio to work.  The bit that prevents the 
>  > driver from working is that bus_dmamap_load() fails when lowaddr is is 
>  > not somewhere over 3GB.  The Trident cards apparently require the DMA 
>  > address to be in the low 1GB.
>  > 
> 
> Yes, the hardware sucks. You'd better to use newer audio cards that
> do not have DMA address limitations(e.g. Envy24HT). Last time I
> checked snd_envy24ht(4) has bus_dma(9) issues so I'm not sure whether
> it works or not(Had no time to fix it due to other pending works).
> 
> Long time ago I also tried to make PCI t4dwave(4) work on AXe. The
> DVMA base address on AXe was beyond scope of DMA address space of
> Trident 4DWave hardware. I even tried to lower the DVMA base address
> by poking PCR_TAS. With that change DVMA base address was lowered but
> other hardwares on the box(e.g. ethernet) didn't work at all. I guess
> that comes from the region overlapping among devices and this would be
> one of reason why FreeBSD just get the DVMA base address from 
> firmware.
> 
>  > Are there no bounce pages on sparc64?
> 
> I think problem is DVMA base address. I have no idea how Sun solved
> this issue. If we can solve this issue lots of PCI audio hardwares
> would work.
> 

I think one could make them work by adding support for the IOMMU
pass-through mode, but I don't think that would be worth the
effort; as you mentioned just get a decent sound card that does
32-bit DMA, those driven by snd_es137x(4) work just fine. As for
the on-board M5451 found in some sun4u machines their DMA engine
actually does 31-bit DMA and the 31th bit can be controlled via
the PCI config space of the accompanying ISA bridge according to
Linux (actually the 31th bit is set to 1 by the firmware on the
sun4u machines I checked, that's probably why the OpenSolaris
sada driver just sets up for 32-bit DMA). Unfortunately that's
not sufficient to make snd_t4dwave(4) work with them; when trying
to play something the M5451 fires one interrupt and that's it.
Given that there are several reports of play interrupt timeouts
with M5451 on i386 I guess that's generally a bug of snd_t4dwave(4)
and not related to the DMA address limitations.

Marius




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