在centos8.0.1905 (内核4.18)中,我将内核配置修改为: CONFIG_CMA=y,在内核引导参数中添加了: CONFIG_DMA_CMA=y : cma=64M@512M
在我的设备驱动程序中,我必须为DMA分配一个64MB的物理连续缓冲区。我试着打电话:
dma_addr_t dma_handle;dma_addr_t *p = dma_alloc_coherent(pDev,BUF_SIZE,&dma_handle,GFP_KERNEL)
但是最大限度的。我得到p!=0的BUS_SIZE大小是0x400000 (4MB)。你能解释一下我做错了什么吗?
先谢谢你,兹维卡
发布于 2019-10-22 23:34:55
在使用CONFIG_CMA=y重新编译内核时,使用CONFIG_DMA_CMA=y并使用cma=512M引导此内核
在设备驱动程序中,在调用dma_alloc_coherent之前,我调用了rc=dma_set_mask_and_coherent (pPciDev,DMA_BIT_MASK(64));并检查了该rc=0。
谢谢你,兹维卡
https://stackoverflow.com/questions/58374273
复制相似问题