【发布时间】:2016-07-10 19:53:29
【问题描述】:
我正在开发一个 Linux 内核模块,该模块与使用 DMA 访问 DDR 的硬件组件接口。 (在 arm SoC 上运行)
驱动程序本质上所做的是分配一个缓冲区(w/kmalloc),并将缓冲区的物理地址(使用 virt_to_phys)写入底层硬件
在读取缓冲区时,似乎读取了旧数据,这表明缓存有问题(直接检查DDR时,绕过Linux,读取新数据)。
我似乎无法理解缓存刷新/失效的工作原理。
最好的方法是什么?
使用内核 3.14
【问题讨论】:
标签: linux-kernel linux-device-driver cpu-cache