Messages in this thread |  | | Date | Fri, 13 Sep 2002 16:21:50 -0400 | From | Adam Kropelin <> | Subject | Re: Streaming DMA mapping question |
| |
On Fri, Sep 13, 2002 at 12:36:41PM -0700, David S. Miller wrote: > From: Adam Kropelin <akropel1@rochester.rr.com> > Date: Fri, 13 Sep 2002 15:39:16 -0400 > > According to the docs, you should either unmap or sync your DMA buffer before > touching it from the host. The i386 implementation of pci_unmap is empty --no > problem; there must not be any unmap work to do on this arch. But the > implementation of pci_dma_sync does contain a flush_write_buffers() call. This > makes me think that perhaps if I'm going to modify the buffer before I submit it > back to the controller I need to do: > > Actually, rather it appears that the i386 pci_unmap_*() routines need > the write buffer flush as well.
Ah, a bug then.
> The x86 implementation is a bad example to read if you're trying to > see what the worst case scenerio is.
I was looking at the x86 implementation to help me narrow down the possible source of a bug I'm seeing in the driver. I noticed the driver was examining a DMA buffer without unmapping or syncing. Before I went to the work to fix the code I wanted to see if those operations were no-ops on the platform I'm testing on. I'll definitely fix the driver regardless, but I didn't want to blame the lockup on it if unmapping won't actually change anything on this platform. Thus my confusion upon seeing pci_unmap_*() and pci_dma_sync_*() differ.
> Just follow the document and your driver will work properly on all > platforms. DMA-mapping.txt was meant to be written in a way such > that you should not ever need to look at an implementation of the > interfaces to figure out how to use them.
Absolutely. It does that job very well and I am greatly appreciative for the code groveling time that document has saved me. Kudos to you and others who spent time writing it.
--Adam
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |