lkml.org 
[lkml]   [2001]   [Aug]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [UPDATE] 2.4.10-pre2 PCI64, API changes README
From
   From: Gerd Knorr <kraxel@bytesex.org>
Date: 30 Aug 2001 12:34:11 GMT

These days I tried what happens if I start a PCI->PCI transfer this way:
Open the framebuffer device, mmap the framebuffer memory, then ask bttv
to blit one video frame to the framebuffer by passing the pointer of the
fb mapping to bttv's read() function.

Didn't work, looks like map_user_buf can deal with main memory only, but
not with I/O memory. It gave me NULL pointers in the iobuf page list.

Right.

Is there any way (portable) way to deal with this situation? I'd expect
I can get the physical address for the I/O memory by walking the page
tables, but then I'd have to translate that to a bus address somehow.
How PCI->PCI transfers are handled on architectures with a iommu? Do I
need a iommu entry for them?

Not currently. Note that just using that physical address you'd find
in the page tables might not even work on many platforms. And
anyways, the DMA-mapping.txt document is pretty clear that of what
types of memory can be passed in to get DMA mappings for.

You _REALLY_ need to know the PCI device in question before you can
properly and portably set up a PCI peer to peer transfer. We have no
API for this yet though.

When such an API would be created, it would take two PCI_DEV structs,
and it would possibly fail. On sparc64 for example, it is not
possible to PCI peer-to-peer DMA between two PCI devices behind
different PCI controllers, it simply doesn't work.

Later,
David S. Miller
davem@redhat.com
-
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:01    [W:0.054 / U:0.048 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site