[RFC] genalloc != generic DEVICE memory allocator

Andrey Volkov avolkov at varma-el.com
Fri Dec 23 00:48:18 EST 2005


Hi Pantelis,

Pantelis Antoniou wrote:
> Andrey Volkov wrote:
> 
>> Hello Jes and all
>>
>> I try to use your allocator (gen_pool_xxx), idea of which
>> is a cute nice thing. But current implementation of it is
>> inappropriate for a _device_ (aka onchip, like framebuffer) memory
>> allocation, by next reasons:
>>
>>  1) Device memory is expensive resource by access time and/or size cost.
>>     So we couldn't use (usually) this memory for the free blocks lists.
>>  2) Device memory usually have special requirement of access to it
>>     (alignment/special insn). So we couldn't use part of allocated
>>     blocks for some control structures (this problem solved in your
>>     implementation, it's common remark)
>>  3) Obvious (IMHO) workflow of mem. allocator look like:
>>      - at startup time, driver allocate some big
>>       (almost) static mem. chunk(s) for a control/data structures.
>>         - during work of the device, driver allocate many small
>>       mem. blocks with almost identical size.
>>     such behavior lead to degeneration of buddy method and
>>     transform it to the first/best fit method (with long seek
>>     by the free node list).
>>  4) The simple binary buddy method is far away from perfect for a device
>>     due to a big internal fragmentation. Especially for a
>>     network/mfd devices, for which, size of allocated data very
>>     often is not a power of 2.
>>
>> I start to modify your code to satisfy above demands,
>> but firstly I wish to know your, or somebody else, opinion.
>>
>> Especially I will very happy if somebody have and could
>> provide to all, some device specific memory usage statistics.
>>
> 
> Hi Andrey,
> 
> FYI, on arch/ppc/lib/rheap.c theres an implementation of a remote heap.
> 
> It is currently used for the management of freescale's CPM1 & CPM2 internal
> dual port RAM.
> 
> Take a look, it might be what you have in mind.
> 
> Regards
> 
> Pantelis

Thanks I missed it (and small wonder! :( ).

Andrew, Is somebody count HOW MANY dev specific implementation
of buddy/first-fit allocators now in kernel?

-- 
Regards
Andrey Volkov



More information about the Linuxppc-embedded mailing list