Allocating memory aligned on 1M boundary?

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: david.hagood
Date: Wednesday, August 25, 2010 - 11:35 am

Is there a way to allocate a block of memory that is
a) contiguous in physical layout
b) large (ca. 1M or so)
c) aligned on a large boundary (e.g. 1M boundary) in physical address

I have a hardware device (specifically, the PCIe controller of a Freescale
8641D PPC microprocessor) that requires a large amount of RAM to operate,
and requires that RAM to be aligned on the size of the element (that is,
if you use a 1M buffer, then the starting address of that RAM must be
0x???00000 so that the address translation unit can map from the PCIe
address to the local address).

Hugepages might work, but I see no guarantee that the alignment would be met.

Yes, I could allocate 2x the desired size, then use that part of what I
allocate that is correctly aligned, but then I am guaranteed to waste half
of what I allocate.

I'd rather NOT use the boottime allocation tricks if possible.

Scatter/Gather is not supported by the hardware, so that is out.

Any good suggestions?


--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Allocating memory aligned on 1M boundary?, david.hagood, (Wed Aug 25, 11:35 am)
Re: Allocating memory aligned on 1M boundary?, Timur Tabi, (Wed Aug 25, 12:34 pm)