cma_mma
cma以及mma内存分配介绍
mstar平台为例子。
问题引入:
ssr931g在插入usb过程中会报错。
1 | cma:cma_calloc:memory range at ptrval is busy, retrying。 |
cma介绍
CMA –> 连续内存分配器。是一种用于申请大量的,并且物理上连续的内存块的方法。在设备驱动USB,HOST,DMA,ETH PHY中起关键作用。
内存分配 –> Sstar
sstar的内存分配图。如上。LX_MEM有可能有好几块,例如某些SOC上会有双通道DDR,每个DDR上面会各自分配一块LX_MEM。还有某些特别的情况,一颗DDR上面可能会分配多个LX_MEM。多个LX_MEM的命名规则为LX_MEM1、LX_MEM2,以此类推。
注意:MMA Heap以及HW IP Layout分配出来的内存在物理上是连续的,但是LX_MEM分配给linux kernel的不一定是在物理上连续的。