All of lore.kernel.org
 help / color / mirror / Atom feed
* How to get the physical page addresses from a kernel virtual address for DMA SG List?
@ 2005-08-04 12:41 Clemens Koller
  2005-08-04 13:09 ` linux-os (Dick Johnson)
  0 siblings, 1 reply; 9+ messages in thread
From: Clemens Koller @ 2005-08-04 12:41 UTC (permalink / raw)
  To: LKML List

Hello!

This might be an FAQ - I've got several ideas from googling
around for days and reading 'Linux Device Drivers' or
'Understanding The Linux Kernel' which are both really good
books. However I am not really sure of how to do it on the latest
linux-2.6.

I am currently working on a dma driver for a ppc32 system.
The idea is that a userspace app allocates a big contigous
chunk of memory (i.e. 400MBytes, user virtual mem) and tells
my dma's char driver via ioctl the pointer to that memory.

In the driver I can now use that (void __user *) casted address
as a kernel virtual address, right? It's contigous there and I can
do a memcpy() to get data to userspace simliar to a copy_to_user().
fine!

But I want to setup a scatter/gather DMA list and blow my data
directly into the applications physical pages.

What's the best way to setup the dma_sg_list?
I have checked several things to get the pages and physical addresses
but with no real success now:
get_user_page()
vmalloc_to_page()
kvirt_to_bus() (deprecated?)
virt_to_phys()
virt_to_bus()

Or do I need to remap the whole thing before I can get all the pages and
physical addresses?
remap_page_range()
remap_pfn_range()
map_user_kiobuf()
unmap_kiobuf()

Or do I need the direct-io stuff or the block-io?
How do I need to alloc the mem in my app? (get_pages()?)
How do I need to lock the memory to make sure it's in phys memory? (mlockall()?)
Can somebody please put some light on what's _the_ way to do that on the
latest 2.6 kernels? I am pretty much confused which functions are current
and okay to use to solve my problem.
Pointers to some code is also very welcome. But it should be _current_.
I've spent already a lot of time reading outdated things. :-(

Best regards,

Clemens Koller
_______________________________
R&D Imaging Devices
Anagramm GmbH
Rupert-Mayer-Str. 45/1
81379 Muenchen
Germany

http://www.anagramm.de
Phone: +49-89-741518-50
Fax: +49-89-741518-19

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2005-08-05  0:12 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-08-04 12:41 How to get the physical page addresses from a kernel virtual address for DMA SG List? Clemens Koller
2005-08-04 13:09 ` linux-os (Dick Johnson)
2005-08-04 13:39   ` Clemens Koller
2005-08-04 13:57     ` Steven Rostedt
2005-08-04 14:56       ` How to get the physical page addresses from a kernel virtualaddress " linux-os (Dick Johnson)
2005-08-04 17:01         ` Steven Rostedt
2005-08-04 18:09           ` Clemens Koller
2005-08-05  0:11       ` How to get the physical page addresses from a kernel virtual address " Peter Chubb
2005-08-04 14:10     ` Arjan van de Ven

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.