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
