lkml.org 
[lkml]   [2002]   [Sep]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 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/

\
 
 \ /
  Last update: 2005-03-22 13:28    [W:0.092 / U:0.352 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site