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

时间:2018-09-11 11:30:34

标签: caching linux-kernel arm kernel-module armv8

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

3 个答案:

答案 0 :(得分:0)

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

您是否需要在驱动程序中执行任何特定的原因?

答案 1 :(得分:0)

我认为您想看看Mel Gorman撰写的“了解Linux虚拟内存管理器”的[3.9] 3.9。我认为您正在寻找的是flush_cache_page(...)

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

答案 2 :(得分:0)

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