Re: Will __pa(vmalloc()) ever work?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 31, 2005 at 10:51:27AM -0500, Timur Tabi wrote:
> Gerd Knorr wrote:
> 
> >You should use vmalloc_to_page() (this does the page-table walking
> >with correct locking), then the usual dma mapping interface
> >(pci_map_page() or pci_map_sg()) to get bus address(es) you can pass
> >to your device for DMA.
> 
> My problem is that I don't know where the memory came from.

Can you fix that?  If so, try that.  Would be the best.

> It could have been allocated via kmalloc, or vmalloc, or
> anywhere else.  Can I call vmalloc_to_page() on memory
> allocated via kmalloc()?

I think you can't.  What is "anywhere else"?  Does that include
userspace addresses?

> If the answer is no, then how can I tell whether the memory
> was allocated via vmalloc() or some other method?

Not sure how portable that is, but comparing the vaddr against
the vmalloc address space could work.  There are macros for
that, VMALLOC_START & VMALLOC_END IIRC.

> I need a reliable virtual-to-physical (or virtual-to-bus,
> which is the same thing on x86 architectures)

Well, on !x86 architectures it isn't ...

  Gerd

-- 
-mm seems unusually stable at present.
	-- akpm about 2.6.12-rc3-mm3
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux