dma_alloc_coherent(dev, ...)
分配内存失败,驱动加载过程中 有对需要分配节点进行设置mask
失败是因为dma_alloc_coherent申请1MB内存失败
刚开始怀疑linux系统内存伙伴系统中在1MB内存上没有内存了
检查发现还是足够的
查看别人博客
ftrace+printk 跟踪dma_alloc_coherent分配失败_dachunfree的博客-CSDN博客
初步怀疑和DMA内存虚拟地址有关,然后查看启动DMA相关日志
失败的日志
差别在iommu使能了的,出现dma_alloc_coherent失败
后续准备禁止iommu
通过对比 /proc/cmdline
发现linux系统启动grub脚本是打开的iommu的,正常能分配内存的主机是关闭的
Ubuntu开机引导grub进行修改启动参数
sudo vi /etc/default/grub
关闭iommu配置参数
sudo update-grub 更新启动镜像并生效
重启系统
发现DMAR IOMMU enabled没有了
dma_alloc_coherent即可正常分配内存
Ubuntu预留内存启动系统
https://blog.csdn/weixin_36304957/article/details/116616193
更多推荐
记录一次dma_alloc_coherent失败的解决
发布评论