2002-07-23 02:35:44

by Thunder from the hill

[permalink] [raw]
Subject: Another DMA question

Hi,

How can I get the _real_ address of a pci_map_single area, if needed? The
thing bus_to_virt() did, basically. My problem is that I have code which
changed the first byte of a buffer of stuff read via DMA, and I can't
because the previous user did bus_to_virt() to get a pointer into that. I
don't know how to get another pointer.

After all the confusion, is the question clear?

Regards,
Thunder
--
(Use http://www.ebb.org/ungeek if you can't decode)
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GCS/E/G/S/AT d- s++:-- a? C++$ ULAVHI++++$ P++$ L++++(+++++)$ E W-$
N--- o? K? w-- O- M V$ PS+ PE- Y- PGP+ t+ 5+ X+ R- !tv b++ DI? !D G
e++++ h* r--- y-
------END GEEK CODE BLOCK------


2002-07-23 02:41:46

by Thunder from the hill

[permalink] [raw]
Subject: Re: Another DMA question

Hi,

On Mon, 22 Jul 2002, Thunder from the hill wrote:
> After all the confusion, is the question clear?

Sorry, I mixed pci_map_single and pci_map_sg

Regards,
Thunder
--
(Use http://www.ebb.org/ungeek if you can't decode)
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GCS/E/G/S/AT d- s++:-- a? C++$ ULAVHI++++$ P++$ L++++(+++++)$ E W-$
N--- o? K? w-- O- M V$ PS+ PE- Y- PGP+ t+ 5+ X+ R- !tv b++ DI? !D G
e++++ h* r--- y-
------END GEEK CODE BLOCK------

2002-07-23 03:02:13

by David Miller

[permalink] [raw]
Subject: Re: Another DMA question

From: Thunder from the hill <[email protected]>
Date: Mon, 22 Jul 2002 20:38:51 -0600 (MDT)

How can I get the _real_ address of a pci_map_single area, if needed? The
thing bus_to_virt() did, basically. My problem is that I have code which
changed the first byte of a buffer of stuff read via DMA, and I can't
because the previous user did bus_to_virt() to get a pointer into that. I
don't know how to get another pointer.

After all the confusion, is the question clear?

You need to keep track of the back translations yourself. See how the
various net drivers do this by keeping a RX and TX ring of the SKB
buffers mapped into the various rings.