On 3/28/07, Michael Buesch <[EMAIL PROTECTED]> wrote:

> The dma_mask must be honored for _all_ DMA mapping actions without
> exceptions. That's what that mask is for.

As far as I can see, the DMA mapping actions _do_ honor the mask. If
the memory to be mapped is outside the mask (and no IOMMU is
available), the mapping fails. We had previously not been checking for
this failure, but that is our fault and not a problem with the DMA
api.

Larry mentioned honoring the mask for DMA allocations. But the problem
is that there doesn't seem to be a way to tell the allocator, "I'll
want to use this memory for streaming DMA eventually". Indeed, an
entirely different level of the networking stack allocates the TX
buffers.

> I'll apply a patch to workaround the issue in the driver to my tree,
> but only while explicitely stating that I'd like to have a fix in
> the arch code for this. Unfortunately I can't easily do it myself, as I
> don't have a machine with this problem here.

I'd be willing to give it a shot, if we can figure out what _should_
be done. Anyone know what other devices have less than 32bit DMA
capabilities (besides b44)?

> And yes, I know that it's probably hard to fix. ;) But it should
> be possible to always honor the dma_mask. It might require some rewrite
> of the lowlevel DMA code and probably some IOMMU stuff and so on, dunno.

If AMD had put a real IOMMU (instead of an optional "use the GART"
kludge) into the x86_64 spec, things would be much easier. But if
wishes were dollars....

-- 
Will Dyson
http://www.lucidts.com/
Linux/Mac/Win consulting
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to