如何在 ARMv8 中执行脏 L1-L2 缓存行的回写



我正在寻找一种使用内核模块刷新 L1-L2 缓存的方法。 有没有办法完全刷新整个集群缓存(4 核配置(,甚至更好的是,将脏缓存行写回主内存?

你想从内核模块刷新缓存听起来很奇怪。这应该由核心内核部分完成,作为驱动程序,您不必担心这一点。

是否有任何特定原因需要在驱动程序中执行此操作?

我想你想看看Mel Gorman的"Understanding the Linux Virtual Memory Manager"[1]的3.9。我认为您正在寻找的是flush_cache_page(...

[1] https://www.kernel.org/doc/gorman/

好吧,似乎在不同的体系结构中刷新缓存的方式实际上是不同的。尽管如此,我没有找到有效的实现。但是,我所做的是找到我要刷新的特定页面的页表条目 (PTE(,并将内存属性更改为不可缓存。然后,数据直接进入DRAM。(ARMv8( 干杯

最新更新