工具与软件:
您好!
我们在保留 DSP CMA 池时遇到了一些问题、因此其他 A15进程无法访问/分配这些地址。
这是我们的.dts 配置
dsp1_cma_pool: dsp1_cma@95800000 { compatible = "shared-dma-pool"; reg = <0x0 0x95800000 0x0 0x5000000>; reusable; status = "okay"; }; dsp2_cma_pool: dsp2_cma@9a800000 { compatible = "shared-dma-pool"; reg = <0x0 0x9a800000 0x0 0x5000000>; reusable; status = "okay"; }; &dsp1 { status = "okay"; memory-region = <&dsp1_cma_pool>; mboxes = <&mailbox5 &mbox_dsp1_ipc3x>; timers = <&timer5>; }; &dsp2 { status = "okay"; memory-region = <&dsp2_cma_pool>; mboxes = <&mailbox6 &mbox_dsp2_ipc3x>; timers = <&timer6>; };
我们尝试使用无映射。 删除可重用和一些其他选项来修改 DTS 文件、所有这些都防止 DSP 绑定。
更糟糕的是,即使"MemFree"在600MB 左右徘徊,内核也可以保留这些块。 如果 DDR 上没有剩余空间并且 A15需要更多空间、这是可以接受的。
当我们将 SDK 从03.01.00.06更新为06.03.00.106时、此问题开始变得更糟
我们已经看到内核随机锁定。 我们怀疑这可能与使用 DSP CMA 池和其他 Linux 进程之间的重叠有关。 我们不确定、因为没有锁定跟踪。
如果有人能帮助我们将2GB DDR 中的160MB 真正预留给 DSP、我们将不胜感激。
CMA 相关定义:
CONFIG_CMA=y CONFIG_CMA_DEBUG=y CONFIG_CMA_DEBUGFS=y CONFIG_CMA_AREAS=7 CONFIG_DMA_CMA=y CONFIG_CMA_SIZE_MBYTES=24 CONFIG_CMA_SIZE_SEL_MBYTES=y CONFIG_CMA_ALIGNMENT=8 CONFIG_GENERIC_ARCH_TOPOLOGY=y
如果我们能提供更多信息,请告知我们
谢谢!
Daksh