【发布时间】:2023-01-03 18:14:52
【问题描述】:
我想在 linux (5.15.68) 中测试 cma-allocator。
所以我像这样在 /reserved-memory 节点中添加了 linux,cma 节点。
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
axpu_reserved_mem: axpursvd@90000000 {
no-map;
reg = <0x0 0xc0000000 0x0 0x8000000>;
};
linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0 0x30000000>;
alloc-ranges = <0 0x90000000 0 0x30000000>;
linux,cma-default;
};
};
顺便说一句,这个测试是在 qemu arm64 机器上完成的,虚拟机中只有 1GB ram(从 0x80000000 ~ 0xbfffffff),注意我将 3/4 的 ram 分配给 cma 区域,1/8 分配给设备驱动程序(仅供测试)。
当我启动机器时,我在启动过程中看到这条消息。
Memory: 1020140K/1048576K available (3200K kernel code, 386K rwdata, 808K rodata, 7808K init, 106K bss, 28436K reserved, 0K cma-reserved)
为什么CMA-reserved area是0KB?
这是我为 CMA 测试添加的一些配置变量。
CONFIG_MEMORY_ISOLATION=y
CONFIG_CONTIG_ALLOC=y
ONFIG_CMA=y
CONFIG_CMA_DEBUG=y
CONFIG_CMA_DEBUGFS=y
CONFIG_CMA_SYSFS=y
CONFIG_CMA_AREAS=7
# CONFIG_DMA_CMA is not set
我尝试在引导参数中添加“cma=768MB”或将 CONFIG_CMA_AREAS 更改为 1,但结果是一样的。 我错过了什么??
【问题讨论】:
标签: linux memory-management linux-device-driver