Re: malloc() size in CMA region seems to be aligned to CMA_ALIGNMENT

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

 



2016-05-18 16:48 GMT+08:00 Michal Hocko <mhocko@xxxxxxxxxx>:
> [CC linux-mm and some usual suspects]
>
> On Tue 17-05-16 23:37:55, lunar12 lunartwix wrote:
>> A 4MB dma_alloc_coherent  in kernel after malloc(2*1024) 40 times in
>> CMA region by user space will cause an error on our ARM 3.18 kernel
>> platform with a 32MB CMA.
>>
>> It seems that the malloc in CMA region will be aligned to
>> CMA_ALIGNMENT everytime even if the requested malloc size is very
>> small so the CMA region is not available after the malloc operations.
>>
>> Is there any configuraiton that can change this behavior??
>>
>> Thanks
>>
>> Cheers
>> Ken
>
> --
> Michal Hocko
> SUSE Labs

Update more information and any comment would be very appreciated

CMA region (from boot message):
Reserved memory: created CMA memory pool at 0x22e00000, size 80 MiB

User space test program:

    do
    {

        addr = malloc(2*1024);
        memset((void *)addr,2*1024,0x5A);
        vaddr=(unsigned int)addr;

        //get_user_page & page_to_phys in kernel
        ioctl(devfd, IOCTL_MSYS_USER_TO_PHYSICAL, &addr)

        count++;
        paddr=(unsigned int)addr;

        if(paddr>0x22E00000)
        {
            printf("USR:0x%08X 0x%08X %d\n",vaddr,paddr,count);
        }
    } while(addr!=NULL);


System print out:

USR:0x0164B248 0x27C00000 11337
USR:0x0164BA50 0x27C00000 11338
USR:0x0164C258 0x27800000 11339
USR:0x0164CA60 0x27800000 11340
USR:0x0164D268 0x27600000 11341
USR:0x0164DA70 0x27600000 11342
USR:0x0164E278 0x27400000 11343
USR:0x0164EA80 0x27400000 11344
USR:0x0164F288 0x27200000 11345
USR:0x0164FA90 0x27200000 11346
....
It seems that an 2MB CMA would be occpuied every 2 malloc()

Cheers
Ken

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]