Re: Does kmalloc always return address below 4GB?

David S. Miller
2002-03-05T11:19:06Z

From: "Adam J. Richter" <adam@yggdrasil.com>
Date: Tue, 5 Mar 2002 03:12:52 -0800

If not, then I guess I can use
pci_alloc_consistent and pci_map_single as necessary, since they
should can potentially know that I am using a device that
only understands 32-bit addresses, from my earlier call to
pci_set_dma_mask. However, I assume that it is considered
simpler and therefore better to avoid these routines when possible.

Just use pci_alloc_consistent, it never gives you
anything larger than 32-bit addresses, please read the
documentation :-)

On 64-bit platforms without CONFIG_HIGHMEM, kmalloc can return any
pointer, but that is fine since your DMA mask will instruct the
IOMMU layer of the platform to map it in the low 32-bits of DMA
address space.

If you follow DMA-mapping.txt to the letter, it will just work, trust
us. :-)